UNPKG

tencentcloud-sdk-nodejs-intl-en

Version:
50,327 lines 1.58 MB
/*
 * Copyright (c) 2018 THL A29 Limited, a Tencent company. All Rights Reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 */
const AbstractModel = require("../../common/abstract_model");

/**
 * Canvas information. When a video is composed, if the source material (video or image) cannot fill the output video window, the background will be drawn with the set canvas.
 * @class
 */
class Canvas extends  AbstractModel {
    constructor(){
        super();

        /**
         * Background color. Valid values:
<li>Black: black background</li>
<li>White: white background</li>
Default value: Black.
         * @type {string || null}
         */
        this.Color = null;

        /**
         * Canvas width, that is, the width of the output video, value range: 0~3840, unit: px. 
Default value: 0, which means the video width is the same as the first video clip of the first video track.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Canvas height, that is, the height (or long side) of the output video, value range: 0~3840, unit: px. 
Default value: 0, which means the video height is consistent with the first video clip of the first video track.
         * @type {number || null}
         */
        this.Height = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Color = 'Color' in params ? params.Color : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;

    }
}

/**
 * ModifySampleSnapshotTemplate response structure.
 * @class
 */
class ModifySampleSnapshotTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ForbidMediaDistribution response structure.
 * @class
 */
class ForbidMediaDistributionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of IDs of files that do not exist.
         * @type {Array.<string> || null}
         */
        this.NotExistFileIdSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NotExistFileIdSet = 'NotExistFileIdSet' in params ? params.NotExistFileIdSet : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyWatermarkTemplate request structure.
 * @class
 */
class ModifyWatermarkTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of watermarking template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Watermarking template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Origin position. Valid values:
<li>TopLeft: the origin of coordinates is in the top-left corner of the video, and the origin of the watermark is in the top-left corner of the image or text;</li>
<li>TopRight: the origin of coordinates is in the top-right corner of the video, and the origin of the watermark is in the top-right corner of the image or text;</li>
<li>BottomLeft: the origin of coordinates is in the bottom-left corner of the video, and the origin of the watermark is in the bottom-left corner of the image or text;</li>
<li>BottomRight: the origin of coordinates is in the bottom-right corner of the video, and the origin of the watermark is in the bottom-right corner of the image or text.</li>
         * @type {string || null}
         */
        this.CoordinateOrigin = null;

        /**
         * The horizontal position of the origin of the watermark relative to the origin of coordinates of the video. % and px formats are supported:
<li>If the string ends in %, the `XPos` of the watermark will be the specified percentage of the video width; for example, `10%` means that `XPos` is 10% of the video width;</li>
<li>If the string ends in px, the `XPos` of the watermark will be the specified px; for example, `100px` means that `XPos` is 100 px.</li>
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * The vertical position of the origin of the watermark relative to the origin of coordinates of the video. % and px formats are supported:
<li>If the string ends in %, the `YPos` of the watermark will be the specified percentage of the video height; for example, `10%` means that `YPos` is 10% of the video height;</li>
<li>If the string ends in px, the `YPos` of the watermark will be the specified px; for example, `100px` means that `YPos` is 100 px.</li>
         * @type {string || null}
         */
        this.YPos = null;

        /**
         * Image watermarking template. This field is valid only for image watermarking templates.
         * @type {ImageWatermarkInputForUpdate || null}
         */
        this.ImageTemplate = null;

        /**
         * Text watermarking template. This field is valid only for text watermarking templates.
         * @type {TextWatermarkTemplateInputForUpdate || null}
         */
        this.TextTemplate = null;

        /**
         * SVG watermarking template. This field is only valid for SVG watermarking templates.
         * @type {SvgWatermarkInputForUpdate || null}
         */
        this.SvgTemplate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.CoordinateOrigin = 'CoordinateOrigin' in params ? params.CoordinateOrigin : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;

        if (params.ImageTemplate) {
            let obj = new ImageWatermarkInputForUpdate();
            obj.deserialize(params.ImageTemplate)
            this.ImageTemplate = obj;
        }

        if (params.TextTemplate) {
            let obj = new TextWatermarkTemplateInputForUpdate();
            obj.deserialize(params.TextTemplate)
            this.TextTemplate = obj;
        }

        if (params.SvgTemplate) {
            let obj = new SvgWatermarkInputForUpdate();
            obj.deserialize(params.SvgTemplate)
            this.SvgTemplate = obj;
        }

    }
}

/**
 * CreateStorageRegion request structure.
 * @class
 */
class CreateStorageRegionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The region to enable storage in, which must be a storage region supported by VOD.
         * @type {string || null}
         */
        this.StorageRegion = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StorageRegion = 'StorageRegion' in params ? params.StorageRegion : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Full speech recognition segment.
 * @class
 */
class AiRecognitionTaskAsrFullTextSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence of recognized segment. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Start time offset of recognized segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of recognition segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Recognized text.
         * @type {string || null}
         */
        this.Text = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Text = 'Text' in params ? params.Text : null;

    }
}

/**
 * The information of a task to get file attributes.
 * @class
 */
class DescribeFileAttributesTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The error code. `0` indicates the task is successful. Other values indicate that the task failed.
<li>`40000`: Invalid input parameter.</li>
<li>`60000`: Source file error (e.g., video data is corrupted).</li>
<li>`70000`: Internal server error. Please try again.</li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * The error code. An empty string indicates the task is successful; other values indicate that the task failed. For details, see [Video processing error codes](https://intl.cloud.tencent.com/document/product/266/39145?lang=en&pg=#video-processing).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * The error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The task progress. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The file ID
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The output of the task to get file attributes.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {DescribeFileAttributesTaskOutput || null}
         */
        this.Output = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last seven days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.Output) {
            let obj = new DescribeFileAttributesTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * Control parameters for video quality evaluation.
 * @class
 */
class QualityEvaluationConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video quality evaluation switch, optional values:
<li>ON: enabled;</li>
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Video quality evaluation filter threshold, the result only returns the time periods lower than this value, the default value is 60.
         * @type {number || null}
         */
        this.Score = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Score = 'Score' in params ? params.Score : null;

    }
}

/**
 * The input of a moderation task.
 * @class
 */
class ReviewAudioVideoTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The ID of the media file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The moderation template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The type of moderated content. Valid values:
<li>`Media`: The original audio/video.</li>
<li>`Cover`: Thumbnails.</li>
         * @type {Array.<string> || null}
         */
        this.ReviewContents = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.ReviewContents = 'ReviewContents' in params ? params.ReviewContents : null;

    }
}

/**
 * DescribeAllClass request structure.
 * @class
 */
class DescribeAllClassRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * UserAgent blacklist/whitelist rule configuration
 * @class
 */
class UserAgentFilterRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * UA blacklist type: <li>whitelist: whitelist;</li> <li>blacklist: blacklist. </li>
         * @type {string || null}
         */
        this.FilterType = null;

        /**
         * UserAgent list.
         * @type {Array.<string> || null}
         */
        this.UserAgents = null;

        /**
         * Rule type: <li>all: valid for all files;</li> <li>file: valid for specified file suffix;</li> <li>directory: valid for specified path;</li> <li>path: specified absolute The path takes effect. </li>
         * @type {string || null}
         */
        this.RuleType = null;

        /**
         * Matching content under the corresponding type of RuleType: <li>Fill in * when all is used;</li> <li>Fill in suffix name when file is used, such as jpg, txt;</li> <li>Fill in path when directory is used, such as /xxx/ test/;</li> <li>Fill in the absolute path when path is specified, such as /xxx/test.html. </li>
         * @type {Array.<string> || null}
         */
        this.RulePaths = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FilterType = 'FilterType' in params ? params.FilterType : null;
        this.UserAgents = 'UserAgents' in params ? params.UserAgents : null;
        this.RuleType = 'RuleType' in params ? params.RuleType : null;
        this.RulePaths = 'RulePaths' in params ? params.RulePaths : null;

    }
}

/**
 * DescribeRoundPlays request structure.
 * @class
 */
class DescribeRoundPlaysRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <B>VOD [subapplication](https://intl.cloud.tencent.com/document/product/266/14574?from_cn_redirect=1) id. starting from december 25, 2023, if you want to access resources in the vod application (whether it is the default application or a newly created application), you must enter the application id in this field.</b>.
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Filter criteria: playlist identifier, array length limit: 100.
         * @type {Array.<string> || null}
         */
        this.RoundPlayIds = null;

        /**
         * Filter criteria: playlist status, optional values: <li>enabled: startup status;</li> <li>disabled: stopped status.</li>.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Filter criteria: playlist creation time.
         * @type {TimeRange || null}
         */
        this.CreateTime = null;

        /**
         * Filter criteria: playlist update time.
         * @type {TimeRange || null}
         */
        this.UpdateTime = null;

        /**
         * Scrolling identifier which is used for pulling in batches. if a single request cannot pull all the data entries, the API will return `scrolltoken`, and if the next request carries it, the next pull will start from the next entry.
         * @type {string || null}
         */
        this.ScrollToken = null;

        /**
         * Pagination offset, default value: 0. this field is obsolete. please use the `scrolltoken` parameter for batch queries.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. default value: 10. maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.RoundPlayIds = 'RoundPlayIds' in params ? params.RoundPlayIds : null;
        this.Status = 'Status' in params ? params.Status : null;

        if (params.CreateTime) {
            let obj = new TimeRange();
            obj.deserialize(params.CreateTime)
            this.CreateTime = obj;
        }

        if (params.UpdateTime) {
            let obj = new TimeRange();
            obj.deserialize(params.UpdateTime)
            this.UpdateTime = obj;
        }
        this.ScrollToken = 'ScrollToken' in params ? params.ScrollToken : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Input type of intelligent categorization task
 * @class
 */
class AiAnalysisTaskClassificationInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intelligent video categorization template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Input parameter of SVG watermarking template
 * @class
 */
class SvgWatermarkInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Watermark width, which supports six formats of px, %, W%, H%, S%, and L%:
<li>If the string ends in px, the `Width` of the watermark will be in px; for example, `100px` means that `Width` is 100 px; if `0px` is entered
 and `Height` is not `0px`, the watermark width will be proportionally scaled based on the source SVG image; if `0px` is entered for both `Width` and `Height`, the watermark width will be the width of the source SVG image;</li>
<li>If the string ends in `W%`, the `Width` of the watermark will be the specified percentage of the video width; for example, `10W%` means that `Width` is 10% of the video width;</li>
<li>If the string ends in `H%`, the `Width` of the watermark will be the specified percentage of the video height; for example, `10H%` means that `Width` is 10% of the video height;</li>
<li>If the string ends in `S%`, the `Width` of the watermark will be the specified percentage of the short side of the video; for example, `10S%` means that `Width` is 10% of the short side of the video;</li>
<li>If the string ends in `L%`, the `Width` of the watermark will be the specified percentage of the long side of the video; for example, `10L%` means that `Width` is 10% of the long side of the video;</li>
<li>If the string ends in %, the meaning is the same as `W%`.</li>
Default value: 10W%.
         * @type {string || null}
         */
        this.Width = null;

        /**
         * Watermark height, which supports six formats of px, %, W%, H%, S%, and L%:
<li>If the string ends in px, the `Height` of the watermark will be in px; for example, `100px` means that `Height` is 100 px; if `0px` is entered
 and `Width` is not `0px`, the watermark height will be proportionally scaled based on the source SVG image; if `0px` is entered for both `Width` and `Height`, the watermark height will be the height of the source SVG image;</li>
<li>If the string ends in `W%`, the `Height` of the watermark will be the specified percentage of the video width; for example, `10W%` means that `Height` is 10% of the video width;</li>
<li>If the string ends in `H%`, the `Height` of the watermark will be the specified percentage of the video height; for example, `10H%` means that `Height` is 10% of the video height;</li>
<li>If the string ends in `S%`, the `Height` of the watermark will be the specified percentage of the short side of the video; for example, `10S%` means that `Height` is 10% of the short side of the video;</li>
<li>If the string ends in `L%`, the `Height` of the watermark will be the specified percentage of the long side of the video; for example, `10L%` means that `Height` is 10% of the long side of the video;</li>
<li>If the string ends in %, the meaning is the same as `H%`.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.Height = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;

    }
}

/**
 * CreateTranscodeTemplate request structure.
 * @class
 */
class CreateTranscodeTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The container format. Valid values: `mp4`, `flv`, `hls`, `mp3`, `flac`, `ogg`, `m4a`, `wav` ( `mp3`, `flac`, `ogg`, `m4a`, and `wav` are audio file formats).
         * @type {string || null}
         */
        this.Container = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Transcoding template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Whether to remove video data. Valid values:
<li>0: retain</li>
<li>1: remove</li>
Default value: 0.
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data. Valid values:
<li>0: retain</li>
<li>1: remove</li>
Default value: 0.
         * @type {number || null}
         */
        this.RemoveAudio = null;

        /**
         * Video stream configuration parameter. This field is required when `RemoveVideo` is 0.
         * @type {VideoTemplateInfo || null}
         */
        this.VideoTemplate = null;

        /**
         * Audio stream configuration parameter. This field is required when `RemoveAudio` is 0.
         * @type {AudioTemplateInfo || null}
         */
        this.AudioTemplate = null;

        /**
         * TESHD transcoding parameter.
         * @type {TEHDConfig || null}
         */
        this.TEHDConfig = null;

        /**
         * The segment type. This parameter is valid only if `Container` is `hls`. Valid values:
<li>ts: TS segment</li>
<li>fmp4: fMP4 segment</li>
Default: ts
         * @type {string || null}
         */
        this.SegmentType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Container = 'Container' in params ? params.Container : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

        if (params.VideoTemplate) {
            let obj = new VideoTemplateInfo();
            obj.deserialize(params.VideoTemplate)
            this.VideoTemplate = obj;
        }

        if (params.AudioTemplate) {
            let obj = new AudioTemplateInfo();
            obj.deserialize(params.AudioTemplate)
            this.AudioTemplate = obj;
        }

        if (params.TEHDConfig) {
            let obj = new TEHDConfig();
            obj.deserialize(params.TEHDConfig)
            this.TEHDConfig = obj;
        }
        this.SegmentType = 'SegmentType' in params ? params.SegmentType : null;

    }
}

/**
 * Transition operation
 * @class
 */
class TransitionOpertion extends  AbstractModel {
    constructor(){
        super();

        /**
         * Transition type. Valid values:
<ul>
<li>Video image transition operation, which is used for transition with video image between two video segments:
<ul>
<li>ImageFadeInFadeOut: video image fade-in/fade-out.</li>
<li>BowTieHorizontal: horizontal bow.</li>
<li>BowTieVertical: vertical bow.</li>
<li>ButterflyWaveScrawler: waggling.</li>
<li>Cannabisleaf: maple leaf.</li>
<li> Circle: curved circling.</li>
<li>CircleCrop: circle gathering.</li>
<li>Circleopen: elliptic gathering.</li>
<li>Crosswarp: horizontal warping.</li>
<li>Cube: cube.</li>
<li>DoomScreenTransition: curtain.</li>
<li>Doorway: doorway.</li>
<li>Dreamy: wave.</li>
<li>DreamyZoom: horizontal gathering.</li>
<li>FilmBurn: evening glow.</li>
<li>GlitchMemories: joggling.</li>
<li>Heart: heart.</li>
<li>InvertedPageCurl: page turning.</li>
<li>Luma: corroding.</li>
<li>Mosaic: grid.</li>
<li>Pinwheel: pinwheel.</li>
<li>PolarFunction: elliptic diffusing.</li>
<li>PolkaDotsCurtain: curved diffusing.</li>
<li>Radial: radar scan.</li>
<li>RotateScaleFade: vertical rotating.</li>
<li>Squeeze: vertical gathering.</li>
<li>Swap: zooming in.</li>
<li>Swirl: swirling.</li>
<li>UndulatingBurnOutSwirl: water spreading.</li>
<li>Windowblinds: blinds.</li>
<li>WipeDown: collapsing down.</li>
<li>WipeLeft: collapsing to the left.</li>
<li>WipeRight: collapsing to the right.</li>
<li>WipeUp: collapsing up.</li>
<li>ZoomInCircles: ripples.</li>
</ul>
</li>
<li>Audio transition operation, which is used for transition between two audio segments:
<ul>
<li>AudioFadeInFadeOut: audio fade-in/fade-out.</li>
</ul>
</li>
</ul>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Audio segment information of audio track.
 * @class
 */
class AudioTrackItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Source of media material for audio segment, which can be:
<li>ID of VOD media files</li>
<li>Download URL of other media files</li>
Note: when a download URL of other media files is used as the material source and access control (such as hotlink protection) is enabled, the URL needs to carry access control parameters (such as hotlink protection signature).
         * @type {string || null}
         */
        this.SourceMedia = null;

        /**
         * Start time of audio segment in material file in seconds. Default value: 0, which means to start capturing from the beginning position of the material.
         * @type {number || null}
         */
        this.SourceMediaStartTime = null;

        /**
         * Audio segment duration in seconds. By default, the length of the material will be used, which means that the entire material will be captured.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * The target audio duration, in seconds.
<li>If `TargetDuration` is empty or `0`, the target duration is the same as `Duration`.</li>
<li>If `TargetDuration` is a value greater than 0, the playback speed will be changed to make the final audio duration the same as the value of `TargetDuration`.</li>
         * @type {number || null}
         */
        this.TargetDuration = null;

        /**
         * Operation on audio segment, such as volume adjustment.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AudioTransform> || null}
         */
        this.AudioOperations = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SourceMedia = 'SourceMedia' in params ? params.SourceMedia : null;
        this.SourceMediaStartTime = 'SourceMediaStartTime' in params ? params.SourceMediaStartTime : null;
        this.Duration = 'Duration' in params ? params.Duration : null;
        this.TargetDuration = 'TargetDuration' in params ? params.TargetDuration : null;

        if (params.AudioOperations) {
            this.AudioOperations = new Array();
            for (let z in params.AudioOperations) {
                let obj = new AudioTransform();
                obj.deserialize(params.AudioOperations[z]);
                this.AudioOperations.push(obj);
            }
        }

    }
}

/**
 * Information of an intelligently generated highlight
 * @class
 */
class MediaAiAnalysisHighlightItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Address of an intelligently generated highlight.
         * @type {string || null}
         */
        this.HighlightUrl = null;

        /**
         * Address of an intelligently generated highlight cover.
         * @type {string || null}
         */
        this.CovImgUrl = null;

        /**
         * Confidence of an intelligently generated highlight between 0 and 100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Duration of an intelligently generated highlight.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * List of intelligently generated highlight subsegments, which together form a highlight.
         * @type {Array.<HighlightSegmentItem> || null}
         */
        this.SegmentSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HighlightUrl = 'HighlightUrl' in params ? params.HighlightUrl : null;
        this.CovImgUrl = 'CovImgUrl' in params ? params.CovImgUrl : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Duration = 'Duration' in params ? params.Duration : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new HighlightSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }

    }
}

/**
 * DescribeAnimatedGraphicsTemplates request structure.
 * @class
 */
class DescribeAnimatedGraphicsTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique ID filter of animated image generating templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Paged offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Template type filter. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * LiveRealTimeClip response structure.
 * @class
 */
class LiveRealTimeClipResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Playback URL of clipped video.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Unique media file ID of video generated by persistent clipping.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Task flow ID of video generated by persistent clipping.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.VodTaskId = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * Cliped media segment info.
         * @type {Array.<LiveRealTimeClipMediaSegmentInfo> || null}
         */
        this.SegmentSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.VodTaskId = 'VodTaskId' in params ? params.VodTaskId : null;

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new LiveRealTimeClipMediaSegmentInfo();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result for ASR-based recognition of banned content
 * @class
 */
class AiReviewTaskProhibitedAsrResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for ASR-based recognition of banned content
         * @type {AiReviewProhibitedAsrTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for ASR-based recognition of banned content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewProhibitedAsrTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an ASR-based moderation task (banned content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewProhibitedAsrTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewProhibitedAsrTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * Details of a transcoding to adaptive bitrate streaming template
 * @class
 */
class AdaptiveDynamicStreamingTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a transcoding to adaptive bitrate streaming template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Template type. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Name of a transcoding to adaptive bitrate streaming template.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description of a transcoding to adaptive bitrate streaming template.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Adaptive bitstream format. Valid value:
<li>HLS.</li>
         * @type {string || null}
         */
        this.Format = null;

        /**
         * The DRM type. Valid values:
<li>SimpleAES</li>
<li>Widevine</li>
<li>FairPlay</li>
If this parameter is an empty string, it indicates that the video is not protected by DRM.
         * @type {string || null}
         */
        this.DrmType = null;

        /**
         * The provider of the DRM key. Valid values:
<li>SDMC</li>
<li>VOD</li>
The default is `VOD`.
         * @type {string || null}
         */
        this.DrmKeyProvider = null;

        /**
         * Parameter information of input stream for adaptive bitrate streaming. Up to 10 streams can be input.
         * @type {Array.<AdaptiveStreamTemplate> || null}
         */
        this.StreamInfos = null;

        /**
         * Whether to prohibit transcoding from low bitrate to high bitrate. Valid values:
<li>0: no,</li>
<li>1: yes.</li>
         * @type {number || null}
         */
        this.DisableHigherVideoBitrate = null;

        /**
         * Whether to prohibit transcoding from low resolution to high resolution. Valid values:
<li>0: no,</li>
<li>1: yes.</li>
         * @type {number || null}
         */
        this.DisableHigherVideoResolution = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * The segment type. This parameter is valid only if `Format` is `HLS`.
         * @type {string || null}
         */
        this.SegmentType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.DrmType = 'DrmType' in params ? params.DrmType : null;
        this.DrmKeyProvider = 'DrmKeyProvider' in params ? params.DrmKeyProvider : null;

        if (params.StreamInfos) {
            this.StreamInfos = new Array();
            for (let z in params.StreamInfos) {
                let obj = new AdaptiveStreamTemplate();
                obj.deserialize(params.StreamInfos[z]);
                this.StreamInfos.push(obj);
            }
        }
        this.DisableHigherVideoBitrate = 'DisableHigherVideoBitrate' in params ? params.DisableHigherVideoBitrate : null;
        this.DisableHigherVideoResolution = 'DisableHigherVideoResolution' in params ? params.DisableHigherVideoResolution : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.SegmentType = 'SegmentType' in params ? params.SegmentType : null;

    }
}

/**
 * HTTP header setting rules. Up to 100 entries can be set.
 * @class
 */
class HttpHeaderPathRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * http header setting method: <li>set: setting. Change the value of the specified header parameter to the set value; if the set header does not exist, the header will be added; if there are multiple duplicate header parameters, all will be changed and merged into one header. ;</li> <li>del: delete. Delete the specified header parameter;</li> <li>add: add. Add the specified header parameters. By default, repeated addition is allowed, that is, the same header is added repeatedly (note: repeated addition may affect the browser response, please use the set operation first). </li>
         * @type {string || null}
         */
        this.HeaderMode = null;

        /**
         * HTTP header name. Up to 100 characters can be set.
         * @type {string || null}
         */
        this.HeaderName = null;

        /**
         * http header value, up to 1000 characters can be set; optional when Mode is del; required when Mode is add/set.
         * @type {string || null}
         */
        this.HeaderValue = null;

        /**
         * Rule type: <li>all: valid for all files;</li> <li>file: valid for specified file suffix;</li> <li>directory: valid for specified path;</li> <li>path: specified absolute The path takes effect. </li>
         * @type {string || null}
         */
        this.RuleType = null;

        /**
         * Matching content under the corresponding type of RuleType: <li>Fill in * when all is used;</li> <li>Fill in suffix name when file is used, such as jpg, txt;</li> <li>Fill in path when directory is used, such as /xxx/ test/;</li> <li>Fill in the absolute path when path is specified, such as /xxx/test.html. </li>
         * @type {Array.<string> || null}
         */
        this.RulePaths = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HeaderMode = 'HeaderMode' in params ? params.HeaderMode : null;
        this.HeaderName = 'HeaderName' in params ? params.HeaderName : null;
        this.HeaderValue = 'HeaderValue' in params ? params.HeaderValue : null;
        this.RuleType = 'RuleType' in params ? params.RuleType : null;
        this.RulePaths = 'RulePaths' in params ? params.RulePaths : null;

    }
}

/**
 * DeleteJustInTimeTranscodeTemplate request structure.
 * @class
 */
class DeleteJustInTimeTranscodeTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DeleteAnimatedGraphicsTemplate response structure.
 * @class
 */
class DeleteAnimatedGraphicsTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result for OCR-based recognition of banned content
 * @class
 */
class AiReviewTaskProhibitedOcrResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for OCR-based recognition of banned content
         * @type {AiReviewProhibitedOcrTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for OCR-based recognition of banned content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewProhibitedOcrTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an OCR-based moderation task (banned content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewProhibitedOcrTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewProhibitedOcrTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * Full speech recognition result.
 * @class
 */
class AiRecognitionTaskAsrFullTextResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of full-text speech recognition segments
<font color=red>Note</font>: this list displays up to the first 100 results. You can get all the results from the file whose URL is `SegmentSetFileUrl`.
         * @type {Array.<AiRecognitionTaskAsrFullTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file of the list for full-text speech recognition segments. The file format is JSON, and the data structure is the same as `SegmentSet`. The file will be deleted upon the expiration time `SegmentSetFileUrlExpireTime`, instead of being stored permanently.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * The expiration time of the URLs of full-text speech recognition segments in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

        /**
         * The subtitle files generated, whose format is determined by the `SubtitleFormats` parameter of [AsrFullTextConfigureInfo](https://intl.cloud.tencent.com/document/api/266/31773?from_cn_redirect=1#AsrFullTextConfigureInfo).
         * @type {Array.<AiRecognitionTaskAsrFullTextResultOutputSubtitleItem> || null}
         */
        this.SubtitleSet = null;

        /**
         * The URLs of the subtitle files generated, whose format is determined by the `SubtitleFormats` parameter of [AsrFullTextConfigureInfo](https://intl.cloud.tencent.com/document/api/266/31773?from_cn_redirect=1#AsrFullTextConfigureInfo).
         * @type {string || null}
         */
        this.SubtitleUrl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new AiRecognitionTaskAsrFullTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

        if (params.SubtitleSet) {
            this.SubtitleSet = new Array();
            for (let z in params.SubtitleSet) {
                let obj = new AiRecognitionTaskAsrFullTextResultOutputSubtitleItem();
                obj.deserialize(params.SubtitleSet[z]);
                this.SubtitleSet.push(obj);
            }
        }
        this.SubtitleUrl = 'SubtitleUrl' in params ? params.SubtitleUrl : null;

    }
}

/**
 * OCR-detected prohibited information in text
 * @class
 */
class AiReviewProhibitedOcrTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Score of OCR-detected prohibited information in text between 0 and 100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Suggestion for OCR-detected prohibited information in text. Valid values:
<li>pass.</li>
<li>review.</li>
<li>block.</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of video segments that contain OCR-detected prohibited information
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewOcrTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain OCR-detected prohibited information. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL for video segments that contain OCR-detected prohibited information, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewOcrTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 *  
 * @class
 */
class MediaMiniProgramReviewElem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Audit type. 
<li>Porn: porn image,</li>
<li>Porn.Ocr: porn text,</li>
<li>Porn.Asr: porn speech,</li>
<li>Terrorism: terrorism image,</li>
<li>Political: politically sensitive image,</li>
<li>Political.Ocr: politically sensitive text</li>
<li>Political.Asr: politically sensitive speech</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Audit suggestion.
<li>pass: normal,</li>
<li>block: violating,</li>
<li>review: suspected of violation.</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * Confidence of audit result between 0 and 100.
         * @type {number || null}
         */
        this.Confidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;

    }
}

/**
 * ManageTask response structure.
 * @class
 */
class ManageTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateImageProcessingTemplate request structure.
 * @class
 */
class CreateImageProcessingTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * An array of image processing operations. The operations will be performed in the specified order.
<li>Length limit: 10.</li>
         * @type {Array.<ImageOperation> || null}
         */
        this.Operations = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The name of the image processing template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Operations) {
            this.Operations = new Array();
            for (let z in params.Operations) {
                let obj = new ImageOperation();
                obj.deserialize(params.Operations[z]);
                this.Operations.push(obj);
            }
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * ModifyDefaultStorageRegion request structure.
 * @class
 */
class ModifyDefaultStorageRegionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The default storage region, which must be a region you have storage access to. You can use the `DescribeStorageRegions` API to query such regions.
         * @type {string || null}
         */
        this.StorageRegion = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StorageRegion = 'StorageRegion' in params ? params.StorageRegion : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * CloneCDNDomain request structure.
 * @class
 */
class CloneCDNDomainRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * The cloned domain.
         * @type {string || null}
         */
        this.ReferenceDomain = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.ReferenceDomain = 'ReferenceDomain' in params ? params.ReferenceDomain : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Media quality inspection task generates.
 * @class
 */
class QualityInspectTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether the media files have no audio track, range: <li>0: No, that is, there is an audio track;</li> <li>1: Yes, that is, there is no audio track.</li>
         * @type {number || null}
         */
        this.NoAudio = null;

        /**
         * Whether the media files have no video track, range: <li>0: No, that is, there is a video track;</li> <li>1: Yes, that is, there is no video track.</li>
         * @type {number || null}
         */
        this.NoVideo = null;

        /**
         * Quality score, value range: [0, 100].
         * @type {number || null}
         */
        this.QualityEvaluationScore = null;

        /**
         * Abnormal items list detected of media quality inspection task
         * @type {Array.<QualityInspectResultItem> || null}
         */
        this.QualityInspectResultSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.NoAudio = 'NoAudio' in params ? params.NoAudio : null;
        this.NoVideo = 'NoVideo' in params ? params.NoVideo : null;
        this.QualityEvaluationScore = 'QualityEvaluationScore' in params ? params.QualityEvaluationScore : null;

        if (params.QualityInspectResultSet) {
            this.QualityInspectResultSet = new Array();
            for (let z in params.QualityInspectResultSet) {
                let obj = new QualityInspectResultItem();
                obj.deserialize(params.QualityInspectResultSet[z]);
                this.QualityInspectResultSet.push(obj);
            }
        }

    }
}

/**
 * Input for media quality enhance task.
 * @class
 */
class QualityEnhanceTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Media quality enhance template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * ResetProcedureTemplate response structure.
 * @class
 */
class ResetProcedureTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Origin Server Configuration
 * @class
 */
class Origin extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of main origin sites. When modifying the main origin site, the corresponding OriginType needs to be filled in at the same time.
         * @type {Array.<string> || null}
         */
        this.Origins = null;

        /**
         * Main origin site type, input parameters support the following types: <li>domain: domain name type;</li> <li>ip: IP list as the origin site;</li> <li>third_party: third-party storage origin site . </li>
         * @type {string || null}
         */
        this.OriginType = null;

        /**
         * When returning to the main origin server, the Host header will default to the accelerated domain name if it is not filled in. When the origin server type is object storage, the ServerName field is required.
         * @type {string || null}
         */
        this.ServerName = null;

        /**
         * Back-to-origin protocol configuration: <li>http: Forces HTTP back-to-origin;</li> <li>follow: The protocol follows back-to-origin;</li> <li>https: Forces https back-to-origin, and https back-to-origin only supports origin. Station port 443. </li>
         * @type {string || null}
         */
        this.OriginPullProtocol = null;

        /**
         * Backup source site list. When modifying the backup origin site, the corresponding OriginType needs to be filled in at the same time.
         * @type {Array.<string> || null}
         */
        this.BackupOrigins = null;

        /**
         * Backup origin site type, input parameters support the following types: <li>domain: domain name type;</li> <li>ip: IP list as the origin site;</li> <li>third_party: third-party storage origin site . </li>
         * @type {string || null}
         */
        this.BackupOriginType = null;

        /**
         * Host header used when accessing the backup origin server. If it is left empty, the ServerName of primary origin server will be used by default. Note: This field may return null, indicating that no valid value can be obtained.
         * @type {string || null}
         */
        this.BackupServerName = null;

        /**
         * Object storage back to the origin vendor. Required when the origin site type is a third-party storage origin site (third_party). Optional values u200bu200binclude the following: <li>aws_s3: AWS S3;</li> <li>ali_oss: Alibaba Cloud OSS; </li> <li>hw_obs: Huawei OBS;</li> <li>others: object storage from other manufacturers, only supports object storage compatible with AWS signature algorithm, such as Tencent Cloud COS. </li>
         * @type {string || null}
         */
        this.OriginCompany = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Origins = 'Origins' in params ? params.Origins : null;
        this.OriginType = 'OriginType' in params ? params.OriginType : null;
        this.ServerName = 'ServerName' in params ? params.ServerName : null;
        this.OriginPullProtocol = 'OriginPullProtocol' in params ? params.OriginPullProtocol : null;
        this.BackupOrigins = 'BackupOrigins' in params ? params.BackupOrigins : null;
        this.BackupOriginType = 'BackupOriginType' in params ? params.BackupOriginType : null;
        this.BackupServerName = 'BackupServerName' in params ? params.BackupServerName : null;
        this.OriginCompany = 'OriginCompany' in params ? params.OriginCompany : null;

    }
}

/**
 * Information of time point screenshot in VOD file
 * @class
 */
class MediaSnapshotByTimeOffsetItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Specification of a time point screenshot. For more information, please see [Parameter Template for Time Point Screencapturing](https://intl.cloud.tencent.com/document/product/266/33480?from_cn_redirect=1#.E6.97.B6.E9.97.B4.E7.82.B9.E6.88.AA.E5.9B.BE.E6.A8.A1.E6.9D.BF).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Information set of screenshots of the same specification. Each element represents a screenshot.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaSnapshotByTimePicInfoItem> || null}
         */
        this.PicInfoSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

        if (params.PicInfoSet) {
            this.PicInfoSet = new Array();
            for (let z in params.PicInfoSet) {
                let obj = new MediaSnapshotByTimePicInfoItem();
                obj.deserialize(params.PicInfoSet[z]);
                this.PicInfoSet.push(obj);
            }
        }

    }
}

/**
 * The parameters of an audio/video remastering output file.
 * @class
 */
class RebuildMediaTargetInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The filename. This parameter can contain up to 64 characters, and will be generated by the system if it is left empty.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * The description (up to 128 characters). If you do not specify this, the description will be empty.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * The ID of the file’s category. You can use the [CreateClass](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API to create a category and get the category ID.
<li>The default value is `0`, which means the “Other” category.</li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The expiration time of the output file, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=). The file will be deleted after the specified expiration time. By default, the file will never expire.
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * The output container format. Valid values: `mp4` (default), `flv`, `hls`.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * The output video parameters.
         * @type {RebuildMediaTargetVideoStream || null}
         */
        this.VideoStream = null;

        /**
         * The output audio parameters.
         * @type {RebuildMediaTargetAudioStream || null}
         */
        this.AudioStream = null;

        /**
         * Whether to remove video data. Valid values:
<li>`0`: No</li>
<li>`1`: Yes</li>

Default value: `0`.
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data. Valid values:
<li>`0`: No</li>
<li>`1`: Yes</li>

Default value: `0`.
         * @type {number || null}
         */
        this.RemoveAudio = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.Container = 'Container' in params ? params.Container : null;

        if (params.VideoStream) {
            let obj = new RebuildMediaTargetVideoStream();
            obj.deserialize(params.VideoStream)
            this.VideoStream = obj;
        }

        if (params.AudioStream) {
            let obj = new RebuildMediaTargetAudioStream();
            obj.deserialize(params.AudioStream)
            this.AudioStream = obj;
        }
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

    }
}

/**
 * ModifySampleSnapshotTemplate request structure.
 * @class
 */
class ModifySampleSnapshotTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a sampled screencapturing template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of a sampled screencapturing template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Maximum value of the width (or long side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Sampled screencapturing type. Valid values:
<li>Percent: by percent.</li>
<li>Time: by time interval.</li>
         * @type {string || null}
         */
        this.SampleType = null;

        /**
         * Sampling interval.
<li>If `SampleType` is `Percent`, sampling will be performed at an interval of the specified percentage.</li>
<li>If `SampleType` is `Time`, sampling will be performed at the specified time interval in seconds.</li>
         * @type {number || null}
         */
        this.SampleInterval = null;

        /**
         * Image format. Valid values: jpg, png.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Fill type. "Fill" refers to the way of processing a screenshot when its aspect ratio is different from that of the source video. The following fill types are supported:
<li> stretch: stretch. The screenshot will be stretched frame by frame to match the aspect ratio of the source video, which may make the screenshot "shorter" or "longer";</li>
<li>black: fill with black. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with black color blocks.</li>
<li>white: fill with white. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with white color blocks.</li>
<li>gauss: fill with Gaussian blur. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with Gaussian blur.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.SampleType = 'SampleType' in params ? params.SampleType : null;
        this.SampleInterval = 'SampleInterval' in params ? params.SampleInterval : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.FillType = 'FillType' in params ? params.FillType : null;

    }
}

/**
 * Input parameters for OCR-based recognition of politically sensitive content
 * @class
 */
class AiReviewPoliticalOcrTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the template for recognition of politically sensitive content
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * ModifyJustInTimeTranscodeTemplate request structure.
 * @class
 */
class ModifyJustInTimeTranscodeTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Video parameter configuration.
         * @type {VideoConfigureInfoForUpdate || null}
         */
        this.VideoConfigure = null;

        /**
         * Watermark parameter configuration.
         * @type {WatermarkConfigureInfoForUpdate || null}
         */
        this.WatermarkConfigure = null;

        /**
         * Template description, the length is limited to 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

        if (params.VideoConfigure) {
            let obj = new VideoConfigureInfoForUpdate();
            obj.deserialize(params.VideoConfigure)
            this.VideoConfigure = obj;
        }

        if (params.WatermarkConfigure) {
            let obj = new WatermarkConfigureInfoForUpdate();
            obj.deserialize(params.WatermarkConfigure)
            this.WatermarkConfigure = obj;
        }
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * Information, name, and customer ID of the source video to be processed
 * @class
 */
class MediaInputInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video URL.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Video name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Custom video ID.
         * @type {string || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * The details of an image sprite task. This parameter is only valid for tasks initiated by the v2017 image sprite API.
 * @class
 */
class CreateImageSpriteTask2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Image sprite generating task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Error code
<li>0: success;</li>
<li>Other values: failure.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * ID of generated image sprite file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Image sprite specification. For more information, please see [Image Sprite Generating Template](https://intl.cloud.tencent.com/document/product/266/33480?from_cn_redirect=1#.E9.9B.AA.E7.A2.A7.E5.9B.BE.E6.A8.A1.E6.9D.BF).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Total number of subimages in image sprite.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Address of output image sprite.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.ImageSpriteUrlSet = null;

        /**
         * Address of WebVtt file for the position-time relationship among subimages in an image sprite.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WebVttUrl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.ImageSpriteUrlSet = 'ImageSpriteUrlSet' in params ? params.ImageSpriteUrlSet : null;
        this.WebVttUrl = 'WebVttUrl' in params ? params.WebVttUrl : null;

    }
}

/**
 * Information of file generated by video clipping (v2017)
 * @class
 */
class ClipFileInfo2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Error code
<li>0: success;</li>
<li>Other values: failure.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error description.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Output target file ID.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Output target file address.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * Output target file type.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.FileType = 'FileType' in params ? params.FileType : null;

    }
}

/**
 * Temporary credential
 * @class
 */
class TempCertificate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Temporary security certificate ID.
         * @type {string || null}
         */
        this.SecretId = null;

        /**
         * Temporary security certificate `Key`.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * Token value.
         * @type {string || null}
         */
        this.Token = null;

        /**
         * Certificate expiration time. A Unix timestamp will be returned which is accurate down to the second.
         * @type {number || null}
         */
        this.ExpiredTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SecretId = 'SecretId' in params ? params.SecretId : null;
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.Token = 'Token' in params ? params.Token : null;
        this.ExpiredTime = 'ExpiredTime' in params ? params.ExpiredTime : null;

    }
}

/**
 * Result for OCR-based recognition of politically sensitive content
 * @class
 */
class AiReviewTaskPoliticalOcrResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for OCR-based recognition of politically sensitive content
         * @type {AiReviewPoliticalOcrTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for OCR-based recognition of politically sensitive content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewPoliticalOcrTaskOutput || null}
         */
        this.Output = null;

        /**
         * Audio and video review OCR text involves the task progress of inappropriate information, the value range is [0-100].
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewPoliticalOcrTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewPoliticalOcrTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * Quality Enhance Task
 * @class
 */
class QualityEnhanceTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task Id.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task flow status, values:
<li>PROCESSING: Processing;</li>
<li>FINISH: Completed. </li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code, 0 means success, other values u200bu200bmean failure:
<li>40000: The input parameters are illegal, please check the input parameters;</li>
<li>60000: Source file error (such as video data damage), Please confirm whether the source file is normal;</li>
<li>70000: Internal service error, it is recommended to try again. </li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Error code. An empty string indicates success. Other values u200bu200bindicate failure. For values, please refer to [Video Processing Error Code](https://www.tencentcloud.com/document/product/266/39145) list.
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Media quality enhance task progress, value range [0-100].
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * Input for media quality enhance task.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {QualityEnhanceTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of the media quality enhance task.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {QualityEnhanceTaskOutput || null}
         */
        this.Output = null;

        /**
         * Media quality enhance outputs meta-information of the video.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * Identification code used for deduplication. If there is a request for the same identification code within seven days, this request will return an error. The maximum length is 50 characters, without or with an empty string to indicate no deduplication.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Source context, used to transparently transmit user request information. The task flow status change callback will return the value of this field, which can be up to 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

        if (params.Input) {
            let obj = new QualityEnhanceTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new QualityEnhanceTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * AI-based sample management - keyword output information.
 * @class
 */
class AiSampleWord extends  AbstractModel {
    constructor(){
        super();

        /**
         * Keyword.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * Keyword tag.
         * @type {Array.<string> || null}
         */
        this.TagSet = null;

        /**
         * Keyword use case.
         * @type {Array.<string> || null}
         */
        this.UsageSet = null;

        /**
         * Creation time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.TagSet = 'TagSet' in params ? params.TagSet : null;
        this.UsageSet = 'UsageSet' in params ? params.UsageSet : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * Path cache cache configuration (select one of the three cache modes)
 * @class
 */
class RuleCacheConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Cache configuration.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {CacheConfigCache || null}
         */
        this.Cache = null;

        /**
         * Configuration is not cached.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {CacheConfigNoCache || null}
         */
        this.NoCache = null;

        /**
         * Follow the origin configuration.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {CacheConfigFollowOrigin || null}
         */
        this.FollowOrigin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Cache) {
            let obj = new CacheConfigCache();
            obj.deserialize(params.Cache)
            this.Cache = obj;
        }

        if (params.NoCache) {
            let obj = new CacheConfigNoCache();
            obj.deserialize(params.NoCache)
            this.NoCache = obj;
        }

        if (params.FollowOrigin) {
            let obj = new CacheConfigFollowOrigin();
            obj.deserialize(params.FollowOrigin)
            this.FollowOrigin = obj;
        }

    }
}

/**
 * CreateImageSpriteTemplate request structure.
 * @class
 */
class CreateImageSpriteTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Sampling type. Valid values:
<li>Percent: by percent.</li>
<li>Time: by time interval.</li>
         * @type {string || null}
         */
        this.SampleType = null;

        /**
         * Sampling interval.
<li>If `SampleType` is `Percent`, sampling will be performed at an interval of the specified percentage.</li>
<li>If `SampleType` is `Time`, sampling will be performed at the specified time interval in seconds.</li>
         * @type {number || null}
         */
        this.SampleInterval = null;

        /**
         * The number of rows of small images in the sprite image. 
Note: The number of rows of the small image will affect the height of the final large image. The maximum height of the large image is 15,000 pixels. The height of the large image is the product of the number of rows of the small image and the height of the small image.
         * @type {number || null}
         */
        this.RowCount = null;

        /**
         * The number of columns of small images in the sprite image. 
Note: The number of columns of the small image will affect the width of the final large image. The maximum width of the large image is 15,000 pixels. The width of the large image is the product of the number of columns of the small image and the width of the small image.
         * @type {number || null}
         */
        this.ColumnCount = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of an image sprite generating template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Fill type. "Fill" refers to the way of processing a screenshot when its aspect ratio is different from that of the source video. The following fill types are supported:
<li> stretch: stretch. The screenshot will be stretched frame by frame to match the aspect ratio of the source video, which may make the screenshot "shorter" or "longer";</li>
<li>black: fill with black. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with black color blocks.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

        /**
         * The maximum value of the width (or long side) of the small image in the sprite image, value range: 0 and [128, 4096], unit: px. 
<li>When Width and Height are both 0, the resolution is from the same source;</li>
<li>When Width is 0 and Height is non-0, Width is scaled proportionally;</li>
< li>When Width is non-0 and Height is 0, the Height is scaled proportionally; </li>
<li>When both Width and Height are non-0, the resolution is specified by the user. </li>
Default value: 0. 
Note: The width of the small image will affect the width of the final large image. The maximum width of the large image is 15,000 pixels. The width of the large image is the product of the number of columns of the small image and the width of the small image.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The maximum value of the height (or short side) of the small image in the sprite image, value range: 0 and [128, 4096], unit: px. 
<li>When Width and Height are both 0, the resolution is from the same source;</li>
<li>When Width is 0 and Height is non-0, Width is scaled proportionally;</li>
< li>When Width is non-0 and Height is 0, the Height is scaled proportionally; </li>
<li>When both Width and Height are non-0, the resolution is specified by the user. </li>
Default value: 0. 
Note: The height of the small image will affect the height of the final large image. The maximum height of the large image is 15,000 pixels. The height of the large image is the product of the number of rows of the small image and the height of the small image.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * The image format. Valid values:
<li> jpg</li>
<li> png</li>
<li> webp</li>
Default: jpg
         * @type {string || null}
         */
        this.Format = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SampleType = 'SampleType' in params ? params.SampleType : null;
        this.SampleInterval = 'SampleInterval' in params ? params.SampleInterval : null;
        this.RowCount = 'RowCount' in params ? params.RowCount : null;
        this.ColumnCount = 'ColumnCount' in params ? params.ColumnCount : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.FillType = 'FillType' in params ? params.FillType : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;

    }
}

/**
 * Time point screenshot information
 * @class
 */
class MediaSnapshotByTimePicInfoItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Time offset corresponding to the screenshot in the video in <font color=red>milliseconds</font>.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TimeOffset = null;

        /**
         * Screenshot URL.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * List of watermarking template IDs if the screenshots are watermarked.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<number> || null}
         */
        this.WaterMarkDefinition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TimeOffset = 'TimeOffset' in params ? params.TimeOffset : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.WaterMarkDefinition = 'WaterMarkDefinition' in params ? params.WaterMarkDefinition : null;

    }
}

/**
 * Parameters for OCR-based recognition of pornographic content
 * @class
 */
class PornOcrReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable OCR-based recognition of pornographic content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Threshold score for violation. If this score is reached or exceeded during intelligent audit, it will be deemed that a suspected violation has occurred. Value range: 0–100.
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Threshold score for human audit. If this score is reached or exceeded during intelligent audit, human audit will be considered necessary. Value range: 0–100.
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * RefreshUrlCache request structure.
 * @class
 */
class RefreshUrlCacheRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The URLs to purge. You can specify up to 20 URLs per request.
         * @type {Array.<string> || null}
         */
        this.Urls = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Urls = 'Urls' in params ? params.Urls : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Intelligent recognition template details
 * @class
 */
class ContentReviewTemplateItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an intelligent recognition template
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Name of an intelligent recognition template. Max 64 characters
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description of an intelligent recognition template. Max 256 characters
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Parameters for recognition of pornographic content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {PornConfigureInfo || null}
         */
        this.PornConfigure = null;

        /**
         * Parameters for recognition of terrorism content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {TerrorismConfigureInfo || null}
         */
        this.TerrorismConfigure = null;

        /**
         * Parameters for recognition of politically sensitive content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {PoliticalConfigureInfo || null}
         */
        this.PoliticalConfigure = null;

        /**
         * Control parameter of prohibited information detection. Prohibited information includes:
<li>Abusive;</li>
<li>Drug-related.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {ProhibitedConfigureInfo || null}
         */
        this.ProhibitedConfigure = null;

        /**
         * Custom recognition parameters
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {UserDefineConfigureInfo || null}
         */
        this.UserDefineConfigure = null;

        /**
         * Whether to subject the recognition result to human review
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.ReviewWallSwitch = null;

        /**
         * Frame capturing interval in seconds. If this parameter is left empty, 1 second will be used by default. Minimum value: 0.5 seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.PornConfigure) {
            let obj = new PornConfigureInfo();
            obj.deserialize(params.PornConfigure)
            this.PornConfigure = obj;
        }

        if (params.TerrorismConfigure) {
            let obj = new TerrorismConfigureInfo();
            obj.deserialize(params.TerrorismConfigure)
            this.TerrorismConfigure = obj;
        }

        if (params.PoliticalConfigure) {
            let obj = new PoliticalConfigureInfo();
            obj.deserialize(params.PoliticalConfigure)
            this.PoliticalConfigure = obj;
        }

        if (params.ProhibitedConfigure) {
            let obj = new ProhibitedConfigureInfo();
            obj.deserialize(params.ProhibitedConfigure)
            this.ProhibitedConfigure = obj;
        }

        if (params.UserDefineConfigure) {
            let obj = new UserDefineConfigureInfo();
            obj.deserialize(params.UserDefineConfigure)
            this.UserDefineConfigure = obj;
        }
        this.ReviewWallSwitch = 'ReviewWallSwitch' in params ? params.ReviewWallSwitch : null;
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * DeleteAIRecognitionTemplate response structure.
 * @class
 */
class DeleteAIRecognitionTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteContentReviewTemplate request structure.
 * @class
 */
class DeleteContentReviewTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an intelligent content recognition template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Control parameters for detecting video noise.
 * @class
 */
class NoiseConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video noise inspection switch, optional values:
<li>ON: enabled;</li>
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Input parameters for intelligent recognition of politically sensitive content
 * @class
 */
class AiReviewPoliticalTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the template for recognition of politically sensitive content
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * VerifyDomainRecord response structure.
 * @class
 */
class VerifyDomainRecordResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether the verification is successful.
         * @type {boolean || null}
         */
        this.Result = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Result = 'Result' in params ? params.Result : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Audio operation
 * @class
 */
class AudioTransform extends  AbstractModel {
    constructor(){
        super();

        /**
         * Audio operation type. Valid values:
<li>Volume: volume adjustment.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Volume adjustment parameter, which is valid if `Type` is `Volume`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AudioVolumeParam || null}
         */
        this.VolumeParam = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.VolumeParam) {
            let obj = new AudioVolumeParam();
            obj.deserialize(params.VolumeParam)
            this.VolumeParam = obj;
        }

    }
}

/**
 * The details of a video transcoding task. This parameter is only valid for tasks initiated by the v2017 video transcoding API.
 * @class
 */
class TranscodeTask2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Transcoding task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Error code
<li>0: success;</li>
<li>Other values: failure.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * ID of transcoded file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Name of transcoded file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Video duration in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * Cover address.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CoverUrl = null;

        /**
         * Playback information generated after video transcoding.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TranscodePlayInfo2017> || null}
         */
        this.PlayInfoSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.Duration = 'Duration' in params ? params.Duration : null;
        this.CoverUrl = 'CoverUrl' in params ? params.CoverUrl : null;

        if (params.PlayInfoSet) {
            this.PlayInfoSet = new Array();
            for (let z in params.PlayInfoSet) {
                let obj = new TranscodePlayInfo2017();
                obj.deserialize(params.PlayInfoSet[z]);
                this.PlayInfoSet.push(obj);
            }
        }

    }
}

/**
 * DescribeCurrentPlaylist response structure.
 * @class
 */
class DescribeCurrentPlaylistResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Current playlist information.
         * @type {Array.<RoundPlayFilePlayInfo> || null}
         */
        this.CurrentPlaylist = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.CurrentPlaylist) {
            this.CurrentPlaylist = new Array();
            for (let z in params.CurrentPlaylist) {
                let obj = new RoundPlayFilePlayInfo();
                obj.deserialize(params.CurrentPlaylist[z]);
                this.CurrentPlaylist.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifySuperPlayerConfig request structure.
 * @class
 */
class ModifySuperPlayerConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Player configuration name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Type of audio/video played. Valid values:
<li>AdaptiveDynamicStreaming</li>
<li>Transcode</li>
<li>Original</li>
         * @type {string || null}
         */
        this.AudioVideoType = null;

        /**
         * Switch of DRM-protected adaptive bitstream playback:
<li>ON: enabled, indicating to play back only output adaptive bitstreams protected by DRM;</li>
<li>OFF: disabled, indicating to play back unencrypted output adaptive bitstreams.</li>
         * @type {string || null}
         */
        this.DrmSwitch = null;

        /**
         * ID of the unencrypted adaptive bitrate streaming template that allows output.
         * @type {number || null}
         */
        this.AdaptiveDynamicStreamingDefinition = null;

        /**
         * Content of the DRM-protected adaptive bitrate streaming template that allows output.
         * @type {DrmStreamingsInfoForUpdate || null}
         */
        this.DrmStreamingsInfo = null;

        /**
         * ID of the transcoding template allowed for playback
         * @type {number || null}
         */
        this.TranscodeDefinition = null;

        /**
         * ID of the image sprite generating template that allows output.
         * @type {number || null}
         */
        this.ImageSpriteDefinition = null;

        /**
         * The player displays names for substreams of different resolutions.
         * @type {Array.<ResolutionNameInfo> || null}
         */
        this.ResolutionNames = null;

        /**
         * Domain name used for playback. If its value is `Default`, the domain name configured in [Default Distribution Configuration](https://intl.cloud.tencent.com/document/product/266/33373?from_cn_redirect=1) will be used.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Scheme used for playback. Valid values:
<li>Default: the scheme configured in [Default Distribution Configuration](https://intl.cloud.tencent.com/document/product/266/33373?from_cn_redirect=1) will be used;</li>
<li>HTTP;</li>
<li>HTTPS.</li>
         * @type {string || null}
         */
        this.Scheme = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.AudioVideoType = 'AudioVideoType' in params ? params.AudioVideoType : null;
        this.DrmSwitch = 'DrmSwitch' in params ? params.DrmSwitch : null;
        this.AdaptiveDynamicStreamingDefinition = 'AdaptiveDynamicStreamingDefinition' in params ? params.AdaptiveDynamicStreamingDefinition : null;

        if (params.DrmStreamingsInfo) {
            let obj = new DrmStreamingsInfoForUpdate();
            obj.deserialize(params.DrmStreamingsInfo)
            this.DrmStreamingsInfo = obj;
        }
        this.TranscodeDefinition = 'TranscodeDefinition' in params ? params.TranscodeDefinition : null;
        this.ImageSpriteDefinition = 'ImageSpriteDefinition' in params ? params.ImageSpriteDefinition : null;

        if (params.ResolutionNames) {
            this.ResolutionNames = new Array();
            for (let z in params.ResolutionNames) {
                let obj = new ResolutionNameInfo();
                obj.deserialize(params.ResolutionNames[z]);
                this.ResolutionNames.push(obj);
            }
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Scheme = 'Scheme' in params ? params.Scheme : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * ResetProcedureTemplate request structure.
 * @class
 */
class ResetProcedureTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task flow name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Parameter of video processing task.
         * @type {MediaProcessTaskInput || null}
         */
        this.MediaProcessTask = null;

        /**
         * The information of an intelligent moderation task\*.
<font color=red>\*: This parameter is used by our old moderation templates and is not recommended. Please use `ReviewAudioVideoTask` instead.</font> 
         * @type {AiContentReviewTaskInput || null}
         */
        this.AiContentReviewTask = null;

        /**
         * Parameter of AI-based content analysis task.
         * @type {AiAnalysisTaskInput || null}
         */
        this.AiAnalysisTask = null;

        /**
         * Type parameter of AI-based content recognition task.
         * @type {AiRecognitionTaskInput || null}
         */
        this.AiRecognitionTask = null;

        /**
         * The information of the moderation task.
         * @type {ProcedureReviewAudioVideoTaskInput || null}
         */
        this.ReviewAudioVideoTask = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.MediaProcessTask) {
            let obj = new MediaProcessTaskInput();
            obj.deserialize(params.MediaProcessTask)
            this.MediaProcessTask = obj;
        }

        if (params.AiContentReviewTask) {
            let obj = new AiContentReviewTaskInput();
            obj.deserialize(params.AiContentReviewTask)
            this.AiContentReviewTask = obj;
        }

        if (params.AiAnalysisTask) {
            let obj = new AiAnalysisTaskInput();
            obj.deserialize(params.AiAnalysisTask)
            this.AiAnalysisTask = obj;
        }

        if (params.AiRecognitionTask) {
            let obj = new AiRecognitionTaskInput();
            obj.deserialize(params.AiRecognitionTask)
            this.AiRecognitionTask = obj;
        }

        if (params.ReviewAudioVideoTask) {
            let obj = new ProcedureReviewAudioVideoTaskInput();
            obj.deserialize(params.ReviewAudioVideoTask)
            this.ReviewAudioVideoTask = obj;
        }

    }
}

/**
 * The result for OCR-based image moderation.
 * @class
 */
class ContentReviewOcrResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The confidence score for the OCR-based moderation result. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * The suggestion for handling the suspicious content detected based on OCR. Valid values:
<li>pass/li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The list of suspicious keywords detected based on OCR.
         * @type {Array.<string> || null}
         */
        this.KeywordSet = null;

        /**
         * The coordinates (pixel) of the top-left and bottom-right corners of the frame where a suspicious keyword appears. Format: [x1, y1, x2, y2].
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.KeywordSet = 'KeywordSet' in params ? params.KeywordSet : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;

    }
}

/**
 * ComposeMedia response structure.
 * @class
 */
class ComposeMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file composing task ID, which can be used to query the status of composing task (with task type being `MakeMedia`).
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The information of a playlist.
 * @class
 */
class RoundPlayInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The playlist ID.
         * @type {string || null}
         */
        this.RoundPlayId = null;

        /**
         * The playback start time, in [ISO 8601 date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * The files on the list.
         * @type {Array.<RoundPlayListItemInfo> || null}
         */
        this.RoundPlaylist = null;

        /**
         * The playlist name (not longer than 64 characters).
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The playlist description (not longer than 256 characters).
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Playback status, optional values:
<li>Enabled: startup status;</li>
<li>Disabled: stop status. </li>
Default value: Enabled.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Play mode, optional values:
<li>Loop: Play the playlist in a loop;</li>
<li>Linear: Play once, stop playing after the playlist is played. </li>
Default value: Loop.
         * @type {string || null}
         */
        this.PlayBackMode = null;

        /**
         * Carousel playback address.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Creation time, in iso 8601 format. for details, see [iso date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Update time, in iso 8601 format. for details, see [iso date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format).
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Expiration time, in iso 8601 format. for details, see [iso date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format). the playback of the playlist will stop after expiration. "9999-12-31t23:59:59+08:00" means never expire.
         * @type {string || null}
         */
        this.ExpiredTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RoundPlayId = 'RoundPlayId' in params ? params.RoundPlayId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;

        if (params.RoundPlaylist) {
            this.RoundPlaylist = new Array();
            for (let z in params.RoundPlaylist) {
                let obj = new RoundPlayListItemInfo();
                obj.deserialize(params.RoundPlaylist[z]);
                this.RoundPlaylist.push(obj);
            }
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.PlayBackMode = 'PlayBackMode' in params ? params.PlayBackMode : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.ExpiredTime = 'ExpiredTime' in params ? params.ExpiredTime : null;

    }
}

/**
 * DescribeLicenseUsageData response structure.
 * @class
 */
class DescribeLicenseUsageDataResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The license request statistics (the number of license requests in the time period specified)
         * @type {Array.<LicenseUsageDataItem> || null}
         */
        this.LicenseUsageDataSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.LicenseUsageDataSet) {
            this.LicenseUsageDataSet = new Array();
            for (let z in params.LicenseUsageDataSet) {
                let obj = new LicenseUsageDataItem();
                obj.deserialize(params.LicenseUsageDataSet[z]);
                this.LicenseUsageDataSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Modification object of DRM-protected adaptive bitstream playback information
 * @class
 */
class DrmStreamingsInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the adaptive bitrate streaming template whose protection type is SimpleAES.
         * @type {number || null}
         */
        this.SimpleAesDefinition = null;

        /**
         * The ID of the adaptive bitrate streaming template that encrypts the streams by Widewine.
         * @type {number || null}
         */
        this.WidevineDefinition = null;

        /**
         * The ID of the adaptive bitrate streaming template that encrypts the streams by FairPlay.
         * @type {number || null}
         */
        this.FairPlayDefinition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SimpleAesDefinition = 'SimpleAesDefinition' in params ? params.SimpleAesDefinition : null;
        this.WidevineDefinition = 'WidevineDefinition' in params ? params.WidevineDefinition : null;
        this.FairPlayDefinition = 'FairPlayDefinition' in params ? params.FairPlayDefinition : null;

    }
}

/**
 * Control parameter of intelligent categorization task
 * @class
 */
class ClassificationConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of intelligent categorization task. Valid values:
<li>ON: enables intelligent categorization task;</li>
<li>OFF: disables intelligent categorization task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Control parameters for detecting low brightness and overexposure of video.
 * @class
 */
class AbnormalLightingConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * low brightness and overexposure inspection switch, optional values: 
<li>ON: enabled;</li> 
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * CreateCDNDomain response structure.
 * @class
 */
class CreateCDNDomainResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Audio stream configuration parameter
 * @class
 */
class AudioTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * The audio codec.
If `Container` is `mp3`, the valid value is:
<li>`libmp3lame`</li>
If `Container` is `ogg` or `flac`, the valid value is:
<li>`flac`</li>
If `Container` is `m4a`, the valid values are:
<li>`libfdk_aac`</li>
<li>`libmp3lame`</li>
<li>`ac3`</li>
If `Container` is `mp4` or `flv`, the valid values are:
<li>`libfdk_aac` (Recommended for MP4)</li>
<li>`libmp3lame` (Recommended for FLV)</li>
<li>`mp2`</li>
If `Container` is `hls`, the valid value is:
<li>`libfdk_aac`</li>
If `Format` is `HLS` or `MPEG-DASH`, the valid value is:
<li>`libfdk_aac`</li>
If `Container` is `wav`, the valid value is:
<li>`pcm16`</li>
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * Audio stream bitrate in Kbps. Value range: 0 and [26, 256]. If the value is 0, the bitrate of the audio stream will be the same as that of the original audio.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * The audio sample rate. Valid values:
<li>`16000` (valid only if `Codec` is `pcm16`)</li>
<li>`32000`</li>
<li>`44100`</li>
<li>`48000`</li>
Unit: Hz.
         * @type {number || null}
         */
        this.SampleRate = null;

        /**
         * Audio channel system. Valid values:
<li>1: mono-channel</li>
<li>2: dual-channel</li>
<li>6: stereo</li>
You cannot set the sound channel as stereo for media files in container formats for audios (FLAC, OGG, MP3, M4A).
         * @type {number || null}
         */
        this.AudioChannel = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.SampleRate = 'SampleRate' in params ? params.SampleRate : null;
        this.AudioChannel = 'AudioChannel' in params ? params.AudioChannel : null;

    }
}

/**
 * ModifyEnhanceMediaTemplate response structure.
 * @class
 */
class ModifyEnhanceMediaTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifySubAppIdInfo request structure.
 * @class
 */
class ModifySubAppIdInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Subapplication name. Length limit: 40 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Subapplication overview. Length limit: 300 characters.
         * @type {string || null}
         */
        this.Description = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;

    }
}

/**
 * DeletePersonSample request structure.
 * @class
 */
class DeletePersonSampleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of a sample.
         * @type {string || null}
         */
        this.PersonId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PersonId = 'PersonId' in params ? params.PersonId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * The moderation task details of a task flow template.
 * @class
 */
class ProcedureReviewAudioVideoTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The moderation template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The type of moderated content. Valid values:
<li>`Media`: The original audio/video.</li>
<li>`Cover`: Thumbnails.</li>
If this parameter is not specified or an empty array is passed in, `Media` will be used.
         * @type {Array.<string> || null}
         */
        this.ReviewContents = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.ReviewContents = 'ReviewContents' in params ? params.ReviewContents : null;

    }
}

/**
 * Speech recognition segment.
 * @class
 */
class AiRecognitionTaskAsrWordsSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of recognized segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of recognition segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Confidence of recognized segment. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;

    }
}

/**
 * Text watermarking template
 * @class
 */
class TextWatermarkTemplateInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Font type. Currently, two types are supported:
<li>simkai.ttf: both Chinese and English are supported;</li>
<li>arial.ttf: only English is supported.</li>
         * @type {string || null}
         */
        this.FontType = null;

        /**
         * Font size in Npx format where N is a numeric value.
         * @type {string || null}
         */
        this.FontSize = null;

        /**
         * Font color in 0xRRGGBB format. Default value: 0xFFFFFF (white).
         * @type {string || null}
         */
        this.FontColor = null;

        /**
         * Text transparency. Value range: (0, 1]
<li>0: completely transparent</li>
<li>1: completely opaque</li>
Default value: 1.
         * @type {number || null}
         */
        this.FontAlpha = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FontType = 'FontType' in params ? params.FontType : null;
        this.FontSize = 'FontSize' in params ? params.FontSize : null;
        this.FontColor = 'FontColor' in params ? params.FontColor : null;
        this.FontAlpha = 'FontAlpha' in params ? params.FontAlpha : null;

    }
}

/**
 * Control parameters for video quality evaluation.
 * @class
 */
class QualityEvaluationConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video quality evaluation switch, optional values:
<li>ON: enabled;</li>
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Video quality evaluation filter threshold, the result only returns the time periods lower than this value, the default value is 60.
         * @type {number || null}
         */
        this.Score = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Score = 'Score' in params ? params.Score : null;

    }
}

/**
 * Input parameter type of video content recognition
 * @class
 */
class AiRecognitionTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intelligent video recognition template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * CreateCDNDomain request structure.
 * @class
 */
class CreateCDNDomainRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Domain Config
         * @type {CDNDomainConfig || null}
         */
        this.Config = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;

        if (params.Config) {
            let obj = new CDNDomainConfig();
            obj.deserialize(params.Config)
            this.Config = obj;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Audio stream configuration parameter
 * @class
 */
class AudioTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The audio codec.
If `Container` is `mp3`, the valid value is:
<li>`libmp3lame`</li>
If `Container` is `ogg` or `flac`, the valid value is:
<li>`flac`</li>
If `Container` is `m4a`, the valid values are:
<li>`libfdk_aac`</li>
<li>`libmp3lame`</li>
<li>`ac3`</li>
If `Container` is `mp4` or `flv`, the valid values are:
<li>`libfdk_aac` (Recommended for MP4)</li>
<li>`libmp3lame` (Recommended for FLV)</li>
<li>`mp2`</li>
If `Container` is `hls`, the valid value is:
<li>`libfdk_aac`</li>
If `Format` is `HLS` or `MPEG-DASH`, the valid value is:
<li>`libfdk_aac`</li>
If `Container` is `wav`, the valid value is:
<li>`pcm16`</li>
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * Audio stream bitrate in Kbps. Value range: 0 and [26, 256].
If the value is 0, the bitrate of the audio stream will be the same as that of the original audio.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * The audio sample rate. Valid values:
<li>`16000` (valid only if `Codec` is `pcm16`)</li>
<li>`32000`</li>
<li>`44100`</li>
<li>`48000`</li>
Unit: Hz.
         * @type {number || null}
         */
        this.SampleRate = null;

        /**
         * Audio channel system. Valid values:
<li>1: mono-channel</li>
<li>2: dual-channel</li>
<li>6: stereo</li>
You cannot set the sound channel as stereo for media files in container formats for audios (FLAC, OGG, MP3, M4A).
Default value: 2
         * @type {number || null}
         */
        this.AudioChannel = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.SampleRate = 'SampleRate' in params ? params.SampleRate : null;
        this.AudioChannel = 'AudioChannel' in params ? params.AudioChannel : null;

    }
}

/**
 * ExecuteFunction response structure.
 * @class
 */
class ExecuteFunctionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * String generated by packaging processing result. For specifications, negotiate with the backend.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Result = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Result = 'Result' in params ? params.Result : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameter of intelligent cover generating task
 * @class
 */
class CoverConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of intelligent cover generating task. Valid values:
<li>ON: enables intelligent cover generating task;</li>
<li>OFF: disables intelligent cover generating task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * DescribeClientUploadAccelerationUsageData response structure.
 * @class
 */
class DescribeClientUploadAccelerationUsageDataResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The usage of client upload acceleration.
         * @type {Array.<StatDataItem> || null}
         */
        this.ClientUploadAccelerationUsageDataSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ClientUploadAccelerationUsageDataSet) {
            this.ClientUploadAccelerationUsageDataSet = new Array();
            for (let z in params.ClientUploadAccelerationUsageDataSet) {
                let obj = new StatDataItem();
                obj.deserialize(params.ClientUploadAccelerationUsageDataSet[z]);
                this.ClientUploadAccelerationUsageDataSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyRebuildMediaTemplate request structure.
 * @class
 */
class ModifyRebuildMediaTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rebuild Media Template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {string || null}
         */
        this.SubAppId = null;

        /**
         * Rebuild Media Template Name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Rebuild media template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Rebuild media video control information.
         * @type {RebuildVideoInfo || null}
         */
        this.RebuildVideoInfo = null;

        /**
         * Rebuild media audio control information.
         * @type {RebuildAudioInfo || null}
         */
        this.RebuildAudioInfo = null;

        /**
         * The output video parameters.
         * @type {RebuildMediaTargetVideoStream || null}
         */
        this.TargetVideoInfo = null;

        /**
         * The output audio parameters.
         * @type {RebuildMediaTargetAudioStream || null}
         */
        this.TargetAudioInfo = null;

        /**
         * The output container format. Valid values: `mp4`, `flv`, `hls`.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Whether to remove video data. Valid values:
<li>`0`: No</li>
<li>`1`: Yes</li>
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data. Valid values:
<li>`0`: No</li>
<li>`1`: Yes</li>
         * @type {number || null}
         */
        this.RemoveAudio = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.RebuildVideoInfo) {
            let obj = new RebuildVideoInfo();
            obj.deserialize(params.RebuildVideoInfo)
            this.RebuildVideoInfo = obj;
        }

        if (params.RebuildAudioInfo) {
            let obj = new RebuildAudioInfo();
            obj.deserialize(params.RebuildAudioInfo)
            this.RebuildAudioInfo = obj;
        }

        if (params.TargetVideoInfo) {
            let obj = new RebuildMediaTargetVideoStream();
            obj.deserialize(params.TargetVideoInfo)
            this.TargetVideoInfo = obj;
        }

        if (params.TargetAudioInfo) {
            let obj = new RebuildMediaTargetAudioStream();
            obj.deserialize(params.TargetAudioInfo)
            this.TargetAudioInfo = obj;
        }
        this.Container = 'Container' in params ? params.Container : null;
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

    }
}

/**
 * ComposeMedia request structure.
 * @class
 */
class ComposeMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of input media tracks, including video, audio, and image tracks. <li>Input tracks are synced to the output media file.</li><li>Input tracks are synced to each other. Videos and images in higher tracks are superimposed over those in lower tracks. Audio tracks are mixed.</li><li>There can be up to 10 tracks for video, audio, and images each.</li><li>The total number of clips in all tracks cannot exceed 500.</li>
         * @type {Array.<MediaTrack> || null}
         */
        this.Tracks = null;

        /**
         * Information of output media file.
         * @type {ComposeMediaOutput || null}
         */
        this.Output = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Canvas used for composing video file.
         * @type {Canvas || null}
         */
        this.Canvas = null;

        /**
         * Used to pass through user request information. `ComposeMediaComplete` callback will return the value of this parameter. It contains up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * Used to identify duplicate requests. After you send a request, if any request with the same `SessionId` has already been sent in the last three days (72 hours), an error message will be returned. `SessionId` contains up to 50 characters. If this parameter is not carried or is an empty string, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Tracks) {
            this.Tracks = new Array();
            for (let z in params.Tracks) {
                let obj = new MediaTrack();
                obj.deserialize(params.Tracks[z]);
                this.Tracks.push(obj);
            }
        }

        if (params.Output) {
            let obj = new ComposeMediaOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

        if (params.Canvas) {
            let obj = new Canvas();
            obj.deserialize(params.Canvas)
            this.Canvas = obj;
        }
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;

    }
}

/**
 * Video content recognition template details.
 * @class
 */
class AIRecognitionTemplateItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of video content recognition template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Video content recognition template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Video content recognition template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Template type, values:
<li>Preset: system preset template;</li>
<li>Custom: user-defined template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Control parameter of opening and closing credits recognition.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {HeadTailConfigureInfo || null}
         */
        this.HeadTailConfigure = null;

        /**
         * Control parameter of splitting recognition.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {SegmentConfigureInfo || null}
         */
        this.SegmentConfigure = null;

        /**
         * Face recognition control parameter.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {FaceConfigureInfo || null}
         */
        this.FaceConfigure = null;

        /**
         * Full text recognition control parameter.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {OcrFullTextConfigureInfo || null}
         */
        this.OcrFullTextConfigure = null;

        /**
         * Text keyword recognition control parameter.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {OcrWordsConfigureInfo || null}
         */
        this.OcrWordsConfigure = null;

        /**
         * Full speech recognition control parameter.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AsrFullTextConfigureInfo || null}
         */
        this.AsrFullTextConfigure = null;

        /**
         * Speech keyword recognition control parameter.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AsrWordsConfigureInfo || null}
         */
        this.AsrWordsConfigure = null;

        /**
         * Voice translation control parameter.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AsrTranslateConfigureInfo || null}
         */
        this.AsrTranslateConfigure = null;

        /**
         * Control parameter of object recognition.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {ObjectConfigureInfo || null}
         */
        this.ObjectConfigure = null;

        /**
         * Screencapturing interval in seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Type = 'Type' in params ? params.Type : null;

        if (params.HeadTailConfigure) {
            let obj = new HeadTailConfigureInfo();
            obj.deserialize(params.HeadTailConfigure)
            this.HeadTailConfigure = obj;
        }

        if (params.SegmentConfigure) {
            let obj = new SegmentConfigureInfo();
            obj.deserialize(params.SegmentConfigure)
            this.SegmentConfigure = obj;
        }

        if (params.FaceConfigure) {
            let obj = new FaceConfigureInfo();
            obj.deserialize(params.FaceConfigure)
            this.FaceConfigure = obj;
        }

        if (params.OcrFullTextConfigure) {
            let obj = new OcrFullTextConfigureInfo();
            obj.deserialize(params.OcrFullTextConfigure)
            this.OcrFullTextConfigure = obj;
        }

        if (params.OcrWordsConfigure) {
            let obj = new OcrWordsConfigureInfo();
            obj.deserialize(params.OcrWordsConfigure)
            this.OcrWordsConfigure = obj;
        }

        if (params.AsrFullTextConfigure) {
            let obj = new AsrFullTextConfigureInfo();
            obj.deserialize(params.AsrFullTextConfigure)
            this.AsrFullTextConfigure = obj;
        }

        if (params.AsrWordsConfigure) {
            let obj = new AsrWordsConfigureInfo();
            obj.deserialize(params.AsrWordsConfigure)
            this.AsrWordsConfigure = obj;
        }

        if (params.AsrTranslateConfigure) {
            let obj = new AsrTranslateConfigureInfo();
            obj.deserialize(params.AsrTranslateConfigure)
            this.AsrTranslateConfigure = obj;
        }

        if (params.ObjectConfigure) {
            let obj = new ObjectConfigureInfo();
            obj.deserialize(params.ObjectConfigure)
            this.ObjectConfigure = obj;
        }
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * Input parameters for ASR-based recognition of pornographic content
 * @class
 */
class AiReviewPornAsrTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the template for recognition of pornographic content
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Face recognition result.
 * @class
 */
class AiRecognitionTaskFaceResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of face recognition task.
         * @type {AiRecognitionTaskFaceResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of face recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskFaceResultOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a face recognition task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the face recognition task started, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the face recognition task was completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskFaceResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskFaceResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Input of video opening and ending credits recognition.
 * @class
 */
class AiRecognitionTaskHeadTailResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video opening and ending credits recognition template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * CreateAdaptiveDynamicStreamingTemplate request structure.
 * @class
 */
class CreateAdaptiveDynamicStreamingTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The adaptive bitrate streaming format. Valid values:
<li>HLS</li>
<li>MPEG-DASH</li>
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Parameter information of output substream for adaptive bitrate streaming. Up to 10 substreams can be output.
Note: the frame rate of all substreams must be the same; otherwise, the frame rate of the first substream will be used as the output frame rate.
         * @type {Array.<AdaptiveStreamTemplate> || null}
         */
        this.StreamInfos = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * DRM scheme type, value range:
<li>SimpleAES</li>
<li>Widevine</li>
<li>FairPlay</li>
The default value is an empty string. It is an empty string, indicating that the video will not be DRM protected.
         * @type {string || null}
         */
        this.DrmType = null;

        /**
         * The provider of the DRM key. Valid values:
<li>SDMC</li>
<li>VOD</li>
The default is `VOD`.
         * @type {string || null}
         */
        this.DrmKeyProvider = null;

        /**
         * Whether to prohibit transcoding video from low bitrate to high bitrate. Valid values:
<li>0: no,</li>
<li>1: yes.</li>
Default value: no.
         * @type {number || null}
         */
        this.DisableHigherVideoBitrate = null;

        /**
         * Whether to prohibit transcoding from low resolution to high resolution. Valid values:
<li>0: no,</li>
<li>1: yes.</li>
Default value: no.
         * @type {number || null}
         */
        this.DisableHigherVideoResolution = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * The segment type. This parameter is valid only if `Format` is `HLS`. Valid values:
<li>ts: TS segment</li>
<li>fmp4: fMP4 segment</li>
Default: ts
         * @type {string || null}
         */
        this.SegmentType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Format = 'Format' in params ? params.Format : null;

        if (params.StreamInfos) {
            this.StreamInfos = new Array();
            for (let z in params.StreamInfos) {
                let obj = new AdaptiveStreamTemplate();
                obj.deserialize(params.StreamInfos[z]);
                this.StreamInfos.push(obj);
            }
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.DrmType = 'DrmType' in params ? params.DrmType : null;
        this.DrmKeyProvider = 'DrmKeyProvider' in params ? params.DrmKeyProvider : null;
        this.DisableHigherVideoBitrate = 'DisableHigherVideoBitrate' in params ? params.DisableHigherVideoBitrate : null;
        this.DisableHigherVideoResolution = 'DisableHigherVideoResolution' in params ? params.DisableHigherVideoResolution : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.SegmentType = 'SegmentType' in params ? params.SegmentType : null;

    }
}

/**
 * PushUrlCache response structure.
 * @class
 */
class PushUrlCacheResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result type of sampled screencapturing task
 * @class
 */
class MediaProcessTaskSampleSnapshotResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of sampled screencapturing task.
         * @type {SampleSnapshotTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of sampled screencapturing task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaSampleSnapshotItem || null}
         */
        this.Output = null;

        /**
         * The progress of a sampled screenshot task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the sampling screenshot task starts execution is in [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the sampling screenshot task is completed uses [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new SampleSnapshotTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new MediaSampleSnapshotItem();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * ModifyEnhanceMediaTemplate request structure.
 * @class
 */
class ModifyEnhanceMediaTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Enhance Media Template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Audio and video quality rebirth template name, length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description information, length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Media quality Enhance video control control information.
         * @type {RebuildVideoInfo || null}
         */
        this.RebuildVideoInfo = null;

        /**
         * Media quality Enhance audio control control information.
         * @type {RebuildAudioInfo || null}
         */
        this.RebuildAudioInfo = null;

        /**
         * Output target video control information.
         * @type {RebuildMediaTargetVideoStream || null}
         */
        this.TargetVideoInfo = null;

        /**
         * Output target audio control information.
         * @type {RebuildMediaTargetAudioStream || null}
         */
        this.TargetAudioInfo = null;

        /**
         * Output file encapsulation format, optional values: mp4, flv, hls.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Whether to remove video data, optional values:
<li>0: Keep</li>
<li>1: Remove</li>
Default value 0.
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data, optional values:
<li>0: Keep</li>
<li>1: Remove</li>
Default value 0.
         * @type {number || null}
         */
        this.RemoveAudio = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.RebuildVideoInfo) {
            let obj = new RebuildVideoInfo();
            obj.deserialize(params.RebuildVideoInfo)
            this.RebuildVideoInfo = obj;
        }

        if (params.RebuildAudioInfo) {
            let obj = new RebuildAudioInfo();
            obj.deserialize(params.RebuildAudioInfo)
            this.RebuildAudioInfo = obj;
        }

        if (params.TargetVideoInfo) {
            let obj = new RebuildMediaTargetVideoStream();
            obj.deserialize(params.TargetVideoInfo)
            this.TargetVideoInfo = obj;
        }

        if (params.TargetAudioInfo) {
            let obj = new RebuildMediaTargetAudioStream();
            obj.deserialize(params.TargetAudioInfo)
            this.TargetAudioInfo = obj;
        }
        this.Container = 'Container' in params ? params.Container : null;
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

    }
}

/**
 * Parameters for recognition of terrorism content in images
 * @class
 */
class TerrorismImgReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable recognition of terrorism content in images. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for recognition of terrorism content in images. Results containing the specified labels are returned. If no labels are specified, all results are returned. Valid values:
<li>`guns`: weapons and guns</li>
<li>`crowd`: crowd</li>
<li>`bloody`: bloody scenes</li>
<li>`police`: police force</li>
<li>`banners`: terrorism flags</li>
<li>`militant`: militants</li>
<li>`explosion`: explosions and fires</li>
<li>`terrorists`: terrorists</li>
<li>`scenario`: terrorism images</li>
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Control parameter of face recognition task
 * @class
 */
class FaceConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of face recognition task. Valid values:
<li>ON: enables intelligent face recognition task;</li>
<li>OFF: disables intelligent face recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Face recognition filter score. If this score is reached or exceeded, a recognition result will be returned. Value range: 0–100.
         * @type {number || null}
         */
        this.Score = null;

        /**
         * Default face filter labels, which specify the types of faces to return. If this parameter is left empty or an empty value is entered, the recognition results for all labels are returned. Valid values:
<li>`entertainment`: people in the entertainment industry</li>
<li>`sport`: sports celebrities</li>
<li>`politician`: politically sensitive people</li>
         * @type {Array.<string> || null}
         */
        this.DefaultLibraryLabelSet = null;

        /**
         * Custom face labels for filtering. After you specify a label, callbacks of face images without this label will be returned. If this parameter is not specified or left empty, callbacks of all face images will be returned.
You can specify up to 100 labels, with each containing up to 16 characters.
         * @type {Array.<string> || null}
         */
        this.UserDefineLibraryLabelSet = null;

        /**
         * Figure library. Valid values:
<li>Default: default figure library;</li>
<li>UserDefine: custom figure library.</li>
<li>All: both default and custom figure libraries will be used.</li>
         * @type {string || null}
         */
        this.FaceLibrary = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Score = 'Score' in params ? params.Score : null;
        this.DefaultLibraryLabelSet = 'DefaultLibraryLabelSet' in params ? params.DefaultLibraryLabelSet : null;
        this.UserDefineLibraryLabelSet = 'UserDefineLibraryLabelSet' in params ? params.UserDefineLibraryLabelSet : null;
        this.FaceLibrary = 'FaceLibrary' in params ? params.FaceLibrary : null;

    }
}

/**
 * ModifyTranscodeTemplate request structure.
 * @class
 */
class ModifyTranscodeTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of transcoding template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The container format. Valid values: `mp4`, `flv`, `hls`, `mp3`, `flac`, `ogg`, `m4a`, `wav` ( `mp3`, `flac`, `ogg`, `m4a`, and `wav` are audio file formats).
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Transcoding template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Whether to remove video data. Valid values:
<li>0: retain</li>
<li>1: remove</li>
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data. Valid values:
<li>0: retain</li>
<li>1: remove</li>
         * @type {number || null}
         */
        this.RemoveAudio = null;

        /**
         * Video stream configuration parameter.
         * @type {VideoTemplateInfoForUpdate || null}
         */
        this.VideoTemplate = null;

        /**
         * Audio stream configuration parameter.
         * @type {AudioTemplateInfoForUpdate || null}
         */
        this.AudioTemplate = null;

        /**
         * TESHD transcoding parameter.
         * @type {TEHDConfigForUpdate || null}
         */
        this.TEHDConfig = null;

        /**
         * The segment type. This parameter is valid only if `Container` is `hls`. Valid values:
<li>ts: TS segment</li>
<li>fmp4: fMP4 segment</li>
         * @type {string || null}
         */
        this.SegmentType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Container = 'Container' in params ? params.Container : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

        if (params.VideoTemplate) {
            let obj = new VideoTemplateInfoForUpdate();
            obj.deserialize(params.VideoTemplate)
            this.VideoTemplate = obj;
        }

        if (params.AudioTemplate) {
            let obj = new AudioTemplateInfoForUpdate();
            obj.deserialize(params.AudioTemplate)
            this.AudioTemplate = obj;
        }

        if (params.TEHDConfig) {
            let obj = new TEHDConfigForUpdate();
            obj.deserialize(params.TEHDConfig)
            this.TEHDConfig = obj;
        }
        this.SegmentType = 'SegmentType' in params ? params.SegmentType : null;

    }
}

/**
 * Branch path cache configuration. The default cache expiration for all files is 30 days.
 * @class
 */
class RuleCache extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule type: <li>all: valid for all files;</li> <li>file: valid for specified file suffix;</li> <li>directory: valid for specified path;</li> <li>path: specified absolute The path takes effect. </li>
         * @type {string || null}
         */
        this.RuleType = null;

        /**
         * Matching content under the corresponding type of RuleType: <li>Fill in * when all is used;</li> <li>Fill in suffix name when file is used, such as jpg, txt;</li> <li>Fill in path when directory is used, such as /xxx/ test/;</li> <li>Fill in the absolute path when path is specified, such as /xxx/test.html. </li>
         * @type {Array.<string> || null}
         */
        this.RulePaths = null;

        /**
         * Cache configuration
         * @type {RuleCacheConfig || null}
         */
        this.CacheConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleType = 'RuleType' in params ? params.RuleType : null;
        this.RulePaths = 'RulePaths' in params ? params.RulePaths : null;

        if (params.CacheConfig) {
            let obj = new RuleCacheConfig();
            obj.deserialize(params.CacheConfig)
            this.CacheConfig = obj;
        }

    }
}

/**
 * Input of video editing task.
 * @class
 */
class EditMediaTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Input video source type. Valid values: File, Stream.
         * @type {string || null}
         */
        this.InputType = null;

        /**
         * Information of input video file. This field has a value only when `InputType` is `File`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<EditMediaFileInfo> || null}
         */
        this.FileInfoSet = null;

        /**
         * Input stream information. This field has a value only when `InputType` is `Stream`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<EditMediaStreamInfo> || null}
         */
        this.StreamInfoSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.InputType = 'InputType' in params ? params.InputType : null;

        if (params.FileInfoSet) {
            this.FileInfoSet = new Array();
            for (let z in params.FileInfoSet) {
                let obj = new EditMediaFileInfo();
                obj.deserialize(params.FileInfoSet[z]);
                this.FileInfoSet.push(obj);
            }
        }

        if (params.StreamInfoSet) {
            this.StreamInfoSet = new Array();
            for (let z in params.StreamInfoSet) {
                let obj = new EditMediaStreamInfo();
                obj.deserialize(params.StreamInfoSet[z]);
                this.StreamInfoSet.push(obj);
            }
        }

    }
}

/**
 * DeleteAIAnalysisTemplate response structure.
 * @class
 */
class DeleteAIAnalysisTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteImageProcessingTemplate request structure.
 * @class
 */
class DeleteImageProcessingTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DescribeDailyPlayStatFileList response structure.
 * @class
 */
class DescribeDailyPlayStatFileListResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of playback statistics files.
         * @type {Array.<PlayStatFileInfo> || null}
         */
        this.PlayStatFileSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.PlayStatFileSet) {
            this.PlayStatFileSet = new Array();
            for (let z in params.PlayStatFileSet) {
                let obj = new PlayStatFileInfo();
                obj.deserialize(params.PlayStatFileSet[z]);
                this.PlayStatFileSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameters for detecting low brightness and overexposure of video.
 * @class
 */
class AbnormalLightingConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * low brightness and overexposure inspection switch, optional values: 
<li>ON: enabled;</li> 
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Text watermarking template
 * @class
 */
class TextWatermarkTemplateInputForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Font type. Currently, two types are supported:
<li>simkai.ttf: both Chinese and English are supported;</li>
<li>arial.ttf: only English is supported.</li>
         * @type {string || null}
         */
        this.FontType = null;

        /**
         * Font size in Npx format where N is a numeric value.
         * @type {string || null}
         */
        this.FontSize = null;

        /**
         * Font color in 0xRRGGBB format. Default value: 0xFFFFFF (white).
         * @type {string || null}
         */
        this.FontColor = null;

        /**
         * Text transparency. Value range: (0, 1]
<li>0: completely transparent</li>
<li>1: completely opaque</li>
         * @type {number || null}
         */
        this.FontAlpha = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FontType = 'FontType' in params ? params.FontType : null;
        this.FontSize = 'FontSize' in params ? params.FontSize : null;
        this.FontColor = 'FontColor' in params ? params.FontColor : null;
        this.FontAlpha = 'FontAlpha' in params ? params.FontAlpha : null;

    }
}

/**
 * DeleteSuperPlayerConfig request structure.
 * @class
 */
class DeleteSuperPlayerConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Player configuration name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Input parameters for OCR-based recognition of terrorism content
 * @class
 */
class AiReviewTerrorismOcrTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the template for recognition of terrorism content
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Input of text keyword recognition.
 * @class
 */
class AiRecognitionTaskOcrWordsResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Text keyword recognition template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * ModifyMediaStorageClass response structure.
 * @class
 */
class ModifyMediaStorageClassResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Input parameters for intelligent recognition of pornographic content
 * @class
 */
class AiReviewPornTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the template for recognition of pornographic content
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Control parameters for video jitter and ghost detection.
 * @class
 */
class JitterConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video shake and ghost detection switch, optional values:
<li>ON: turn on;</li>
<li>OFF: turn off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Parameters for custom ASR-based recognition
 * @class
 */
class UserDefineAsrTextReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable custom ASR-based recognition. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for custom ASR-based recognition. Results containing the specified labels are returned. If no labels are specified, all results are returned. To filter by labels, specify the labels when adding keywords for custom ASR-based recognition.
Up to 10 labels are allowed, each containing no more than 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * CreateProcedureTemplate request structure.
 * @class
 */
class CreateProcedureTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task flow name (up to 20 characters).
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Parameter of video processing task.
         * @type {MediaProcessTaskInput || null}
         */
        this.MediaProcessTask = null;

        /**
         * The information of the intelligent moderation task\*.
<font color=red>\*: This parameter is used by our old moderation templates and is not recommended. Please use `ReviewAudioVideoTask` instead.</font> 
         * @type {AiContentReviewTaskInput || null}
         */
        this.AiContentReviewTask = null;

        /**
         * Parameter of AI-based content analysis task.
         * @type {AiAnalysisTaskInput || null}
         */
        this.AiAnalysisTask = null;

        /**
         * Type parameter of AI-based content recognition task.
         * @type {AiRecognitionTaskInput || null}
         */
        this.AiRecognitionTask = null;

        /**
         * The information of the moderation task.
         * @type {ProcedureReviewAudioVideoTaskInput || null}
         */
        this.ReviewAudioVideoTask = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.MediaProcessTask) {
            let obj = new MediaProcessTaskInput();
            obj.deserialize(params.MediaProcessTask)
            this.MediaProcessTask = obj;
        }

        if (params.AiContentReviewTask) {
            let obj = new AiContentReviewTaskInput();
            obj.deserialize(params.AiContentReviewTask)
            this.AiContentReviewTask = obj;
        }

        if (params.AiAnalysisTask) {
            let obj = new AiAnalysisTaskInput();
            obj.deserialize(params.AiAnalysisTask)
            this.AiAnalysisTask = obj;
        }

        if (params.AiRecognitionTask) {
            let obj = new AiRecognitionTaskInput();
            obj.deserialize(params.AiRecognitionTask)
            this.AiRecognitionTask = obj;
        }

        if (params.ReviewAudioVideoTask) {
            let obj = new ProcedureReviewAudioVideoTaskInput();
            obj.deserialize(params.ReviewAudioVideoTask)
            this.ReviewAudioVideoTask = obj;
        }

    }
}

/**
 * Result type of animated image generating task
 * @class
 */
class MediaProcessTaskAnimatedGraphicResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of animated image generating task.
         * @type {AnimatedGraphicTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of animated image generating task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaAnimatedGraphicsItem || null}
         */
        this.Output = null;

        /**
         * The progress of an animated image generation task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the rotation graph task started to execute, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the rotation graph task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AnimatedGraphicTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new MediaAnimatedGraphicsItem();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * DescribeMediaProcessUsageData request structure.
 * @class
 */
class DescribeMediaProcessUsageDataRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start date in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#iso-.E6.97.A5.E6.9C.9F.E6.A0.BC.E5.BC.8F).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End date in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#iso-.E6.97.A5.E6.9C.9F.E6.A0.BC.E5.BC.8F). The end date must be on or after the start date.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Query the video processing task type. Currently supported task types include:
<li> Transcoding: Normal transcoding</li>
<li> Transcoding-TESHD: Extremely fast high-definition transcoding</li>
<li> Editing : Video editing</li>
<li> Editing-TESHD: Extremely fast high-definition video editing</li>
<li> AdaptiveBitrateStreaming: Adaptive bitrate streaming</li>
<li> ContentAudit: Content audit</li> li>
<li> ContentRecognition: Content recognition</li>
<li> RemoveWatermark: Remove watermark</li>
<li> ExtractTraceWatermark: Extract watermark</li>
<li> AddTraceWatermark: Add watermark </li>
<li> RebuildMedia: Rebirth of audio and video quality</li>
<li> QualityInspect: Media quality inspection</li>
<li> VideoHighlight: Smart video collection</li>
< li> VideoTag: Video smart tag</li>
<li> VideoClassification: Video smart classification</li>
<li> VideoCover: Video smart cover</li>
<li> VideoSegment: Video smart split </li>
<li>Transcode: transcoding, including normal transcoding, high-speed HD and video editing (not recommended)</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * CreatePersonSample request structure.
 * @class
 */
class CreatePersonSampleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of a sample. Length limit: 20 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Usage of a sample. Valid values:
1. Recognition: used for content recognition; equivalent to `Recognition.Face`
2. Review: used for inappropriate information recognition; equivalent to `Review.Face`
3. All: equivalent to 1+2.
         * @type {Array.<string> || null}
         */
        this.Usages = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Description of a sample. Length limit: 1024 characters.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * String generated after the sample image is encoded by [Base64](https://tools.ietf.org/html/rfc4648). Only JPEG and PNG images are supported. Array length limit: 5 images.
Note: the image must be a relatively clear full-face photo of a person and has a resolution of no less than 200 x 200.
         * @type {Array.<string> || null}
         */
        this.FaceContents = null;

        /**
         * Tags of a sample
<li>Array length limit: 20 tags</li>
<li>Length limit of a tag: 128 characters</li>
         * @type {Array.<string> || null}
         */
        this.Tags = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Usages = 'Usages' in params ? params.Usages : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.FaceContents = 'FaceContents' in params ? params.FaceContents : null;
        this.Tags = 'Tags' in params ? params.Tags : null;

    }
}

/**
 * The information of a watermark removal task. This parameter is valid only if `TaskType` is `RemoveWatermark`.
 * @class
 */
class RemoveWatermarkTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The task flow status. Valid values:
<li>PROCESSING</li>
<li>FINISH</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video processing error codes](https://intl.cloud.tencent.com/document/product/266/39145?lang=en&pg=#video-processing).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0: Successful; other values: Failed.
<li>40000: Invalid input parameter.</li>
<li>60000: Source file error (e.g., video data is corrupted).</li>
<li>70000: Internal server error. Please try again.</li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * The error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The input of a watermark removal task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RemoveWaterMarkTaskInput || null}
         */
        this.Input = null;

        /**
         * The output of a watermark removal task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RemoveWaterMarkTaskOutput || null}
         */
        this.Output = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last seven days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new RemoveWaterMarkTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new RemoveWaterMarkTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * ReviewAudioVideo request structure.
 * @class
 */
class ReviewAudioVideoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The media file ID, which is assigned after upload and uniquely identifies a file in VOD. You can view the ID of a file in the [NewFileUpload](https://www.tencentcloud.com/document/product/266/33950) callback or in the [VOD console](https://console.tencentcloud.com/vod/media).
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The type of moderated content. Valid values:
<li>`Media`: The original audio/video.</li>
<li>`Cover`: Thumbnails.</li>
If this parameter is not specified or an empty array is passed in, `Media` will be used.
         * @type {Array.<string> || null}
         */
        this.ReviewContents = null;

        /**
         * The moderation template ID. Valid values: <li>10 (default): The preset template, whose violation labels are `Porn` and `Terror`.</li>
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The priority of a task flow. The higher the value, the higher the priority. Value range: [-10, 10]. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * The source context, which is used to pass through user request information. The `ReviewAudioVideoComplete` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The session ID, which is used to identify duplicate requests. If there was a request with the same session ID in the last three days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * A reserved parameter.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.ReviewContents = 'ReviewContents' in params ? params.ReviewContents : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * The information of a storage region.
 * @class
 */
class StorageRegionInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The storage region.
         * @type {string || null}
         */
        this.Region = null;

        /**
         * The description of the storage region.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Whether storage is enabled in the region. Valid values:
<li>opened: Enabled</li>
<li>unopened: Not enabled</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Whether the region is the default storage region. Valid values: true, false.
         * @type {boolean || null}
         */
        this.IsDefault = null;

        /**
         * Whether the storage region is inside or outside the Chinese mainland. Valid values:
<li>Chinese Mainland</li>
<li>Outside Chinese Mainland</li>
         * @type {string || null}
         */
        this.Area = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Region = 'Region' in params ? params.Region : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.IsDefault = 'IsDefault' in params ? params.IsDefault : null;
        this.Area = 'Area' in params ? params.Area : null;

    }
}

/**
 * Transition information
 * @class
 */
class MediaTransitionItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Transition duration in seconds. For two media segments that use a transition, the start time of the second segment on the track will be automatically set to the end time of the first segment minus the transition duration.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * List of transition operations. Up to one video image or audio transition operation is supported.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TransitionOpertion> || null}
         */
        this.Transitions = null;

        /**
         * Transition operation list. Image transition operations and audio transition operations support at most one each.
         * @type {Array.<TransitionOperation> || null}
         */
        this.MediaTransitions = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Duration = 'Duration' in params ? params.Duration : null;

        if (params.Transitions) {
            this.Transitions = new Array();
            for (let z in params.Transitions) {
                let obj = new TransitionOpertion();
                obj.deserialize(params.Transitions[z]);
                this.Transitions.push(obj);
            }
        }

        if (params.MediaTransitions) {
            this.MediaTransitions = new Array();
            for (let z in params.MediaTransitions) {
                let obj = new TransitionOperation();
                obj.deserialize(params.MediaTransitions[z]);
                this.MediaTransitions.push(obj);
            }
        }

    }
}

/**
 * Information of intelligently generated cover
 * @class
 */
class MediaAiAnalysisCoverItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Address of intelligently generated cover.
         * @type {string || null}
         */
        this.CoverUrl = null;

        /**
         * Confidence of intelligently generated cover between 0 and 100.
         * @type {number || null}
         */
        this.Confidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CoverUrl = 'CoverUrl' in params ? params.CoverUrl : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;

    }
}

/**
 * Input parameters for subtitles in the complex adaptive bitrate streaming task.
 * @class
 */
class ComplexAdaptiveDynamicStreamingTaskSubtitleInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Subtitle ID, which must belongs to the main media.
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Whether to set as the default subtitle for adaptive bitrate streaming.
<li>YES: Set as the default subtitle;</li>
<li>NO: Not set as the default subtitle (default value).</li>
         * @type {string || null}
         */
        this.Default = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Default = 'Default' in params ? params.Default : null;

    }
}

/**
 * Control parameter of intelligent tagging task
 * @class
 */
class TagConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of intelligent tagging task. Valid values:
<li>ON: enables intelligent tagging task;</li>
<li>OFF: disables intelligent tagging task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Detail enhancement configuration.
 * @class
 */
class SharpEnhanceInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable detail enhancement. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The detail enhancement strength. Value range: 0.0 – 1.0. This parameter is valid only if `Switch` is `ON`.
Default value: `0.0`.
         * @type {number || null}
         */
        this.Intensity = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Intensity = 'Intensity' in params ? params.Intensity : null;

    }
}

/**
 * ModifySuperPlayerConfig response structure.
 * @class
 */
class ModifySuperPlayerConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeWordSamples response structure.
 * @class
 */
class DescribeWordSamplesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Keyword information.
         * @type {Array.<AiSampleWord> || null}
         */
        this.WordSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.WordSet) {
            this.WordSet = new Array();
            for (let z in params.WordSet) {
                let obj = new AiSampleWord();
                obj.deserialize(params.WordSet[z]);
                this.WordSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RefreshUrlCache response structure.
 * @class
 */
class RefreshUrlCacheResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The details of a video splicing task. This parameter is only valid for tasks initiated by the v2017 video splicing API.
 * @class
 */
class ConcatTask2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video splicing task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Information of source file for video splicing.
         * @type {Array.<ConcatFileInfo2017> || null}
         */
        this.FileInfoSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;

        if (params.FileInfoSet) {
            this.FileInfoSet = new Array();
            for (let z in params.FileInfoSet) {
                let obj = new ConcatFileInfo2017();
                obj.deserialize(params.FileInfoSet[z]);
                this.FileInfoSet.push(obj);
            }
        }

    }
}

/**
 * DeleteAIRecognitionTemplate request structure.
 * @class
 */
class DeleteAIRecognitionTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of video content recognition template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * File upload task information
 * @class
 */
class FileUploadTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Basic information of media file generated after upload is completed.
         * @type {MediaBasicInfo || null}
         */
        this.MediaBasicInfo = null;

        /**
         * The task ID for the task type `Procedure`. If a task flow is specified for [uploaded media](https://intl.cloud.tencent.com/document/product/266/33475?from_cn_redirect=1#.E4.BB.BB.E5.8A.A1.E5.8F.91.E8.B5.B7), and the task flow includes one or more of `MediaProcessTask`, `AiAnalysisTask`, and `AiRecognitionTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ProcedureTaskId = null;

        /**
         * The task ID for the task type `ReviewAudioVideo`. If a task flow is specified for [uploaded media](https://intl.cloud.tencent.com/document/product/266/33475?from_cn_redirect=1#.E4.BB.BB.E5.8A.A1.E5.8F.91.E8.B5.B7), and the task flow includes `ReviewAudioVideoTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ReviewAudioVideoTaskId = null;

        /**
         * Metadata, such as size, duration, video stream information, audio stream information, etc.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.MediaBasicInfo) {
            let obj = new MediaBasicInfo();
            obj.deserialize(params.MediaBasicInfo)
            this.MediaBasicInfo = obj;
        }
        this.ProcedureTaskId = 'ProcedureTaskId' in params ? params.ProcedureTaskId : null;
        this.ReviewAudioVideoTaskId = 'ReviewAudioVideoTaskId' in params ? params.ReviewAudioVideoTaskId : null;

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }

    }
}

/**
 * DescribeCDNStatDetails response structure.
 * @class
 */
class DescribeCDNStatDetailsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Time granularity of every piece of data in minutes.
         * @type {number || null}
         */
        this.DataInterval = null;

        /**
         * CDN usage statistics.
         * @type {Array.<StatDataItem> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DataInterval = 'DataInterval' in params ? params.DataInterval : null;

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new StatDataItem();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * AttachMediaSubtitles request structure.
 * @class
 */
class AttachMediaSubtitlesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of the media file
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Operation. Valid values:
<li>`Attach`: associates subtitles.</li>
<li>`Detach`: disassociates subtitles.</li>
         * @type {string || null}
         */
        this.Operation = null;

        /**
         * [Adaptive bitrate streaming template ID](https://intl.cloud.tencent.com/document/product/266/34071?from_cn_redirect=1#zsy)
         * @type {number || null}
         */
        this.AdaptiveDynamicStreamingDefinition = null;

        /**
         * Unique IDs of the subtitles
         * @type {Array.<string> || null}
         */
        this.SubtitleIds = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Operation = 'Operation' in params ? params.Operation : null;
        this.AdaptiveDynamicStreamingDefinition = 'AdaptiveDynamicStreamingDefinition' in params ? params.AdaptiveDynamicStreamingDefinition : null;
        this.SubtitleIds = 'SubtitleIds' in params ? params.SubtitleIds : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Result type of intelligent cover generating task
 * @class
 */
class AiAnalysisTaskCoverResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of intelligent cover generating task.
         * @type {AiAnalysisTaskCoverInput || null}
         */
        this.Input = null;

        /**
         * Output of intelligent cover generating task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskCoverOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an intelligent thumbnail generation task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the smart cover task started to be executed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the smart cover task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiAnalysisTaskCoverInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiAnalysisTaskCoverOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * DescribeEventConfig request structure.
 * @class
 */
class DescribeEventConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://www.tencentcloud.com/document/product/266/33987) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Video segment containing OCR-detected suspicious content
 * @class
 */
class MediaContentReviewOcrTextSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of suspected segment in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of suspected segment in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Confidence of suspected segment.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the detected suspicious content. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of suspected keywords.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.KeywordSet = null;

        /**
         * Zone coordinates (at the pixel level) of suspected text: [x1, y1, x2, y2], i.e., the coordinates of the top-left and bottom-right corners.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

        /**
         * URL of a suspected image (which will not be permanently stored
and will be deleted after `PicUrlExpireTime`).
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Expiration time of suspected image URL in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.PicUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.KeywordSet = 'KeywordSet' in params ? params.KeywordSet : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.PicUrlExpireTime = 'PicUrlExpireTime' in params ? params.PicUrlExpireTime : null;

    }
}

/**
 * Result information of intelligent categorization
 * @class
 */
class AiAnalysisTaskClassificationOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of intelligently generated video categories
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `ClassificationSetFileUrl`.
         * @type {Array.<MediaAiAnalysisClassificationItem> || null}
         */
        this.ClassificationSet = null;

        /**
         * URL to the file for intelligently generated video categories. The file is in JSON format and has the same data structure as `ClassificationSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `ClassificationSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.ClassificationSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for intelligently generated video categories, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.ClassificationSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ClassificationSet) {
            this.ClassificationSet = new Array();
            for (let z in params.ClassificationSet) {
                let obj = new MediaAiAnalysisClassificationItem();
                obj.deserialize(params.ClassificationSet[z]);
                this.ClassificationSet.push(obj);
            }
        }
        this.ClassificationSetFileUrl = 'ClassificationSetFileUrl' in params ? params.ClassificationSetFileUrl : null;
        this.ClassificationSetFileUrlExpireTime = 'ClassificationSetFileUrlExpireTime' in params ? params.ClassificationSetFileUrlExpireTime : null;

    }
}

/**
 * Media quality inspection task information.
 * @class
 */
class QualityInspectTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media quality inspection task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task status, value: <li>PROCESSING: processing;</li> <li>FINISH: Completed.</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code, an empty string indicates success, other values indicate failure. Please refer to the [Video Processing Error Code](https://www.tencentcloud.com/document/product/266/39145) list for values.
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error information.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Media quality inspection input metadata of audio and video.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * Media quality inspection task input.
         * @type {QualityInspectTaskInput || null}
         */
        this.Input = null;

        /**
         * Media quality inspection task generates.
         * @type {QualityInspectTaskOutput || null}
         */
        this.Output = null;

        /**
         * Used for deduplication, if there has been a request with the same recognition code within seven days, this request will return an error. Maximum length of 50 characters, without or with an empty string indicates no deduplication.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Source context, used for transparent transmission of user request information. Upon completion of media quality inspection, the callback will return the value of this field, with a maximum length of 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }

        if (params.Input) {
            let obj = new QualityInspectTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new QualityInspectTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * Path cache/no cache configuration.
 * @class
 */
class CacheConfigNoCache extends  AbstractModel {
    constructor(){
        super();

        /**
         * Path cache does not cache configuration configuration switch, value: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Always return to the origin site for verification, value: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Revalidate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Revalidate = 'Revalidate' in params ? params.Revalidate : null;

    }
}

/**
 * File deleting task
 * @class
 */
class FileDeleteTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of IDs of deleted files.
         * @type {Array.<string> || null}
         */
        this.FileIdSet = null;

        /**
         * The information of the files deleted.
         * @type {Array.<FileDeleteResultItem> || null}
         */
        this.FileDeleteResultInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileIdSet = 'FileIdSet' in params ? params.FileIdSet : null;

        if (params.FileDeleteResultInfo) {
            this.FileDeleteResultInfo = new Array();
            for (let z in params.FileDeleteResultInfo) {
                let obj = new FileDeleteResultItem();
                obj.deserialize(params.FileDeleteResultInfo[z]);
                this.FileDeleteResultInfo.push(obj);
            }
        }

    }
}

/**
 * Tag key value. For details, see [Tags](https://intl.cloud.tencent.com/document/product/651?from_cn_redirect=1).
 * @class
 */
class ResourceTag extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag key.
         * @type {string || null}
         */
        this.TagKey = null;

        /**
         * Tag value.
         * @type {string || null}
         */
        this.TagValue = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TagKey = 'TagKey' in params ? params.TagKey : null;
        this.TagValue = 'TagValue' in params ? params.TagValue : null;

    }
}

/**
 * Output of full text recognition.
 * @class
 */
class AiRecognitionTaskOcrFullTextResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Full-text recognition result set
<font color=red>Note</font>: this list displays up to the first 100 results. You can get all the results from the file whose URL is `SegmentSetFileUrl`.
         * @type {Array.<AiRecognitionTaskOcrFullTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file of the full-text recognition result set. The file format is JSON, and the data structure is the same as `SegmentSet`. The file will be deleted upon the expiration time `SegmentSetFileUrlExpireTime`, instead of being stored permanently.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file of the full-text recognition result set, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new AiRecognitionTaskOcrFullTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * Result type of an intelligent highlight generating task
 * @class
 */
class AiAnalysisTaskHighlightResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for an intelligent highlight generating task.
         * @type {AiAnalysisTaskHighlightInput || null}
         */
        this.Input = null;

        /**
         * Output of an intelligent highlight generating task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskHighlightOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an intelligent highlight generation task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the smart highlight task started execution, in [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time the smart highlight task completed, in [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiAnalysisTaskHighlightInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiAnalysisTaskHighlightOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * SetVodDomainCertificate request structure.
 * @class
 */
class SetVodDomainCertificateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * The operation type of this API call, optional value:
<li>Set: Set the certificate required for the domain name HTTPS;</li>
<li>Clear: Clear the domain name HTTPS configuration, after clearing, the domain name cannot support </li>
         * @type {string || null}
         */
        this.Operation = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * [Tencent Cloud SSL](https://intl.cloud.tencent.com/document/product/400/7572?from_cn_redirect=1) uploaded certificate ID. No need to fill in this field when clearing domain HTTPS configuration
         * @type {string || null}
         */
        this.CertID = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Operation = 'Operation' in params ? params.Operation : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.CertID = 'CertID' in params ? params.CertID : null;

    }
}

/**
 * CreateRebuildMediaTemplate response structure.
 * @class
 */
class CreateRebuildMediaTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rebuild Media Template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Output of text keyword recognition.
 * @class
 */
class AiRecognitionTaskOcrWordsResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Text keyword recognition result set
<font color=red>Note</font>: this list displays up to the first 100 results. You can get all the results from the file whose URL is `SegmentSetFileUrl`.
         * @type {Array.<AiRecognitionTaskOcrWordsResultItem> || null}
         */
        this.ResultSet = null;

        /**
         * URL to the file of the text keyword recognition result set. The file format is JSON, and the data structure is the same as `SegmentSet`. The file will be deleted upon the expiration time `SegmentSetFileUrlExpireTime`, instead of being stored permanently.
         * @type {string || null}
         */
        this.ResultSetFileUrl = null;

        /**
         * Expiration time of the URL to the file of the text keyword recognition result set, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.ResultSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ResultSet) {
            this.ResultSet = new Array();
            for (let z in params.ResultSet) {
                let obj = new AiRecognitionTaskOcrWordsResultItem();
                obj.deserialize(params.ResultSet[z]);
                this.ResultSet.push(obj);
            }
        }
        this.ResultSetFileUrl = 'ResultSetFileUrl' in params ? params.ResultSetFileUrl : null;
        this.ResultSetFileUrlExpireTime = 'ResultSetFileUrlExpireTime' in params ? params.ResultSetFileUrlExpireTime : null;

    }
}

/**
 * AI-based sample management - face information.
 * @class
 */
class AiSampleFaceInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Face image ID.
         * @type {string || null}
         */
        this.FaceId = null;

        /**
         * Face image address.
         * @type {string || null}
         */
        this.Url = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FaceId = 'FaceId' in params ? params.FaceId : null;
        this.Url = 'Url' in params ? params.Url : null;

    }
}

/**
 * Image sprite information
 * @class
 */
class MediaImageSpriteItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Image sprite specification. For more information, please see [Image Sprite Parameter Template](https://intl.cloud.tencent.com/document/product/266/33480?from_cn_redirect=1#.E9.9B.AA.E7.A2.A7.E5.9B.BE.E6.A8.A1.E6.9D.BF).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Subimage height of image sprite.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Subimage width of image sprite.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Total number of subimages in each image sprite.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Address of each image sprite.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.ImageUrlSet = null;

        /**
         * Address of WebVtt file for the position-time relationship among subimages in an image sprite. The WebVtt file indicates the corresponding time points of each subimage and their coordinates in the image sprite, which is typically used by the player for implementing preview.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WebVttUrl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.ImageUrlSet = 'ImageUrlSet' in params ? params.ImageUrlSet : null;
        this.WebVttUrl = 'WebVttUrl' in params ? params.WebVttUrl : null;

    }
}

/**
 * CDN domain name information
 * @class
 */
class CDNDomainInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Deployment status.
         * @type {string || null}
         */
        this.DeployStatus = null;

        /**
         * Cname record.
         * @type {string || null}
         */
        this.Cname = null;

        /**
         * Create Time
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * CDN domain name configuration information. 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {CDNDomainConfig || null}
         */
        this.Config = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.DeployStatus = 'DeployStatus' in params ? params.DeployStatus : null;
        this.Cname = 'Cname' in params ? params.Cname : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

        if (params.Config) {
            let obj = new CDNDomainConfig();
            obj.deserialize(params.Config)
            this.Config = obj;
        }

    }
}

/**
 * DescribeEnhanceMediaTemplates response structure.
 * @class
 */
class DescribeEnhanceMediaTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The total number of records matching the filter criteria.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Detailed list of Rebuild Media templates.
         * @type {Array.<RebuildMediaTemplate> || null}
         */
        this.RebuildMediaTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.RebuildMediaTemplateSet) {
            this.RebuildMediaTemplateSet = new Array();
            for (let z in params.RebuildMediaTemplateSet) {
                let obj = new RebuildMediaTemplate();
                obj.deserialize(params.RebuildMediaTemplateSet[z]);
                this.RebuildMediaTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Image blurring parameters.
 * @class
 */
class ImageBlur extends  AbstractModel {
    constructor(){
        super();

        /**
         * The blur type. Valid values:
<li>`Gaussian`</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The radius of the blur. Value range: 1-50. This parameter is valid if `Type` is `Gaussian`.
         * @type {number || null}
         */
        this.Radius = null;

        /**
         * The standard deviation of the Gaussian distribution, which must be greater than 0. This parameter is valid if `Type` is `Gaussian`.
         * @type {number || null}
         */
        this.Sigma = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Radius = 'Radius' in params ? params.Radius : null;
        this.Sigma = 'Sigma' in params ? params.Sigma : null;

    }
}

/**
 * ModifyVodDomainAccelerateConfig request structure.
 * @class
 */
class ModifyVodDomainAccelerateConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name for acceleration setting
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Region. Valid values:
<li>`Chinese Mainland`</li>
<li>`Outside Chinese Mainland`</li>
<li>`Global`</li>
         * @type {string || null}
         */
        this.Area = null;

        /**
         * Whether to enable or disable domain name acceleration for the selected region. Valid values:
<li>`Enabled`: enable</li>
<li>`Disabled`: disable</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Area = 'Area' in params ? params.Area : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Parameters for recognition of politically sensitive content
 * @class
 */
class PoliticalConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameters for recognition of politically sensitive content in images
         * @type {PoliticalImgReviewTemplateInfoForUpdate || null}
         */
        this.ImgReviewInfo = null;

        /**
         * Parameters for ASR-based recognition of politically sensitive content
         * @type {PoliticalAsrReviewTemplateInfoForUpdate || null}
         */
        this.AsrReviewInfo = null;

        /**
         * Parameters for OCR-based recognition of politically sensitive content
         * @type {PoliticalOcrReviewTemplateInfoForUpdate || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ImgReviewInfo) {
            let obj = new PoliticalImgReviewTemplateInfoForUpdate();
            obj.deserialize(params.ImgReviewInfo)
            this.ImgReviewInfo = obj;
        }

        if (params.AsrReviewInfo) {
            let obj = new PoliticalAsrReviewTemplateInfoForUpdate();
            obj.deserialize(params.AsrReviewInfo)
            this.AsrReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new PoliticalOcrReviewTemplateInfoForUpdate();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * Result type of adaptive bitrate streaming task
 * @class
 */
class MediaProcessTaskAdaptiveDynamicStreamingResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The progress of the adaptive bitrate task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * Input of adaptive bitrate streaming task.
         * @type {AdaptiveDynamicStreamingTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of adaptive bitrate streaming task.
         * @type {AdaptiveDynamicStreamingInfoItem || null}
         */
        this.Output = null;

        /**
         * The time when the conversion to adaptive code stream task starts, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the adaptive code stream conversion task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

        if (params.Input) {
            let obj = new AdaptiveDynamicStreamingTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AdaptiveDynamicStreamingInfoItem();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Control parameter of text keyword recognition.
 * @class
 */
class OcrWordsConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of text keyword recognition task. Valid values:
<li>ON: enables text keyword recognition task;</li>
<li>OFF: disables text keyword recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Keyword filter tag, which specifies the keyword tag that needs to be returned. If this parameter is left empty or a blank value is entered, all results will be returned.
There can be up to 10 tags, each with a length limit of 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;

    }
}

/**
 * File moderation information.
 * @class
 */
class FileReviewInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Audio/Video moderation details\*.

\* This parameter only contains the information of moderation tasks initiated by the [ReviewAudioVideo](https://intl.cloud.tencent.com/document/api/266/80283?from_cn_redirect=1) or [ReviewImage](https://intl.cloud.tencent.com/document/api/266/73217?from_cn_redirect=1) API.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ReviewInfo || null}
         */
        this.MediaReviewInfo = null;

        /**
         * Thumbnail moderation details\*.

\* This parameter only contains the information of moderation tasks initiated by the [ReviewAudioVideo](https://intl.cloud.tencent.com/document/api/266/80283?from_cn_redirect=1) or [ReviewImage](https://intl.cloud.tencent.com/document/api/266/73217?from_cn_redirect=1) API.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ReviewInfo || null}
         */
        this.CoverReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MediaReviewInfo) {
            let obj = new ReviewInfo();
            obj.deserialize(params.MediaReviewInfo)
            this.MediaReviewInfo = obj;
        }

        if (params.CoverReviewInfo) {
            let obj = new ReviewInfo();
            obj.deserialize(params.CoverReviewInfo)
            this.CoverReviewInfo = obj;
        }

    }
}

/**
 * Watermarking template details
 * @class
 */
class WatermarkTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of watermarking template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Watermark type. Valid values:
<li>image: image watermark;</li>
<li>text: text watermark.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Watermarking template name.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Horizontal position of the origin of the watermark image relative to the origin of the video.
<li>If the string ends in %, the `Left` edge of the watermark will be at the position of the specified percentage of the video width; for example, `10%` means that the `Left` edge is at 10% of the video width;</li>
<li>If the string ends in px, the `Left` edge of the watermark will be at the position of the specified px of the video width; for example, `100px` means that the `Left` edge is at the position of 100 px.</li>
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * Vertical position of the origin of the watermark image relative to the origin of the video.
<li>If the string ends in %, the `Top` edge of the watermark will beat the position of the specified percentage of the video height; for example, `10%` means that the `Top` edge is at 10% of the video height;</li>
<li>If the string ends in px, the `Top` edge of the watermark will be at the position of the specified px of the video height; for example, `100px` means that the `Top` edge is at the position of 100 px.</li>
         * @type {string || null}
         */
        this.YPos = null;

        /**
         * Image watermarking template. This field is valid only when `Type` is `image`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {ImageWatermarkTemplate || null}
         */
        this.ImageTemplate = null;

        /**
         * Text watermarking template. This field is valid only when `Type` is `text`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {TextWatermarkTemplateInput || null}
         */
        this.TextTemplate = null;

        /**
         * SVG watermarking template. This field is valid when `Type` is `svg`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {SvgWatermarkInput || null}
         */
        this.SvgTemplate = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Origin position. Valid values:
<li>topLeft: the origin of coordinates is in the top-left corner of the video, and the origin of the watermark is in the top-left corner of the image or text;</li>
<li>topRight: the origin of coordinates is in the top-right corner of the video, and the origin of the watermark is in the top-right corner of the image or text;</li>
<li>bottomLeft: the origin of coordinates is in the bottom-left corner of the video, and the origin of the watermark is in the bottom-left corner of the image or text;</li>
<li>bottomRight: the origin of coordinates is in the bottom-right corner of the video, and the origin of the watermark is in the bottom-right corner of the image or text.</li>
         * @type {string || null}
         */
        this.CoordinateOrigin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;

        if (params.ImageTemplate) {
            let obj = new ImageWatermarkTemplate();
            obj.deserialize(params.ImageTemplate)
            this.ImageTemplate = obj;
        }

        if (params.TextTemplate) {
            let obj = new TextWatermarkTemplateInput();
            obj.deserialize(params.TextTemplate)
            this.TextTemplate = obj;
        }

        if (params.SvgTemplate) {
            let obj = new SvgWatermarkInput();
            obj.deserialize(params.SvgTemplate)
            this.SvgTemplate = obj;
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.CoordinateOrigin = 'CoordinateOrigin' in params ? params.CoordinateOrigin : null;

    }
}

/**
 * Output type of cover generating task
 * @class
 */
class CoverBySnapshotTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Cover URL.
         * @type {string || null}
         */
        this.CoverUrl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CoverUrl = 'CoverUrl' in params ? params.CoverUrl : null;

    }
}

/**
 * ModifyQualityInspectTemplate response structure.
 * @class
 */
class ModifyQualityInspectTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeProcedureTemplates request structure.
 * @class
 */
class DescribeProcedureTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name filter of task flow template. Array length limit: 100.
         * @type {Array.<string> || null}
         */
        this.Names = null;

        /**
         * Filter of task flow template types. Valid values:
<li>Preset: preset task flow template;</li>
<li>Custom: custom task flow template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Names = 'Names' in params ? params.Names : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Just In Time transcoding video template update configuration.
 * @class
 */
class VideoConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * The maximum value of the video stream width (or long side), value range: 0 and [128, 1920], unit: px. 
<li>When Width and Height are both 0, the resolution is from the same source;</li>
<li>When Width is 0 and Height is non-0, Width is scaled proportionally;</li>
< li>When Width is non-0 and Height is 0, the Height is scaled proportionally; </li>
<li>When both Width and Height are non-0, the resolution is specified by the user. </li>

Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The maximum value of the video stream height (or short side), value range: 0 and [128, 1920], unit: px. 
<li>When Width and Height are both 0, the resolution is from the same source;</li>
<li>When Width is 0 and Height is non-0, Width is scaled proportionally;</li>
< li>When Width is non-0 and Height is 0, the Height is scaled proportionally; </li>
<li>When both Width and Height are non-0, the resolution is specified by the user. </li>

Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaptive, optional values:
<li>open: open, at this time, Width represents the long side of the video, and Height represents the short side of the video;</li>
<li>close: closed, at this time , Width represents the width of the video, and Height represents the height of the video. </li>

Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * The bit rate of the video stream, value range: 0 and [128, 10000], unit: kbps. 
When the value is 0, it means that the video bitrate remains the same as the original video.
         * @type {number || null}
         */
        this.Bitrate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;

    }
}

/**
 * ModifyAdaptiveDynamicStreamingTemplate request structure.
 * @class
 */
class ModifyAdaptiveDynamicStreamingTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of adaptive bitrate streaming template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The adaptive bitrate streaming format. Valid values:
<li>HLS</li>
<li>MPEG-DASH</li>
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Whether to prohibit transcoding video from low bitrate to high bitrate. Valid values:
<li>0: no,</li>
<li>1: yes.</li>
         * @type {number || null}
         */
        this.DisableHigherVideoBitrate = null;

        /**
         * Whether to prohibit transcoding from low resolution to high resolution. Valid values:
<li>0: no,</li>
<li>1: yes.</li>
         * @type {number || null}
         */
        this.DisableHigherVideoResolution = null;

        /**
         * Parameter information of input stream for adaptive bitrate streaming. Up to 10 streams can be input.
Note: the frame rate of all streams must be the same; otherwise, the frame rate of the first stream will be used as the output frame rate.
         * @type {Array.<AdaptiveStreamTemplate> || null}
         */
        this.StreamInfos = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * The segment type. This parameter is valid only if `Format` is `HLS`. Valid values:
<li>ts: TS segment</li>
<li>fmp4: fMP4 segment</li>
         * @type {string || null}
         */
        this.SegmentType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.DisableHigherVideoBitrate = 'DisableHigherVideoBitrate' in params ? params.DisableHigherVideoBitrate : null;
        this.DisableHigherVideoResolution = 'DisableHigherVideoResolution' in params ? params.DisableHigherVideoResolution : null;

        if (params.StreamInfos) {
            this.StreamInfos = new Array();
            for (let z in params.StreamInfos) {
                let obj = new AdaptiveStreamTemplate();
                obj.deserialize(params.StreamInfos[z]);
                this.StreamInfos.push(obj);
            }
        }
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.SegmentType = 'SegmentType' in params ? params.SegmentType : null;

    }
}

/**
 * ForbidMediaDistribution request structure.
 * @class
 */
class ForbidMediaDistributionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of media files. Up to 20 ones can be submitted at a time.
         * @type {Array.<string> || null}
         */
        this.FileIds = null;

        /**
         * forbid: forbids, recover: unblocks.
         * @type {string || null}
         */
        this.Operation = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileIds = 'FileIds' in params ? params.FileIds : null;
        this.Operation = 'Operation' in params ? params.Operation : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DescribeAIRecognitionTemplates response structure.
 * @class
 */
class DescribeAIRecognitionTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of video content recognition template details.
         * @type {Array.<AIRecognitionTemplateItem> || null}
         */
        this.AIRecognitionTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.AIRecognitionTemplateSet) {
            this.AIRecognitionTemplateSet = new Array();
            for (let z in params.AIRecognitionTemplateSet) {
                let obj = new AIRecognitionTemplateItem();
                obj.deserialize(params.AIRecognitionTemplateSet[z]);
                this.AIRecognitionTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Origin access authentication for S3 bucket.
 * @class
 */
class AwsPrivateAccess extends  AbstractModel {
    constructor(){
        super();

        /**
         * AWS S3 return-to-origin authentication configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Access ID.
         * @type {string || null}
         */
        this.AccessKey = null;

        /**
         * Key.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * Region.
         * @type {string || null}
         */
        this.Region = null;

        /**
         * BucketName.
         * @type {string || null}
         */
        this.Bucket = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.AccessKey = 'AccessKey' in params ? params.AccessKey : null;
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.Region = 'Region' in params ? params.Region : null;
        this.Bucket = 'Bucket' in params ? params.Bucket : null;

    }
}

/**
 * EditMedia response structure.
 * @class
 */
class EditMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID of the video editing. You can use this ID to query the status of the editing task (task type is EditMedia).
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameters for OCR-based recognition of politically sensitive content
 * @class
 */
class PoliticalOcrReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable OCR-based recognition of politically sensitive content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Output media file information of a video processing task.
 * @class
 */
class TaskOutputMediaInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * 
         * @type {MediaBasicInfo || null}
         */
        this.MediaBasicInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.MediaBasicInfo) {
            let obj = new MediaBasicInfo();
            obj.deserialize(params.MediaBasicInfo)
            this.MediaBasicInfo = obj;
        }

    }
}

/**
 * ProcessMediaByUrl request structure.
 * @class
 */
class ProcessMediaByUrlRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * This API is<font color='red'>disused</font>. You are advised to use an alternative API. For more information, see API overview.
         * @type {MediaInputInfo || null}
         */
        this.InputInfo = null;

        /**
         * Information of COS path to output file.
         * @type {MediaOutputInfo || null}
         */
        this.OutputInfo = null;

        /**
         * Type parameter of video content audit task.
         * @type {AiContentReviewTaskInput || null}
         */
        this.AiContentReviewTask = null;

        /**
         * Video content analysis task parameter.
         * @type {AiAnalysisTaskInput || null}
         */
        this.AiAnalysisTask = null;

        /**
         * Type parameter of video content recognition task.
         * @type {AiRecognitionTaskInput || null}
         */
        this.AiRecognitionTask = null;

        /**
         * Task flow priority. The higher the value, the higher the priority. Value range: -10-10. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * Notification mode for task flow status change. Valid values: Finish, Change, None. If this parameter is left empty, `Finish` will be used.
         * @type {string || null}
         */
        this.TasksNotifyMode = null;

        /**
         * The source context which is used to pass through the user request information. The task flow status change callback will return the value of this field. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * Used to identify duplicate requests. After you send a request, if any request with the same `SessionId` has already been sent in the last three days (72 hours), an error message will be returned. `SessionId` contains up to 50 characters. If this parameter is not carried or is an empty string, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.InputInfo) {
            let obj = new MediaInputInfo();
            obj.deserialize(params.InputInfo)
            this.InputInfo = obj;
        }

        if (params.OutputInfo) {
            let obj = new MediaOutputInfo();
            obj.deserialize(params.OutputInfo)
            this.OutputInfo = obj;
        }

        if (params.AiContentReviewTask) {
            let obj = new AiContentReviewTaskInput();
            obj.deserialize(params.AiContentReviewTask)
            this.AiContentReviewTask = obj;
        }

        if (params.AiAnalysisTask) {
            let obj = new AiAnalysisTaskInput();
            obj.deserialize(params.AiAnalysisTask)
            this.AiAnalysisTask = obj;
        }

        if (params.AiRecognitionTask) {
            let obj = new AiRecognitionTaskInput();
            obj.deserialize(params.AiRecognitionTask)
            this.AiRecognitionTask = obj;
        }
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.TasksNotifyMode = 'TasksNotifyMode' in params ? params.TasksNotifyMode : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * ModifyAIRecognitionTemplate response structure.
 * @class
 */
class ModifyAIRecognitionTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Video stripping task configuration information.
 * @class
 */
class SplitMediaTaskConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * The offset time of the start of video stripping, unit: seconds. 
<li>Leave it blank or fill in 0, which means that the transcoded video starts from the starting position of the original video;</li>
<li>When the value is greater than 0 (assumed to be n), it means that after transcoding The video starts from the n-th second position of the original video;</li>
<li>When the value is less than 0 (assumed to be -n), it means that the transcoded video starts from the position n seconds before the end of the original video. </li>
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * Offset time at the end of video stripping, unit: seconds. 
<li>Leave it blank or fill it in with 0, which means that the transcoded video will continue until the end of the original video;</li>
<li>When the value is greater than 0 (assumed to be n), it means that the transcoded video will continue until the end of the original video. The video continues until the nth second of the original video and terminates;</li>
<li>When the value is less than 0 (assumed to be -n), it means that the transcoded video continues until n seconds before the end of the original video. </li>
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Task flow template name, if you want Fill in when executing the task flow on the generated new video.
         * @type {string || null}
         */
        this.ProcedureName = null;

        /**
         * The video is split into strips to output information.
         * @type {SplitMediaOutputConfig || null}
         */
        this.OutputConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.ProcedureName = 'ProcedureName' in params ? params.ProcedureName : null;

        if (params.OutputConfig) {
            let obj = new SplitMediaOutputConfig();
            obj.deserialize(params.OutputConfig)
            this.OutputConfig = obj;
        }

    }
}

/**
 * Information of a playback statistics file
 * @class
 */
class PlayStatFileInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Date of playback statistics in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.Date = null;

        /**
         * URL of a playback statistics file, including the following contents:
<li> date: playback date</li>
<li> file_id: video file ID</li>
<li> ip_count: number of client IPs after deduplication</li>
<li> flux: playback traffic in bytes</li>
<li> play_times: total playback times</li>
<li> pc_play_times: playback times on PC clients</li>
<li> mobile_play_times: playback times on mobile clients</li>
<li> iphone_play_times: playback times on iPhone</li>
<li> android_play_times: playback times on Android</li>
<li> host_name: domain name</li>
         * @type {string || null}
         */
        this.Url = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Date = 'Date' in params ? params.Date : null;
        this.Url = 'Url' in params ? params.Url : null;

    }
}

/**
 * ModifyMediaInfo request structure.
 * @class
 */
class ModifyMediaInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Media filename, which can contain up to 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Media file description, which can contain up to 128 characters.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Media file category ID.
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Media file expiration time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). The value `9999-12-31T23:59:59Z` indicates that the media file never expires. After the expiration, the media file and its related resources (such as transcoding results and image sprites) will be permanently deleted.
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * String generated by [Base64-encoding](https://tools.ietf.org/html/rfc4648) the video cover image file (such as .jpeg or .png file). Only .gif, .jpeg, and .png image formats are supported.
         * @type {string || null}
         */
        this.CoverData = null;

        /**
         * Set of video timestamps to be added. If a timestamp already exists at an offset time point, it will be overwritten. Up to 100 timestamps can be added to one media file. In the same request, the time offset parameters of `AddKeyFrameDescs` must be different from those of `DeleteKeyFrameDescs`.
         * @type {Array.<MediaKeyFrameDescItem> || null}
         */
        this.AddKeyFrameDescs = null;

        /**
         * Time offset of the set of video timestamps to be deleted in seconds. In the same request, the time offset parameters of `AddKeyFrameDescs` must be different from those of `DeleteKeyFrameDescs`.
         * @type {Array.<number> || null}
         */
        this.DeleteKeyFrameDescs = null;

        /**
         * The value `1` indicates to delete all timestamps in the video. Other values are meaningless.
In the same request, `ClearKeyFrameDescs` and `AddKeyFrameDescs` cannot be present at the same time.
         * @type {number || null}
         */
        this.ClearKeyFrameDescs = null;

        /**
         * The tags to add. Each file can have up to 16 tags. A tag can contain at most 32 characters. You cannot include the same tag in `AddTags` and `DeleteTags` at the same time.
         * @type {Array.<string> || null}
         */
        this.AddTags = null;

        /**
         * Set of tags to be deleted. In the same request, the parameters of `AddTags` must be different from those of `DeleteTags`.
         * @type {Array.<string> || null}
         */
        this.DeleteTags = null;

        /**
         * The value `1` indicates to delete all tags of the media file. Other values are meaningless.
In the same request, `ClearTags` and `AddTags` cannot be present at the same time.
         * @type {number || null}
         */
        this.ClearTags = null;

        /**
         * Information of multiple subtitles to be added. A single media file can have up to 16 subtitles. In the same request, the subtitle IDs specified in `AddSubtitles` must be different from those in `DeleteSubtitleIds`.
         * @type {Array.<MediaSubtitleInput> || null}
         */
        this.AddSubtitles = null;

        /**
         * Unique IDs of the subtitles to be deleted. In the same request, the subtitle IDs specified in `AddSubtitles` must be different from those in `DeleteSubtitleIds`.
         * @type {Array.<string> || null}
         */
        this.DeleteSubtitleIds = null;

        /**
         * The value `1` indicates to delete all subtitle information of the media file. Other values are meaningless.
`ClearSubtitles` and `AddSubtitles` cannot co-exist in the same request.
         * @type {number || null}
         */
        this.ClearSubtitles = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.CoverData = 'CoverData' in params ? params.CoverData : null;

        if (params.AddKeyFrameDescs) {
            this.AddKeyFrameDescs = new Array();
            for (let z in params.AddKeyFrameDescs) {
                let obj = new MediaKeyFrameDescItem();
                obj.deserialize(params.AddKeyFrameDescs[z]);
                this.AddKeyFrameDescs.push(obj);
            }
        }
        this.DeleteKeyFrameDescs = 'DeleteKeyFrameDescs' in params ? params.DeleteKeyFrameDescs : null;
        this.ClearKeyFrameDescs = 'ClearKeyFrameDescs' in params ? params.ClearKeyFrameDescs : null;
        this.AddTags = 'AddTags' in params ? params.AddTags : null;
        this.DeleteTags = 'DeleteTags' in params ? params.DeleteTags : null;
        this.ClearTags = 'ClearTags' in params ? params.ClearTags : null;

        if (params.AddSubtitles) {
            this.AddSubtitles = new Array();
            for (let z in params.AddSubtitles) {
                let obj = new MediaSubtitleInput();
                obj.deserialize(params.AddSubtitles[z]);
                this.AddSubtitles.push(obj);
            }
        }
        this.DeleteSubtitleIds = 'DeleteSubtitleIds' in params ? params.DeleteSubtitleIds : null;
        this.ClearSubtitles = 'ClearSubtitles' in params ? params.ClearSubtitles : null;

    }
}

/**
 * The information of a digital watermark.
 * @class
 */
class TraceWatermarkInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to use digital watermarks. This parameter is required. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * This parameter has been deprecated.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Parameters for ASR-based recognition of pornographic content
 * @class
 */
class PornAsrReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable ASR-based recognition of pornographic content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * The suspicious segment detected.
 * @class
 */
class ReviewAudioVideoSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * The start time offset (seconds) of the segment.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * The end time offset (seconds) of the segment.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * The confidence score of the segment.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * The processing suggestion for the segment. Valid values:
<li>review: The content may be non-compliant. Please review it.</li>
<li>block: The content is non-compliant. We recommend you block it.</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The most likely label for the segment. Valid values:
<li>Porn</li>
<li>Terrorism</li>
         * @type {string || null}
         */
        this.Label = null;

        /**
         * The sublabel for the segment. This parameter is valid only if `Form` is `Image` or `Voice`.
Valid values when `Form` is `Image` and `Label` is `Porn`:
<li>porn</li>
<li>vulgar</li>

Valid values when `Form` is `Image` and `Label` is `Terrorism`:
<li>guns</li>
<li>bloody</li>
<li>banners</li>
<li>scenario (terrorist scenes)</li>
<li>explosion</li>

Valid values when `Form` is `Voice` and `Label` is `Porn`:
<li>moan</li>
         * @type {string || null}
         */
        this.SubLabel = null;

        /**
         * The format of the suspicious segment detected. Valid values:
<li>Image</li>
<li>OCR</li>
<li>ASR</li>
<li>Voice</li>
         * @type {string || null}
         */
        this.Form = null;

        /**
         * The pixel coordinates ([x1, y1, x2, y2]) of the top-left corner and bottom-right corner of the suspicious text. This parameter is valid only if `Form` is `OCR`.
<font color=red>Note</font>: This parameter is not supported currently.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

        /**
         * The content of the suspicious text detected. This parameter is valid only if `Form` is `OCR` or `ASR`.
         * @type {string || null}
         */
        this.Text = null;

        /**
         * The keywords that match the suspicious text. This parameter is valid only if `Form` is `OCR` or `ASR`.
         * @type {Array.<string> || null}
         */
        this.KeywordSet = null;

        /**
         * The URL of a suspected image (which will be deleted
 after `PicUrlExpireTime`).
         * @type {string || null}
         */
        this.Url = null;

        /**
         * The expiration time of the suspected image URL in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.PicUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;
        this.SubLabel = 'SubLabel' in params ? params.SubLabel : null;
        this.Form = 'Form' in params ? params.Form : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;
        this.Text = 'Text' in params ? params.Text : null;
        this.KeywordSet = 'KeywordSet' in params ? params.KeywordSet : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.PicUrlExpireTime = 'PicUrlExpireTime' in params ? params.PicUrlExpireTime : null;

    }
}

/**
 * Result information of animated image generating in VOD file
 * @class
 */
class MediaAnimatedGraphicsInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Result information of animated image generating task
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaAnimatedGraphicsItem> || null}
         */
        this.AnimatedGraphicsSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.AnimatedGraphicsSet) {
            this.AnimatedGraphicsSet = new Array();
            for (let z in params.AnimatedGraphicsSet) {
                let obj = new MediaAnimatedGraphicsItem();
                obj.deserialize(params.AnimatedGraphicsSet[z]);
                this.AnimatedGraphicsSet.push(obj);
            }
        }

    }
}

/**
 * DescribeSnapshotByTimeOffsetTemplates request structure.
 * @class
 */
class DescribeSnapshotByTimeOffsetTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique ID filter of time point screencapturing templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Paged offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Template type filter. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * DescribeCDNDomains request structure.
 * @class
 */
class DescribeCDNDomainsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of domain. If this field is left blank, all domain information will be listed by default.
         * @type {Array.<string> || null}
         */
        this.Domains = null;

        /**
         * The maximum number of returned results for pagination fetching. Default value: 20.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * The starting offset of paged pull. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domains = 'Domains' in params ? params.Domains : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * The video quality remastering parameters.
 * @class
 */
class RepairInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable video quality remastering. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The video quality remastering type. This parameter is valid only if `Switch` is `ON`.
<li>`weak`</li>
<li>`normal`</li>
<li>`strong`</li>
Default value: `weak`.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * CDN log information
 * @class
 */
class CdnLogInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Log date in the format of `yyyy-MM-dd`, such as 2018-03-01.
         * @type {string || null}
         */
        this.Date = null;

        /**
         * Log name in the format of date and time-domain name,
such as 2018120101-test.vod2.mqcloud.com.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Log download link, which is valid for 24 hours.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Log start time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=)
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * Log end time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=)
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Date = 'Date' in params ? params.Date : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * The information of a transcoding (bitrate reduction) task.
 * @class
 */
class ReduceMediaBitrateTranscodeResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The error code. An empty string indicates the task is successful; other values indicate that the task failed. For details, see [Video processing error codes](https://intl.cloud.tencent.com/document/product/266/39145?lang=en&pg=#video-processing).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * The error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The input of a transcoding task.
         * @type {TranscodeTaskInput || null}
         */
        this.Input = null;

        /**
         * The output of a transcoding task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MediaTranscodeItem || null}
         */
        this.Output = null;

        /**
         * The transcoding progress. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The start time of the transcoding task, in [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The end time of the transcoding task, in [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new TranscodeTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new MediaTranscodeItem();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Subtitle information
 * @class
 */
class MediaSubtitleInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Subtitle information list
         * @type {Array.<MediaSubtitleItem> || null}
         */
        this.SubtitleSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SubtitleSet) {
            this.SubtitleSet = new Array();
            for (let z in params.SubtitleSet) {
                let obj = new MediaSubtitleItem();
                obj.deserialize(params.SubtitleSet[z]);
                this.SubtitleSet.push(obj);
            }
        }

    }
}

/**
 * Input of full speech recognition.
 * @class
 */
class AiRecognitionTaskAsrFullTextResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Full speech recognition template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 *  
 * @class
 */
class MediaMiniProgramReviewInfoItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Template ID, which is the ID of the transcoding template corresponding to the video published on WeChat Mini Program. 0 represents the source video.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Video metadata.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * Video playback address for WeChat Mini Program audit
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Status of video release on WeChat Mini Program
<li>Pass: succeeded.</li>
<li>Rejected: rejected.</li>
         * @type {string || null}
         */
        this.ReviewResult = null;

        /**
         * WeChat Mini Program audit element.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaMiniProgramReviewElem> || null}
         */
        this.ReviewSummary = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.ReviewResult = 'ReviewResult' in params ? params.ReviewResult : null;

        if (params.ReviewSummary) {
            this.ReviewSummary = new Array();
            for (let z in params.ReviewSummary) {
                let obj = new MediaMiniProgramReviewElem();
                obj.deserialize(params.ReviewSummary[z]);
                this.ReviewSummary.push(obj);
            }
        }

    }
}

/**
 * Video processing task statistics.
 * @class
 */
class TaskStatData extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task Type.
<li> Transcoding: Normal transcoding</li>
<li> Transcoding-TESHD: Extremely fast high-definition transcoding</li>
<li> Editing: Video editing</li>
< li> Editing-TESHD: Extremely fast high-definition video editing</li>
<li> AdaptiveBitrateStreaming: Adaptive bitrate streaming</li>
<li> ContentAudit: Content audit</li>
<li> ContentRecognition: Content Recognize</li>
<li> RemoveWatermark: Remove watermark</li>
<li> ExtractTraceWatermark: Extract watermark</li>
<li> AddTraceWatermark: Add watermark</li>
<li> RebuildMedia : Audio and video quality reborn</li>
<li> QualityInspect: Media quality inspection</li>
<li>Transcode: transcoding, including normal transcoding, ultra-fast high-definition and video editing (not recommended)</li>
<li>Transcode: li>
         * @type {string || null}
         */
        this.TaskType = null;

        /**
         * Task statistics overview (usage unit: second).
         * @type {Array.<TaskStatDataItem> || null}
         */
        this.Summary = null;

        /**
         * The usage statistics for different task types.
Transcoding:
<li>`Remuxing`</li>
<li>`Audio` (audio transcoding)</li>
<li>`Standard.H264.SD`</li>
<li>`Standard.H264.HD`</li>
<li>`Standard.H264.FHD`</li>
<li>`Standard.H264.2K`</li>
<li>`Standard.H264.4K`</li>
<li>`Standard.H265.SD`</li>
<li>`Standard.H265.HD`</li>
<li>`Standard.H265.FHD`</li>
<li>`Standard.H265.2K`</li>
<li>`Standard.H265.4K`</li>
<li>`TESHD-10.H264.SD` (H.264 SD Top Speed Codec transcoding)</li>
<li>`TESHD-10.H264.HD` (H.264 HD Top Speed Codec transcoding)</li>
<li>`TESHD-10.H264.FHD` (H.264 FHD Top Speed Codec transcoding)</li>
<li>`TESHD-10.H264.2K` (H.264 2K Top Speed Codec transcoding)</li>
<li>`TESHD-10.H264.4K` (H.264 4K Top Speed Codec transcoding)</li>
<li>`TESHD-10.H265.SD` (H.265 SD Top Speed Codec transcoding)</li>
<li>`TESHD-10.H265.HD` (H.265 HD Top Speed Codec transcoding)</li>
<li>`TESHD-10.H265.FHD` (H.265 FHD Top Speed Codec transcoding)</li>
<li>`TESHD-10.H265.2K` (H.265 2K Top Speed Codec transcoding)</li>
<li>`TESHD-10.H265.4K` (H.265 4K Top Speed Codec transcoding)</li>
<li>`Edit.Audio`</li>
<li>`Edit.H264.SD` (H.264 SD video editing)</li>
<li>`Edit.H264.HD` (H.264 HD video editing)</li>
<li>`Edit.H264.FHD` (H.264 FHD video editing)</li>
<li>`Edit.H264.2K` (H.264 2K video editing)</li>
<li>`Edit.H264.4K` (H.264 4K video editing)</li>
<li>`Edit.H265.SD` (H.265 SD video editing)</li>
<li>`Edit.H265.HD` (H.265 HD video editing)</li>
<li>`Edit.H265.FHD` (H.265 FHD video editing)</li>
<li>`Edit.H265.2K` (H.265 2K video editing)</li>
<li>`Edit.H265.4K` (H.265 4K video editing)</li>
<li>`Edit.TESHD-10.H264.SD` (H.264 SD Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H264.HD` (H.264 HD Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H264.FHD` (H.264 FHD Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H264.2K` (H.264 2K Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H264.4K` (H.264 4K Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H265.SD` (H.265 SD Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H265.HD` (H.265 HD Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H265.FHD` (H.265 FHD Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H265.2K` (H.265 2K Top Speed Codec video editing)</li>
<li>`Edit.TESHD-10.H265.4K` (H.265 4K Top Speed Codec video editing)</li>
The watermark removal/remaster specifications. Valid values:
<li>`480P` (short side ≤ 480 px)</li>
<li>`720P` (short side ≤ 720 px)</li>
<li>`1080P` (short side ≤ 1080 px)</li>
<li>`2K` (short side ≤ 1440 px)</li>
<li>`4K` (short side ≤ 2160 px)</li>
<li>`8K` (short side ≤ 4320 px)</li>
<li>`audio`</li>
         * @type {Array.<SpecificationDataItem> || null}
         */
        this.Details = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskType = 'TaskType' in params ? params.TaskType : null;

        if (params.Summary) {
            this.Summary = new Array();
            for (let z in params.Summary) {
                let obj = new TaskStatDataItem();
                obj.deserialize(params.Summary[z]);
                this.Summary.push(obj);
            }
        }

        if (params.Details) {
            this.Details = new Array();
            for (let z in params.Details) {
                let obj = new SpecificationDataItem();
                obj.deserialize(params.Details[z]);
                this.Details.push(obj);
            }
        }

    }
}

/**
 * CreateVodDomain request structure.
 * @class
 */
class CreateVodDomainRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name to add to VOD. Note: a wildcard domain name is not supported.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Region to enable acceleration. Valid values:
<li>`Chinese Mainland`</li>
<li>`Outside Chinese Mainland`</li>
<li>`Global`</li>
If `AccelerateArea` is not specified, VOD will enable acceleration in or outside Chinese mainland based on the regional information a user has configured with Tencent Cloud.
         * @type {string || null}
         */
        this.AccelerateArea = null;

        /**
         * Domain type. Valid values:
<li>`VOD`: Domain name distributed using the VOD product;</li> <li>`EdgeOne`: Domain name distributed using the EdgeOne product.</li>default value: VOD. 
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.AccelerateArea = 'AccelerateArea' in params ? params.AccelerateArea : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Control parameter of full text recognition task
 * @class
 */
class OcrFullTextConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of full text recognition task. Valid values:
<li>ON: enables intelligent full text recognition task;</li>
<li>OFF: disables intelligent full text recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * DeleteRoundPlay request structure.
 * @class
 */
class DeleteRoundPlayRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique identifier of the playlist.
         * @type {string || null}
         */
        this.RoundPlayId = null;

        /**
         * <B>VOD [subapplication](https://intl.cloud.tencent.com/document/product/266/14574?from_cn_redirect=1) id. starting from december 25, 2023, if you want to access resources in the vod application (whether it is the default application or a newly created application), you must enter the application id in this field.</b>.
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RoundPlayId = 'RoundPlayId' in params ? params.RoundPlayId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Super resolution configuration.
 * @class
 */
class SuperResolutionInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable super resolution. Valid values:
<li>ON</li>
<li>`OFF`</li>
If super resolution is enabled, the output resolution will double.
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The super resolution type. This parameter is valid only if `Switch` is `ON`. Valid values:
<li>`lq`: For low-resolution videos with obvious noise</li>
<li>`hq`: For high-resolution videos</li>
Default value: `lq`.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The ratio of the target resolution to the original resolution. Valid values: `2`.
Default value: `2`.
         * @type {number || null}
         */
        this.Size = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Size = 'Size' in params ? params.Size : null;

    }
}

/**
 * Image sprite information of VOD file
 * @class
 */
class MediaImageSpriteInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information set of image sprites with specified specifications. Each element represents a set of image sprites with the same specification.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaImageSpriteItem> || null}
         */
        this.ImageSpriteSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ImageSpriteSet) {
            this.ImageSpriteSet = new Array();
            for (let z in params.ImageSpriteSet) {
                let obj = new MediaImageSpriteItem();
                obj.deserialize(params.ImageSpriteSet[z]);
                this.ImageSpriteSet.push(obj);
            }
        }

    }
}

/**
 * EnhanceMediaQuality request structure.
 * @class
 */
class EnhanceMediaQualityRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file ID, that is, the globally unique identifier of the file on VOD, which is assigned by the VOD backend after successful upload. This field can be obtained from [video upload completion event notification](https://intl.cloud.tencent.com/document/product/266/7830?from_cn_redirect=1) or [vod console](https://console.cloud.tencent.com/vod/media).
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Remaster template ID, please contact Tencent Cloud for details
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>VOD [Subapplication](https://intl.cloud.tencent.com/document/product/266/14574?from_cn_redirect=1) ID. If you want to access resources in the Subapplication, enter the Subapplication ID in this field; otherwise, you do not need to fill in this field.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Configuration of media files after Remaster
         * @type {EnhanceMediaQualityOutputConfig || null}
         */
        this.OutputConfig = null;

        /**
         * The identification code used for deduplication. If there has been a request with the same identification code within three days, this request will return an error. Up to 50 characters, without or with an empty string means no deduplication
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Source context, used to pass through user request information, Remaster completion callback will return this field value, up to 1000 characters
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The priority of the task, the higher the value, the higher the priority, the range is -10 to 10, not filled in means 0
         * @type {number || null}
         */
        this.TasksPriority = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

        if (params.OutputConfig) {
            let obj = new EnhanceMediaQualityOutputConfig();
            obj.deserialize(params.OutputConfig)
            this.OutputConfig = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;

    }
}

/**
 * 
 * @class
 */
class PersistenceCompleteTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * File ID of new media generated by persistence.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The source of persistence.
<li>SimpleHlsClip: from SimpleHlsClip API;</li>
<li>FastEditMedia: from FastEditMedia API;</li>
<li>LiveRealTimeClip: from LiveRealTimeClip API.</li>
         * @type {string || null}
         */
        this.PersistenceSource = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.PersistenceSource = 'PersistenceSource' in params ? params.PersistenceSource : null;

    }
}

/**
 * Face recognition result segment
 * @class
 */
class AiRecognitionTaskFaceSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of recognized segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of recognition segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Confidence of recognized segment. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Zone coordinates of recognition result. The array contains four elements: [x1,y1,x2,y2], i.e., the horizontal and vertical coordinates of the top-left and bottom-right corners.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;

    }
}

/**
 * ProcessMedia response structure.
 * @class
 */
class ProcessMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateWordSamples response structure.
 * @class
 */
class CreateWordSamplesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameter of intelligent categorization task
 * @class
 */
class ClassificationConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of intelligent categorization task. Valid values:
<li>ON: enables intelligent categorization task;</li>
<li>OFF: disables intelligent categorization task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * DeleteAdaptiveDynamicStreamingTemplate response structure.
 * @class
 */
class DeleteAdaptiveDynamicStreamingTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyHeadTailTemplate response structure.
 * @class
 */
class ModifyHeadTailTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateWordSamples request structure.
 * @class
 */
class CreateWordSamplesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>Keyword usage. Valid values:</b>
1. Recognition.Ocr: OCR-based content recognition
2. Recognition.Asr: ASR-based content recognition
3. Review.Ocr: OCR-based inappropriate information recognition
4. Review.Asr: ASR-based inappropriate information recognition
<b>Valid values can also be:</b>
5. Recognition: ASR- and OCR-based content recognition; equivalent to 1+2
6. Review: ASR- and OCR-based inappropriate information recognition; equivalent to 3+4
7. All: ASR- and OCR-based content recognition and inappropriate information recognition; equivalent to 1+2+3+4
         * @type {Array.<string> || null}
         */
        this.Usages = null;

        /**
         * Keyword. Array length limit: 100.
         * @type {Array.<AiSampleWordInfo> || null}
         */
        this.Words = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Usages = 'Usages' in params ? params.Usages : null;

        if (params.Words) {
            this.Words = new Array();
            for (let z in params.Words) {
                let obj = new AiSampleWordInfo();
                obj.deserialize(params.Words[z]);
                this.Words.push(obj);
            }
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Browser cache rule configuration, which is used to set the default value of MaxAge and is disabled by default.
 * @class
 */
class MaxAge extends  AbstractModel {
    constructor(){
        super();

        /**
         * MaxAge rule
         * @type {Array.<MaxAgeRule> || null}
         */
        this.MaxAgeRules = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MaxAgeRules) {
            this.MaxAgeRules = new Array();
            for (let z in params.MaxAgeRules) {
                let obj = new MaxAgeRule();
                obj.deserialize(params.MaxAgeRules[z]);
                this.MaxAgeRules.push(obj);
            }
        }

    }
}

/**
 * Control parameters for video blur detection.
 * @class
 */
class BlurConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video screen blur detection switch, optional values:
<li>ON: turn on;</li>
<li>OFF: turn off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Parameters for ASR-based recognition of politically sensitive content
 * @class
 */
class PoliticalAsrReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable ASR-based recognition of politically sensitive content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Type of a release on WeChat Mini Program task
 * @class
 */
class WechatMiniProgramPublishTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the transcoding template corresponding to the published video. 0 represents the source video.
         * @type {number || null}
         */
        this.SourceDefinition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SourceDefinition = 'SourceDefinition' in params ? params.SourceDefinition : null;

    }
}

/**
 * AI-based sample management - face data operation.
 * @class
 */
class AiSampleFaceOperation extends  AbstractModel {
    constructor(){
        super();

        /**
         * Operation type. Valid values: add, delete, reset. The `reset` operation will clear the existing face data of a figure and add `FaceContents` as the specified face data.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Face ID set, which is required if `Type` is `delete`.
         * @type {Array.<string> || null}
         */
        this.FaceIds = null;

        /**
         * Face image [Base64](https://tools.ietf.org/html/rfc4648) Encoded string collection, only supports jpeg and png image formats. 
<li>When Type is add or reset, this field is required;</li>
<li>Array length limit: 5 pictures. </li>
Note: The picture must be a clear frontal photo of a single person, with a pixel size of no less than 200*200.
         * @type {Array.<string> || null}
         */
        this.FaceContents = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.FaceIds = 'FaceIds' in params ? params.FaceIds : null;
        this.FaceContents = 'FaceContents' in params ? params.FaceContents : null;

    }
}

/**
 * Input parameter of SVG watermarking template
 * @class
 */
class SvgWatermarkInputForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Watermark width, which supports six formats of px, %, W%, H%, S%, and L%:
<li>If the string ends in px, the `Width` of the watermark will be in px; for example, `100px` means that `Width` is 100 px; if `0px` is entered
 and `Height` is not `0px`, the watermark width will be proportionally scaled based on the source SVG image; if `0px` is entered for both `Width` and `Height`, the watermark width will be the width of the source SVG image;</li>
<li>If the string ends in `W%`, the `Width` of the watermark will be the specified percentage of the video width; for example, `10W%` means that `Width` is 10% of the video width;</li>
<li>If the string ends in `H%`, the `Width` of the watermark will be the specified percentage of the video height; for example, `10H%` means that `Width` is 10% of the video height;</li>
<li>If the string ends in `S%`, the `Width` of the watermark will be the specified percentage of the short side of the video; for example, `10S%` means that `Width` is 10% of the short side of the video;</li>
<li>If the string ends in `L%`, the `Width` of the watermark will be the specified percentage of the long side of the video; for example, `10L%` means that `Width` is 10% of the long side of the video;</li>
<li>If the string ends in %, the meaning is the same as `W%`.</li>
Default value: 10W%.
         * @type {string || null}
         */
        this.Width = null;

        /**
         * Watermark height, which supports six formats of px, %, W%, H%, S%, and L%:
<li>If the string ends in px, the `Height` of the watermark will be in px; for example, `100px` means that `Height` is 100 px; if `0px` is entered
 and `Width` is not `0px`, the watermark height will be proportionally scaled based on the source SVG image; if `0px` is entered for both `Width` and `Height`, the watermark height will be the height of the source SVG image;</li>
<li>If the string ends in `W%`, the `Height` of the watermark will be the specified percentage of the video width; for example, `10W%` means that `Height` is 10% of the video width;</li>
<li>If the string ends in `H%`, the `Height` of the watermark will be the specified percentage of the video height; for example, `10H%` means that `Height` is 10% of the video height;</li>
<li>If the string ends in `S%`, the `Height` of the watermark will be the specified percentage of the short side of the video; for example, `10S%` means that `Height` is 10% of the short side of the video;</li>
<li>If the string ends in `L%`, the `Height` of the watermark will be the specified percentage of the long side of the video; for example, `10L%` means that `Height` is 10% of the long side of the video;</li>
<li>If the string ends in %, the meaning is the same as `H%`.
Default value: 0 px.
         * @type {string || null}
         */
        this.Height = null;

        /**
         * Watermark period configuration is used to configure the watermark to be displayed and hidden periodically. 
The main usage scenario is: in order to prevent video from being blocked, watermarks are set in multiple places on the video. These watermarks are periodically displayed and hidden in a fixed order. 
For example, set four watermarks A, B, C, and D to be located in the upper left corner, upper right corner, lower right corner, and lower left corner of the video respectively. When the video starts, { A displays for 5 seconds -> B displays for 5 seconds -> C Display for 5 seconds -> D Display for 5 seconds} -> A Display for 5 seconds -> B Display for 5 seconds -> ..., only one watermark is displayed at any time. 
The curly brackets {} represent a large cycle consisting of 4 watermarks A, B, C, and D. It can be seen that each large cycle lasts 20 seconds. 
It can be seen that A, B, C, and D are periodically displayed for 5 seconds and hidden for 15 seconds, and the four have a fixed display order. 
This configuration item is used to describe the periodic configuration of a single watermark.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {WatermarkCycleConfigForUpdate || null}
         */
        this.CycleConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;

        if (params.CycleConfig) {
            let obj = new WatermarkCycleConfigForUpdate();
            obj.deserialize(params.CycleConfig)
            this.CycleConfig = obj;
        }

    }
}

/**
 * Result for OCR-based recognition of terrorism content
 * @class
 */
class AiReviewTaskTerrorismOcrResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for OCR-based recognition of terrorism content
         * @type {AiReviewTerrorismOcrTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for OCR-based recognition of terrorism content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTerrorismOcrTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an OCR-based moderation task (terrorist content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewTerrorismOcrTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewTerrorismOcrTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * Just In Time transcoding watermark template update configuration.
 * @class
 */
class WatermarkConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable watermark. Possible values:
<li>ON: means enabling watermark;</li>
<li>OFF: means turning off watermark. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Watermark image Base64 encoded string. Supports jpeg, png image formats.
         * @type {string || null}
         */
        this.ImageContent = null;

        /**
         * The width of the watermark. 
<li>The string ends with %, indicating that the watermark Width is a percentage of the video width, such as 10% indicating that the Width is 10% of the video width;</li>
         * @type {string || null}
         */
        this.Width = null;

        /**
         * The height of the watermark. 
<li>The string ends with %, indicating that the watermark Height is a percentage of the video height, for example, 10% means that the Height is 10% of the video height;</li>
         * @type {string || null}
         */
        this.Height = null;

        /**
         * The horizontal position of the watermark origin from the video image coordinate origin. The string ends with %, indicating that the watermark XPos specifies a percentage of the video width, such as 10% indicating that XPos is 10% of the video width.
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * The vertical position of the watermark origin from the video image coordinate origin. When the string ends with %, it means that the watermark YPos specifies a percentage of the video height. For example, 10% means that YPos is 10% of the video height.
         * @type {string || null}
         */
        this.YPos = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.ImageContent = 'ImageContent' in params ? params.ImageContent : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;

    }
}

/**
 * Text keyword recognition result.
 * @class
 */
class AiRecognitionTaskOcrWordsResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of text keyword recognition task.
         * @type {AiRecognitionTaskOcrWordsResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of text keyword recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskOcrWordsResultOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a text keyword recognition task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the text keyword recognition task started, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the text keyword recognition task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskOcrWordsResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskOcrWordsResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Parameters for ASR-based recognition of pornographic content
 * @class
 */
class PornAsrReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable ASR-based recognition of pornographic content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Video splitting results.
 * @class
 */
class AiRecognitionTaskSegmentResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of video splitting task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskSegmentResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of video splitting task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskSegmentResultOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a video splitting task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the video detachment task started, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the video stripping task is completed is in [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskSegmentResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskSegmentResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Control parameters for video jitter and ghost detection.
 * @class
 */
class JitterConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video shake and ghost detection switch, optional values:
<li>ON: turn on;</li>
<li>OFF: turn off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Subtitle information
 * @class
 */
class MediaSubtitleItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique subtitle ID
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Subtitle name
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Subtitle language. Common values:
<li>`zh`: Chinese</li>
<li>`en`: English</li>
<li>`ja`: Japanese</li>
<li>`ko`: Korean</li>
<li>`vi`: Vietnamese</li>
<li>`ms`: Malay</li>
<li>`th`: Thai</li>
<li>`pt`: Portuguese</li>
<li>`tr`: Turkish</li>
<li>`ar`: Arabic</li>
<li>`es`: Spanish</li>
<li>`hi`: Hindi</li>
<li>`fr`: French</li>For other valid values, see [RFC 5646](https://tools.ietf.org/html/rfc5646).
         * @type {string || null}
         */
        this.Language = null;

        /**
         * Subtitle format. Valid value:
<li>vtt</li>
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Subtitle URL
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Subtitle source, values:
<li>UserUploaded: user uploaded;</li>
<li>AIRecognition: AI recognition, generated through asr full text recognition or voice translation.</li>
         * @type {string || null}
         */
        this.Source = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Language = 'Language' in params ? params.Language : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.Source = 'Source' in params ? params.Source : null;

    }
}

/**
 * Control parameter of prohibited information detection in speech task
 * @class
 */
class ProhibitedAsrReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of prohibited information detection in speech task. Valid values:
<li>ON: enables prohibited information detection in speech task;</li>
<li>OFF: disables prohibited information detection in speech task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * ModifyAnimatedGraphicsTemplate response structure.
 * @class
 */
class ModifyAnimatedGraphicsTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Voice translation segment.
 * @class
 */
class AiRecognitionTaskAsrTranslateSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence level of the voice translation segment. Value: 0~100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Start time offset of the voice translation segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of the voice translation segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Recognized text.
         * @type {string || null}
         */
        this.Text = null;

        /**
         * The translation.
         * @type {string || null}
         */
        this.Translation = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Text = 'Text' in params ? params.Text : null;
        this.Translation = 'Translation' in params ? params.Translation : null;

    }
}

/**
 * ModifyAIAnalysisTemplate response structure.
 * @class
 */
class ModifyAIAnalysisTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * LiveRealTimeClip request structure.
 * @class
 */
class LiveRealTimeClipRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The live stream code.
         * @type {string || null}
         */
        this.StreamId = null;

        /**
         * Start time of stream clipping in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time of stream clipping in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://www.tencentcloud.com/document/product/266/33987) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Whether to clip persistently. 0: no, 1: yes. Default: no.
         * @type {number || null}
         */
        this.IsPersistence = null;

        /**
         * Storage expiration time of video generated by persistent clipping in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). `9999-12-31T23:59:59Z` means `never expire`. After the expiration, the media file and its related resources (such as transcoding results and image sprites) will be permanently deleted. This parameter will be valid only when `IsPersistence` is 1. By default, the video will never expire.
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * VOD task flow processing for video generated by persistent clipping. For more information, please see [Specifying Task Flow After Upload](https://intl.cloud.tencent.com/document/product/266/9759?from_cn_redirect=1). This parameter will be valid only when `IsPersistence` is 1.
         * @type {string || null}
         */
        this.Procedure = null;

        /**
         * The ID of the media file's category. You can use the [CreateClass](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API to create a category and get the category ID.
<li>The default value is `0`, which means the "Other" category.</li>
This parameter is valid only if `IsPersistence` is `1`.
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The source context, which is used to pass through user request information. The [NewFileUpload](https://intl.cloud.tencent.com/document/product/266/7830?from_cn_redirect=1) callback will return the value of this parameter. It can contain up to 250 characters and is valid only if `IsPersistence` is `1`.
         * @type {string || null}
         */
        this.SourceContext = null;

        /**
         * The session context, which is used to pass through user request information. If the `Procedure` parameter is specified, the [ProcedureStateChanged](https://intl.cloud.tencent.com/document/product/266/9636?from_cn_redirect=1) callback will return the value of this parameter. It can contain up to 1,000 characters and is valid only if `IsPersistence` is `1`.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * Whether the metadata of clipped video needs to be returned. 0: no, 1: yes. Default value: no.
         * @type {number || null}
         */
        this.MetaDataRequired = null;

        /**
         * Domain name used for live clipping. Time shifting must be enabled in LVB.
         * @type {string || null}
         */
        this.Host = null;

        /**
         * The information of the live stream to clip.
<li>The video clip is cut from the original stream by default.</li>
<li>If `Type` of `StreamInfo` is set to `Transcoding`, the video clip will be cut from the output stream of the transcoding template specified by `TemplateId`.</li>
         * @type {LiveRealTimeClipStreamInfo || null}
         */
        this.StreamInfo = null;

        /**
         * Reserved field. Do not enter a value for it.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StreamId = 'StreamId' in params ? params.StreamId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.IsPersistence = 'IsPersistence' in params ? params.IsPersistence : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.Procedure = 'Procedure' in params ? params.Procedure : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.SourceContext = 'SourceContext' in params ? params.SourceContext : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.MetaDataRequired = 'MetaDataRequired' in params ? params.MetaDataRequired : null;
        this.Host = 'Host' in params ? params.Host : null;

        if (params.StreamInfo) {
            let obj = new LiveRealTimeClipStreamInfo();
            obj.deserialize(params.StreamInfo)
            this.StreamInfo = obj;
        }
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * DeleteAdaptiveDynamicStreamingTemplate request structure.
 * @class
 */
class DeleteAdaptiveDynamicStreamingTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of adaptive bitrate streaming template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Full text recognition segment.
 * @class
 */
class AiRecognitionTaskOcrFullTextSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of recognized segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of recognition segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Recognition segment result set.
         * @type {Array.<AiRecognitionTaskOcrFullTextSegmentTextItem> || null}
         */
        this.TextSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

        if (params.TextSet) {
            this.TextSet = new Array();
            for (let z in params.TextSet) {
                let obj = new AiRecognitionTaskOcrFullTextSegmentTextItem();
                obj.deserialize(params.TextSet[z]);
                this.TextSet.push(obj);
            }
        }

    }
}

/**
 * Color enhancement configuration.
 * @class
 */
class ColorEnhanceInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable color enhancement. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The color enhancement type. This parameter is valid only if `Switch` is `ON`.
<li>`weak`</li>
<li>`normal`</li>
<li>`strong`</li>
Default value: `weak`.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * DeleteEnhanceMediaTemplate response structure.
 * @class
 */
class DeleteEnhanceMediaTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result file output of edited video.
 * @class
 */
class EditMediaOutputConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Output file name, up to 64 characters. By default, the generated file name is specified by the system.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * Output file format, optional values: mp4, hls. The default is mp4.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Classification ID is used to classify media. You can create a classification through the Create Classification interface to obtain the classification ID. 
<li>Default value: 0, indicating other categories. </li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The expiration time of the output file. The file will be deleted after this time. The default is permanent and not expired. The format is expressed in accordance with the ISO 8601 standard. For details, see [ISO Date Format Description](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * Output video information.
         * @type {EditMediaVideoStream || null}
         */
        this.VideoStream = null;

        /**
         * TSC Transcoding Config.
         * @type {EditMediaTEHDConfig || null}
         */
        this.TEHDConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

        if (params.VideoStream) {
            let obj = new EditMediaVideoStream();
            obj.deserialize(params.VideoStream)
            this.VideoStream = obj;
        }

        if (params.TEHDConfig) {
            let obj = new EditMediaTEHDConfig();
            obj.deserialize(params.TEHDConfig)
            this.TEHDConfig = obj;
        }

    }
}

/**
 * Information of a video splitting task.
 * @class
 */
class SplitMediaTaskSegmentInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Input information of a video splitting task.
         * @type {SplitMediaTaskInput || null}
         */
        this.Input = null;

        /**
         * Output information of a video splitting task.
Note: this field may return `null`, indicating that no valid values can be obtained.
         * @type {TaskOutputMediaInfo || null}
         */
        this.Output = null;

        /**
         * The task ID for the task type `Procedure`. If a task flow (`ProcedureName`) is specified by [SplitMedia](https://intl.cloud.tencent.com/document/api/266/51098?from_cn_redirect=1), and the task flow includes one or more of `MediaProcessTask`, `AiAnalysisTask`, and `AiRecognitionTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ProcedureTaskId = null;

        /**
         * The task ID for the task type `ReviewAudioVideo`. If a task flow (`ProcedureName`) is specified by [SplitMedia](https://intl.cloud.tencent.com/document/api/266/51098?from_cn_redirect=1), and the task flow includes `ReviewAudioVideoTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ReviewAudioVideoTaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Input) {
            let obj = new SplitMediaTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new TaskOutputMediaInfo();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.ProcedureTaskId = 'ProcedureTaskId' in params ? params.ProcedureTaskId : null;
        this.ReviewAudioVideoTaskId = 'ReviewAudioVideoTaskId' in params ? params.ReviewAudioVideoTaskId : null;

    }
}

/**
 * Output for ASR-based recognition of pornographic content
 * @class
 */
class AiReviewPornAsrTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence score for the ASR-detected pornographic content
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the ASR-detected pornographic content
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of video segments that contain ASR-detected pornographic content
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewAsrTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain ASR-detected pornographic content. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain ASR-detected pornographic content, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewAsrTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * Custom request header configuration. This is disabled by default.
 * @class
 */
class RequestHeader extends  AbstractModel {
    constructor(){
        super();

        /**
         * Custom request header configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Custom request header configuration rules
         * @type {Array.<HttpHeaderPathRule> || null}
         */
        this.HeaderRules = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

        if (params.HeaderRules) {
            this.HeaderRules = new Array();
            for (let z in params.HeaderRules) {
                let obj = new HttpHeaderPathRule();
                obj.deserialize(params.HeaderRules[z]);
                this.HeaderRules.push(obj);
            }
        }

    }
}

/**
 * Subtitle information.
 * @class
 */
class AiRecognitionTaskAsrFullTextResultOutputSubtitleItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media asset subtitle ID, used for media asset subtitle management, only valid when Format is vtt.
<font color=red>Note:</font> Tasks before 2024-11-01T10:00:00Z return this field as invalid.
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Media asset subtitle name, used for player display, only valid when Format is vtt.
<font color=red>Note:</font> Tasks before 2024-11-01T10:00:00Z return this field as invalid.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Subtitle Language.
         * @type {string || null}
         */
        this.Language = null;

        /**
         * The format of the subtitle files. Valid values:
<li>vtt</li>
<li>srt</li>
         * @type {string || null}
         */
        this.Format = null;

        /**
         * The URL of a subtitle file.
         * @type {string || null}
         */
        this.Url = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Language = 'Language' in params ? params.Language : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Url = 'Url' in params ? params.Url : null;

    }
}

/**
 * SimpleHlsClip response structure.
 * @class
 */
class SimpleHlsClipResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Address of clipped video.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Metadata of clipped video. Currently, `Size`, `Rotate`, `VideoDuration`, and `AudioDuration` fields use default value with no actual data.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * Unique ID of a video clip for persistent storage.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The ID of the task flow to execute on the video clipped for persistent storage.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteAIAnalysisTemplate request structure.
 * @class
 */
class DeleteAIAnalysisTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of video content analysis template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Smart frame interpolation configuration.
 * @class
 */
class VideoFrameInterpolationInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable smart frame interpolation. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The frame rate. Value range: (0, 100]. This parameter is valid only if `Switch` is `ON`. By default, the original frame rate will be used.
         * @type {number || null}
         */
        this.Fps = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Fps = 'Fps' in params ? params.Fps : null;

    }
}

/**
 * EditMedia request structure.
 * @class
 */
class EditMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Input the type of video. The possible values u200bu200bare File and Stream.
         * @type {string || null}
         */
        this.InputType = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Input video file information, required when InputType is File.
         * @type {Array.<EditMediaFileInfo> || null}
         */
        this.FileInfos = null;

        /**
         * nput stream information, required when InputType is Stream.
         * @type {Array.<EditMediaStreamInfo> || null}
         */
        this.StreamInfos = null;

        /**
         * EditMedia template ID. The values u200bu200bare 10 and 20. If left blank, the 10 template is used. 
<li>10: When splicing, the input with the highest resolution is used as the benchmark;</li>
<li>20: When splicing, the input with the highest code rate is used as the benchmark. </li>
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Task flow template name, if you want Fill in when executing the task flow on the generated new video.
         * @type {string || null}
         */
        this.ProcedureName = null;

        /**
         * The file configuration generated after editing.
         * @type {EditMediaOutputConfig || null}
         */
        this.OutputConfig = null;

        /**
         * Identifies the source context, which is used to transparently transmit user request information. This field value will be returned in the EditMediaComplete callback and task flow status change callback, with a maximum length of 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The priority of the task. The larger the value, the higher the priority. The value range is -10 to 10. If left blank, it means 0.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * The identification code used for task deduplication. If there is a request with the same identification code within three days, this request will return an error. The maximum length is 50 characters, without or with an empty string to indicate no deduplication.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Reserved fields, used for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.InputType = 'InputType' in params ? params.InputType : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

        if (params.FileInfos) {
            this.FileInfos = new Array();
            for (let z in params.FileInfos) {
                let obj = new EditMediaFileInfo();
                obj.deserialize(params.FileInfos[z]);
                this.FileInfos.push(obj);
            }
        }

        if (params.StreamInfos) {
            this.StreamInfos = new Array();
            for (let z in params.StreamInfos) {
                let obj = new EditMediaStreamInfo();
                obj.deserialize(params.StreamInfos[z]);
                this.StreamInfos.push(obj);
            }
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.ProcedureName = 'ProcedureName' in params ? params.ProcedureName : null;

        if (params.OutputConfig) {
            let obj = new EditMediaOutputConfig();
            obj.deserialize(params.OutputConfig)
            this.OutputConfig = obj;
        }
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * CreateComplexAdaptiveDynamicStreamingTask request structure.
 * @class
 */
class CreateComplexAdaptiveDynamicStreamingTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The VOD application ID.
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Media ID of the main media.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Adaptive bitrate streaming parameters, supporting up to 8 entries.
         * @type {Array.<ComplexAdaptiveDynamicStreamingTaskStreamPara> || null}
         */
        this.StreamParaSet = null;

        /**
         * List of video opening/closing credits configuration template IDs, supporting up to 4 entries. If this field is filled in, the start times of the media specified in AudioSet and SubtitleSet will be automatically adjusted to stay in sync with the main media.
         * @type {Array.<HeadTailTaskInput> || null}
         */
        this.HeadTailSet = null;

        /**
         * Audio media parameters, supporting up to 16 entries. Each array element corresponds to an audio stream in the output. If you want to add the audio stream from the main media file to the output, you also need to specify it here. The order of elements in the array will determine the order of audio streams in the output. If the input media file contains both video and audio streams, the video stream will be ignored.
         * @type {Array.<ComplexAdaptiveDynamicStreamingTaskAudioInput> || null}
         */
        this.AudioSet = null;

        /**
         * List of subtitle IDs, supporting up to 16 entries. Each array element corresponds to an subtitle stream in the output. The order of elements in the array will determine the order of subtitles in the output.
         * @type {Array.<ComplexAdaptiveDynamicStreamingTaskSubtitleInput> || null}
         */
        this.SubtitleSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.StreamParaSet) {
            this.StreamParaSet = new Array();
            for (let z in params.StreamParaSet) {
                let obj = new ComplexAdaptiveDynamicStreamingTaskStreamPara();
                obj.deserialize(params.StreamParaSet[z]);
                this.StreamParaSet.push(obj);
            }
        }

        if (params.HeadTailSet) {
            this.HeadTailSet = new Array();
            for (let z in params.HeadTailSet) {
                let obj = new HeadTailTaskInput();
                obj.deserialize(params.HeadTailSet[z]);
                this.HeadTailSet.push(obj);
            }
        }

        if (params.AudioSet) {
            this.AudioSet = new Array();
            for (let z in params.AudioSet) {
                let obj = new ComplexAdaptiveDynamicStreamingTaskAudioInput();
                obj.deserialize(params.AudioSet[z]);
                this.AudioSet.push(obj);
            }
        }

        if (params.SubtitleSet) {
            this.SubtitleSet = new Array();
            for (let z in params.SubtitleSet) {
                let obj = new ComplexAdaptiveDynamicStreamingTaskSubtitleInput();
                obj.deserialize(params.SubtitleSet[z]);
                this.SubtitleSet.push(obj);
            }
        }

    }
}

/**
 * Voice translation result.
 * @class
 */
class AiRecognitionTaskAsrTranslateResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. It is not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of the voice translation task.
         * @type {AiRecognitionTaskAsrTranslateResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of the voice translation task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskAsrTranslateResultOutput || null}
         */
        this.Output = null;

        /**
         * Progress of the voice translation task, value range [0-100].
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * Begin process time of the voice translation task, in [ISO date format](https://cloud.tencent.com/document/product/266/11732#I).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the voice translation task is completed, in [ISO date format](https://cloud.tencent.com/document/product/266/11732#I).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskAsrTranslateResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskAsrTranslateResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * DescribeFileAttributes response structure.
 * @class
 */
class DescribeFileAttributesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The license request statistics.
 * @class
 */
class LicenseUsageDataItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * The start time (in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)) of the data returned. For example, if the granularity is a day, `2018-12-01T00:00:00+08:00` indicates that the data is for the whole day of December 1, 2018.
         * @type {string || null}
         */
        this.Time = null;

        /**
         * The number of license requests.
         * @type {number || null}
         */
        this.Count = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Time = 'Time' in params ? params.Time : null;
        this.Count = 'Count' in params ? params.Count : null;

    }
}

/**
 * The output audio parameters of an audio/video remastering task.
 * @class
 */
class RebuildMediaTargetAudioStream extends  AbstractModel {
    constructor(){
        super();

        /**
         * The audio codec.
If `Container` is `mp3`, the valid value is:
<li>`libmp3lame`</li>
If `Container` is `ogg` or `flac`, the valid value is:
<li>`flac`</li>
If `Container` is `m4a`, the valid values are:
<li>`libfdk_aac`</li>
<li>`libmp3lame`</li>
<li>`ac3`</li>
If `Container` is `mp4` or `flv`, the valid values are:
<li>`libfdk_aac` (Recommended for MP4)</li>
<li>`libmp3lame` (Recommended for FLV)</li>
<li>`mp2`</li>
If `Container` is `hls`, the valid value is:
<li>`libfdk_aac`</li>
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * The audio bitrate, in Kbps. Value range: 0 and 26-256.
If the value is `0`, the original audio bitrate will be used.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * The audio sample rate. Valid values:
<li>`32000`</li>
<li>`44100`</li>
<li>`48000`</li>

Unit: Hz.
         * @type {number || null}
         */
        this.SampleRate = null;

        /**
         * The audio channels. Valid values:
<li>`1`: Mono-channel</li>
<li>`2`: Dual-channel</li>
<li>`6`: Stereo</li>

You cannot set this parameter to `6` if the container format is an audio format (FLAC, OGG, MP3, M4A).
Default value: `2`.
         * @type {number || null}
         */
        this.AudioChannel = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.SampleRate = 'SampleRate' in params ? params.SampleRate : null;
        this.AudioChannel = 'AudioChannel' in params ? params.AudioChannel : null;

    }
}

/**
 * Information of source file for video splicing (v2017)
 * @class
 */
class ConcatFileInfo2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Error code
<li>0: success;</li>
<li>Other values: failure.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * ID of source file for video splicing.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Address of source file for video splicing.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * Format of source file for video splicing.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.FileType = 'FileType' in params ? params.FileType : null;

    }
}

/**
 * The result for intelligent image moderation.
 * @class
 */
class ContentReviewResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The result type. Valid values:
<li>Porn.Image: Pornographic content in the image</li>
<li>Terrorism.Image: Terrorist content in the image</li>
<li>Political.Image: Politically sensitive content in the image</li>
<li>Porn.Ocr: Pornographic content in the image based on OCR</li>
<li>Terrorism.Ocr: Terrorist content in the image based on OCR</li>
<li>Political.Ocr: Politically sensitive content in the image based on OCR</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The pornographic content detected in the image. This parameter is valid if `Type` is `Porn.Image`.
Note: This field may return `null`, indicating that no valid value was found.
         * @type {PornImageResult || null}
         */
        this.PornImageResult = null;

        /**
         * The terrorist content detected in the image. This parameter is valid if `Type` is `Terrorism.Image`.
Note: This field may return `null`, indicating that no valid value was found.
         * @type {TerrorismImageResult || null}
         */
        this.TerrorismImageResult = null;

        /**
         * The politically sensitive content detected in the image. This parameter is valid if `Type` is `Political.Image`.
Note: This field may return `null`, indicating that no valid value was found.
         * @type {PoliticalImageResult || null}
         */
        this.PoliticalImageResult = null;

        /**
         * The pornographic content detected in the image based on OCR. This parameter is valid if `Type` is `Porn.Ocr`.
Note: This field may return `null`, indicating that no valid value was found.
         * @type {ContentReviewOcrResult || null}
         */
        this.PornOcrResult = null;

        /**
         * The terrorist content detected in the image based on OCR. This parameter is valid if `Type` is `Terrorism.Ocr`.
Note: This field may return `null`, indicating that no valid value was found.
         * @type {ContentReviewOcrResult || null}
         */
        this.TerrorismOcrResult = null;

        /**
         * The politically sensitive content detected in the image based on OCR. This parameter is valid if `Type` is `Political.Ocr`.
Note: This field may return `null`, indicating that no valid value was found.
         * @type {ContentReviewOcrResult || null}
         */
        this.PoliticalOcrResult = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.PornImageResult) {
            let obj = new PornImageResult();
            obj.deserialize(params.PornImageResult)
            this.PornImageResult = obj;
        }

        if (params.TerrorismImageResult) {
            let obj = new TerrorismImageResult();
            obj.deserialize(params.TerrorismImageResult)
            this.TerrorismImageResult = obj;
        }

        if (params.PoliticalImageResult) {
            let obj = new PoliticalImageResult();
            obj.deserialize(params.PoliticalImageResult)
            this.PoliticalImageResult = obj;
        }

        if (params.PornOcrResult) {
            let obj = new ContentReviewOcrResult();
            obj.deserialize(params.PornOcrResult)
            this.PornOcrResult = obj;
        }

        if (params.TerrorismOcrResult) {
            let obj = new ContentReviewOcrResult();
            obj.deserialize(params.TerrorismOcrResult)
            this.TerrorismOcrResult = obj;
        }

        if (params.PoliticalOcrResult) {
            let obj = new ContentReviewOcrResult();
            obj.deserialize(params.PoliticalOcrResult)
            this.PoliticalOcrResult = obj;
        }

    }
}

/**
 * Result type of image sprite generating task
 * @class
 */
class MediaProcessTaskImageSpriteResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of image sprite generating task.
         * @type {ImageSpriteTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of image sprite generating task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaImageSpriteItem || null}
         */
        this.Output = null;

        /**
         * The progress of an image sprite generation task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the sprite cut task started to be executed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the sprite cut task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new ImageSpriteTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new MediaImageSpriteItem();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * DescribeJustInTimeTranscodeTemplates response structure.
 * @class
 */
class DescribeJustInTimeTranscodeTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The total number of records matching the filter criteria.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Template details list.
         * @type {Array.<JustInTimeTranscodeTemplate> || null}
         */
        this.JustInTimeTranscodeTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.JustInTimeTranscodeTemplateSet) {
            this.JustInTimeTranscodeTemplateSet = new Array();
            for (let z in params.JustInTimeTranscodeTemplateSet) {
                let obj = new JustInTimeTranscodeTemplate();
                obj.deserialize(params.JustInTimeTranscodeTemplateSet[z]);
                this.JustInTimeTranscodeTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameters for video screen blur detection.
 * @class
 */
class CrashScreenConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video screen distortion detection switch, optional values:
<li>ON: turn on;</li>
<li>OFF: turn off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * CreateReviewTemplate request structure.
 * @class
 */
class CreateReviewTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The violation labels to use. Valid values: <li>`Porn`: Pornographic content</li> <li>`Terror`: Terrorist content</li> <li>`Moan`: Moaning</li>
         * @type {Array.<string> || null}
         */
        this.Labels = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {string || null}
         */
        this.SubAppId = null;

        /**
         * 
         * @type {string || null}
         */
        this.Name = null;

        /**
         * 
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Labels = 'Labels' in params ? params.Labels : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * DescribeMediaInfos response structure.
 * @class
 */
class DescribeMediaInfosResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file information list.
         * @type {Array.<MediaInfo> || null}
         */
        this.MediaInfoSet = null;

        /**
         * List of IDs of files that do not exist.
         * @type {Array.<string> || null}
         */
        this.NotExistFileIdSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MediaInfoSet) {
            this.MediaInfoSet = new Array();
            for (let z in params.MediaInfoSet) {
                let obj = new MediaInfo();
                obj.deserialize(params.MediaInfoSet[z]);
                this.MediaInfoSet.push(obj);
            }
        }
        this.NotExistFileIdSet = 'NotExistFileIdSet' in params ? params.NotExistFileIdSet : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteProcedureTemplate response structure.
 * @class
 */
class DeleteProcedureTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeReviewTemplates response structure.
 * @class
 */
class DescribeReviewTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The total number of records that meet the conditions.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The details of the moderation templates.
         * @type {Array.<ReviewTemplate> || null}
         */
        this.ReviewTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.ReviewTemplateSet) {
            this.ReviewTemplateSet = new Array();
            for (let z in params.ReviewTemplateSet) {
                let obj = new ReviewTemplate();
                obj.deserialize(params.ReviewTemplateSet[z]);
                this.ReviewTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAdaptiveDynamicStreamingTemplates response structure.
 * @class
 */
class DescribeAdaptiveDynamicStreamingTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of transcoding to adaptive bitrate streaming template details.
         * @type {Array.<AdaptiveDynamicStreamingTemplate> || null}
         */
        this.AdaptiveDynamicStreamingTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.AdaptiveDynamicStreamingTemplateSet) {
            this.AdaptiveDynamicStreamingTemplateSet = new Array();
            for (let z in params.AdaptiveDynamicStreamingTemplateSet) {
                let obj = new AdaptiveDynamicStreamingTemplate();
                obj.deserialize(params.AdaptiveDynamicStreamingTemplateSet[z]);
                this.AdaptiveDynamicStreamingTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 *  
 * @class
 */
class MediaMiniProgramReviewInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Audit information list.
         * @type {Array.<MediaMiniProgramReviewInfoItem> || null}
         */
        this.MiniProgramReviewList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MiniProgramReviewList) {
            this.MiniProgramReviewList = new Array();
            for (let z in params.MiniProgramReviewList) {
                let obj = new MediaMiniProgramReviewInfoItem();
                obj.deserialize(params.MiniProgramReviewList[z]);
                this.MiniProgramReviewList.push(obj);
            }
        }

    }
}

/**
 * Path cache configuration
 * @class
 */
class CacheConfigCache extends  AbstractModel {
    constructor(){
        super();

        /**
         * Path cache configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Cache expiration time settings<li>Unit: second. The maximum value is 365 days.</li>
         * @type {number || null}
         */
        this.CacheTime = null;

        /**
         * Advanced cache expiration configuration. When enabled, the max-age value returned by the origin site will be compared with the cache expiration time set in CacheRules, and the minimum value will be used to cache the node. Values: <li>on: enabled; </li> <li >off: off. </li>
         * @type {string || null}
         */
        this.CompareMaxAge = null;

        /**
         * Force caching, values: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.IgnoreCacheControl = null;

        /**
         * When the origin site returns the Set-Cookie header, whether the node caches the header and body: <li>on: on, does not cache the header and body;</li> <li>off: off, follows user customization Node caching rules. </li>
         * @type {string || null}
         */
        this.IgnoreSetCookie = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.CacheTime = 'CacheTime' in params ? params.CacheTime : null;
        this.CompareMaxAge = 'CompareMaxAge' in params ? params.CompareMaxAge : null;
        this.IgnoreCacheControl = 'IgnoreCacheControl' in params ? params.IgnoreCacheControl : null;
        this.IgnoreSetCookie = 'IgnoreSetCookie' in params ? params.IgnoreSetCookie : null;

    }
}

/**
 * General data type used to describe a time period.
 * @class
 */
class TimeRange extends  AbstractModel {
    constructor(){
        super();

        /**
         * <li>After or at this time (start time).</li>
<li>In ISO 8601 format. For more information, please see [ISO Date Format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).</li>
         * @type {string || null}
         */
        this.After = null;

        /**
         * <li>Earlier than this time (end time).</li>
<li>In ISO 8601 format. For more information, please see [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).</li>
         * @type {string || null}
         */
        this.Before = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.After = 'After' in params ? params.After : null;
        this.Before = 'Before' in params ? params.Before : null;

    }
}

/**
 * DescribeAdaptiveDynamicStreamingTemplates request structure.
 * @class
 */
class DescribeAdaptiveDynamicStreamingTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique ID filter of transcoding to adaptive bitrate streaming templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Paged offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Template type filter. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * ModifyRoundPlay request structure.
 * @class
 */
class ModifyRoundPlayRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique identifier of the playlist.
         * @type {string || null}
         */
        this.RoundPlayId = null;

        /**
         * <B>VOD [subapplication](https://intl.cloud.tencent.com/document/product/266/14574?from_cn_redirect=1) id. starting from december 25, 2023, for customers who enable vod, if you want to access resources in the vod application (whether it is the default application or a newly created application), you must enter the application id in this field.</b>.
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The playback start time, in [iso 8601 date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * The program list.
<Li>Array length limit: 100.</li>.
         * @type {Array.<RoundPlayListItemInfo> || null}
         */
        this.RoundPlaylist = null;

        /**
         * The playlist name (not longer than 64 characters).
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The playlist description (not longer than 256 characters).
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Playback status, optional values:<li>disabled: stop playback.</li><li>enabled: start playback after the duration has elapsed.</li>.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Play mode, optional values:.
<Li>Loop: loop the playlist;</li>.
<Li>Linear: single play, stop playback after the playlist finishes.</li>.
         * @type {string || null}
         */
        this.PlayBackMode = null;

        /**
         * Expiration time, in iso 8601 format. for details, see [iso date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format). the playback will stop after expiration. "9999-12-31t23:59:59+08:00" means no expiration.
         * @type {string || null}
         */
        this.ExpiredTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RoundPlayId = 'RoundPlayId' in params ? params.RoundPlayId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;

        if (params.RoundPlaylist) {
            this.RoundPlaylist = new Array();
            for (let z in params.RoundPlaylist) {
                let obj = new RoundPlayListItemInfo();
                obj.deserialize(params.RoundPlaylist[z]);
                this.RoundPlaylist.push(obj);
            }
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.PlayBackMode = 'PlayBackMode' in params ? params.PlayBackMode : null;
        this.ExpiredTime = 'ExpiredTime' in params ? params.ExpiredTime : null;

    }
}

/**
 * Input parameter of image watermarking template
 * @class
 */
class ImageWatermarkInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The [Base64](https://tools.ietf.org/html/rfc4648) encoded string of a watermark image. Only JPEG, PNG, and GIF images are supported.
         * @type {string || null}
         */
        this.ImageContent = null;

        /**
         * Watermark width. % and px formats are supported:
<li>If the string ends in %, the `Width` of the watermark will be the specified percentage of the video width. For example, `10%` means that `Width` is 10% of the video width;</li>
<li>If the string ends in px, the `Width` of the watermark will be in pixels. For example, `100px` means that `Width` is 100 pixels. Value range: [8, 4096].</li>
Default value: 10%.
         * @type {string || null}
         */
        this.Width = null;

        /**
         * Watermark height. % and px formats are supported:
<li>If the string ends in %, the `Height` of the watermark will be the specified percentage of the video height; for example, `10%` means that `Height` is 10% of the video height;</li>
<li>If the string ends in px, the `Height` of the watermark will be in px; for example, `100px` means that `Height` is 100 px. Valid values: 0 or [8,4096].</li>
Default value: 0 px, which means that `Height` will be proportionally scaled according to the aspect ratio of the original watermark image.
         * @type {string || null}
         */
        this.Height = null;

        /**
         * Repeat type of an animated watermark. Valid values:
<li>once: no longer appears after watermark playback ends.</li>
<li>repeat_last_frame: stays on the last frame after watermark playback ends.</li>
<li>repeat (default): repeats the playback until the video ends.</li>
         * @type {string || null}
         */
        this.RepeatType = null;

        /**
         * 
         * @type {number || null}
         */
        this.Transparency = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ImageContent = 'ImageContent' in params ? params.ImageContent : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.RepeatType = 'RepeatType' in params ? params.RepeatType : null;
        this.Transparency = 'Transparency' in params ? params.Transparency : null;

    }
}

/**
 * Control parameter of object recognition task
 * @class
 */
class ObjectConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of object recognition task. Valid values:
<li>ON: enables intelligent object recognition task;</li>
<li>OFF: disables intelligent object recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Object library. Valid values:
<li>Default: default object library;</li>
<li>UserDefine: custom object library.</li>
<li>All: both default and custom object libraries will be used.</li>
Default value: All, i.e., both default and custom object libraries will be used.
         * @type {string || null}
         */
        this.ObjectLibrary = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.ObjectLibrary = 'ObjectLibrary' in params ? params.ObjectLibrary : null;

    }
}

/**
 * Control parameter of full speech recognition task.
 * @class
 */
class AsrFullTextConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of full speech recognition task. Valid values:
<li>ON: enables intelligent full speech recognition task;</li>
<li>OFF: disables intelligent full speech recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The modification information of the subtitle format list.
         * @type {SubtitleFormatsOperation || null}
         */
        this.SubtitleFormatsOperation = null;

        /**
         * The format of the subtitle file generated. <font color='red'>If you pass in an empty string</font>, no subtitle files will be generated. Valid values:
<li>vtt</li>
<li>srt</li>
<font color='red'>Note: This parameter has been deprecated. Please use `SubtitleFormatsOperation` instead.</font>
         * @type {string || null}
         */
        this.SubtitleFormat = null;

        /**
         * Media source language value range: <li>zh: Mandarin </li> <li>en: English</li> <li>ja: Japanese </li> <li>zh-ca: Cantonese</li>
         * @type {string || null}
         */
        this.SrcLanguage = null;

        /**
         * Specify subtitle name, length limit: 64 characters. This value will be used for player display.
         * @type {string || null}
         */
        this.SubtitleName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

        if (params.SubtitleFormatsOperation) {
            let obj = new SubtitleFormatsOperation();
            obj.deserialize(params.SubtitleFormatsOperation)
            this.SubtitleFormatsOperation = obj;
        }
        this.SubtitleFormat = 'SubtitleFormat' in params ? params.SubtitleFormat : null;
        this.SrcLanguage = 'SrcLanguage' in params ? params.SrcLanguage : null;
        this.SubtitleName = 'SubtitleName' in params ? params.SubtitleName : null;

    }
}

/**
 * DeleteHeadTailTemplate response structure.
 * @class
 */
class DeleteHeadTailTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The audio remaster parameters.
 * @class
 */
class RebuildAudioInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The noise removal parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {AudioDenoiseInfo || null}
         */
        this.AudioDenoiseInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.AudioDenoiseInfo) {
            let obj = new AudioDenoiseInfo();
            obj.deserialize(params.AudioDenoiseInfo)
            this.AudioDenoiseInfo = obj;
        }

    }
}

/**
 * RemoveWatermark response structure.
 * @class
 */
class RemoveWatermarkResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The details of a remaster template.
 * @class
 */
class RebuildMediaTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * The remaster template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The template type. Valid values:
<li>`Preset`</li>
<li>`Custom`</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The remaster template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * The video remaster parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RebuildVideoInfo || null}
         */
        this.RebuildVideoInfo = null;

        /**
         * The audio remaster parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RebuildAudioInfo || null}
         */
        this.RebuildAudioInfo = null;

        /**
         * The output video parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RebuildMediaTargetVideoStream || null}
         */
        this.TargetVideoInfo = null;

        /**
         * The output audio parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RebuildMediaTargetAudioStream || null}
         */
        this.TargetAudioInfo = null;

        /**
         * The output file format. Valid values: `mp4` (default), `hls`.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Whether to remove video data. Valid values:
<li>`0`: No</li>
<li>`1`: Yes</li>
Default value: 0.
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data. Valid values:
<li>`0`: No</li>
<li>`1`: Yes</li>
Default value: 0.
         * @type {number || null}
         */
        this.RemoveAudio = null;

        /**
         * The template creation time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * The last updated time of the template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.RebuildVideoInfo) {
            let obj = new RebuildVideoInfo();
            obj.deserialize(params.RebuildVideoInfo)
            this.RebuildVideoInfo = obj;
        }

        if (params.RebuildAudioInfo) {
            let obj = new RebuildAudioInfo();
            obj.deserialize(params.RebuildAudioInfo)
            this.RebuildAudioInfo = obj;
        }

        if (params.TargetVideoInfo) {
            let obj = new RebuildMediaTargetVideoStream();
            obj.deserialize(params.TargetVideoInfo)
            this.TargetVideoInfo = obj;
        }

        if (params.TargetAudioInfo) {
            let obj = new RebuildMediaTargetAudioStream();
            obj.deserialize(params.TargetAudioInfo)
            this.TargetAudioInfo = obj;
        }
        this.Container = 'Container' in params ? params.Container : null;
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * CreatePersonSample response structure.
 * @class
 */
class CreatePersonSampleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information of a sample.
         * @type {AiSamplePerson || null}
         */
        this.Person = null;

        /**
         * Information of samples that failed the verification by facial feature positioning.
         * @type {Array.<AiSampleFailFaceInfo> || null}
         */
        this.FailFaceInfoSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Person) {
            let obj = new AiSamplePerson();
            obj.deserialize(params.Person)
            this.Person = obj;
        }

        if (params.FailFaceInfoSet) {
            this.FailFaceInfoSet = new Array();
            for (let z in params.FailFaceInfoSet) {
                let obj = new AiSampleFailFaceInfo();
                obj.deserialize(params.FailFaceInfoSet[z]);
                this.FailFaceInfoSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateContentReviewTemplate response structure.
 * @class
 */
class CreateContentReviewTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an intelligent recognition template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyAnimatedGraphicsTemplate request structure.
 * @class
 */
class ModifyAnimatedGraphicsTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an animated image generating template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of an animated image generating template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Maximum value of the width (or long side) of an animated image in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of an animated image in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Animated image format. Valid values: gif, webp.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Video frame rate in Hz. Value range: [1, 30].
         * @type {number || null}
         */
        this.Fps = null;

        /**
         * Image quality. Value range: [1, 100]. Default value: 75.
         * @type {number || null}
         */
        this.Quality = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Fps = 'Fps' in params ? params.Fps : null;
        this.Quality = 'Quality' in params ? params.Quality : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * DescribeAIAnalysisTemplates request structure.
 * @class
 */
class DescribeAIAnalysisTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique ID filter of video content analysis templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * CreateHeadTailTemplate request structure.
 * @class
 */
class CreateHeadTailTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Template name, length limit is 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Template description information, length limit is 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Title candidate list, fill in the FileId of the video. When transcoding, the title closest to the aspect ratio of the feature film will be automatically selected (when the aspect ratio is the same, the front candidate will take precedence). Supports up to 5 candidate titles.
         * @type {Array.<string> || null}
         */
        this.HeadCandidateSet = null;

        /**
         * Ending candidate list, fill in the FileId of the video. When transcoding, the ending with the aspect ratio closest to the feature film will be automatically selected (when the aspect ratio is the same, the front candidate will take precedence). Supports up to 5 candidate endings.
         * @type {Array.<string> || null}
         */
        this.TailCandidateSet = null;

        /**
         * Padding method. When the video stream configuration width and height parameters are inconsistent with the aspect ratio of the original video, the transcoding processing method is "padding". Optional filling method:
<li> stretch: stretch, stretch each frame to fill the entire screen, which may cause the transcoded video to be "squashed" or "stretched";</li> 
<li> gauss: Gaussian blur, keep the video aspect ratio unchanged, use Gaussian blur for the remaining edges; </li>
<li> white: leave blank, keep the video aspect ratio unchanged, use the remaining edges for the edge Use white filling; </li>
<li> black: Leave black, keep the video aspect ratio unchanged, and fill the remaining edges with black. </li>
Default value: stretch.
         * @type {string || null}
         */
        this.FillType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.HeadCandidateSet = 'HeadCandidateSet' in params ? params.HeadCandidateSet : null;
        this.TailCandidateSet = 'TailCandidateSet' in params ? params.TailCandidateSet : null;
        this.FillType = 'FillType' in params ? params.FillType : null;

    }
}

/**
 * Sampled screenshot information
 * @class
 */
class MediaSampleSnapshotItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Sampled screenshot specification ID. For more information, please see [Sampled Screencapturing Parameter Template](https://intl.cloud.tencent.com/document/product/266/33480?from_cn_redirect=1#.E9.87.87.E6.A0.B7.E6.88.AA.E5.9B.BE.E6.A8.A1.E6.9D.BF).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Sample type. Valid values:
<li>Percent: samples at a specified percentage interval.</li>
<li>Time: samples at a specified time interval.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SampleType = null;

        /**
         * Sampling interval
<li>If `SampleType` is `Percent`, this value means taking a screenshot at an interval of the specified percentage.</li>
<li>If `SampleType` is `Time`, this value means taking a screenshot at an interval of the specified time (in seconds). The first screenshot is always the first video frame.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Interval = null;

        /**
         * List of URLs of generated screenshots.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.ImageUrlSet = null;

        /**
         * List of watermarking template IDs if the screenshots are watermarked.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<number> || null}
         */
        this.WaterMarkDefinition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SampleType = 'SampleType' in params ? params.SampleType : null;
        this.Interval = 'Interval' in params ? params.Interval : null;
        this.ImageUrlSet = 'ImageUrlSet' in params ? params.ImageUrlSet : null;
        this.WaterMarkDefinition = 'WaterMarkDefinition' in params ? params.WaterMarkDefinition : null;

    }
}

/**
 * Control parameter of intelligent tagging task
 * @class
 */
class TagConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of intelligent tagging task. Valid values:
<li>ON: enables intelligent tagging task;</li>
<li>OFF: disables intelligent tagging task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * DeleteWordSamples request structure.
 * @class
 */
class DeleteWordSamplesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Keyword. Array length limit: 100 words.
         * @type {Array.<string> || null}
         */
        this.Keywords = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Keywords = 'Keywords' in params ? params.Keywords : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * FastEditMedia response structure.
 * @class
 */
class FastEditMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique identification of the media file of the fast edited video
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Fast-edited media playback address
         * @type {string || null}
         */
        this.Url = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Empty track segment used as placeholder on time axis. If you want a period of silence between two audio segments, you can use `EmptyTrackItem` to hold the place.
 * @class
 */
class EmptyTrackItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Duration in seconds.
         * @type {number || null}
         */
        this.Duration = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Duration = 'Duration' in params ? params.Duration : null;

    }
}

/**
 * Referer blacklist/whitelist configuration rules, which is effective for specific resources.
 * @class
 */
class RefererRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule type: <li>all: valid for all files;</li> <li>file: valid for specified file suffix;</li> <li>directory: valid for specified path;</li> <li>path: specified absolute The path takes effect. </li>
         * @type {string || null}
         */
        this.RuleType = null;

        /**
         * Matching content under the corresponding type of RuleType: <li>Fill in * when all is used;</li> <li>Fill in suffix name when file is used, such as jpg, txt;</li> <li>Fill in path when directory is used, such as /xxx/ test/;</li> <li>Fill in the absolute path when path is specified, such as /xxx/test.html. </li>
         * @type {Array.<string> || null}
         */
        this.RulePaths = null;

        /**
         * rferer configuration type, value: <li>whitelist: whitelist;</li> <li>blacklist: blacklist. </li>
         * @type {string || null}
         */
        this.RefererType = null;

        /**
         * Referer content list
         * @type {Array.<string> || null}
         */
        this.Referers = null;

        /**
         * Whether to allow empty referers: When the anti-hotlinking type is whitelist, true means that empty referers are allowed, false means that empty referers are not allowed; when the anti-hotlinking type is blacklist, true means that empty referers are rejected, and false means that empty referers are not rejected.
         * @type {boolean || null}
         */
        this.AllowEmpty = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RuleType = 'RuleType' in params ? params.RuleType : null;
        this.RulePaths = 'RulePaths' in params ? params.RulePaths : null;
        this.RefererType = 'RefererType' in params ? params.RefererType : null;
        this.Referers = 'Referers' in params ? params.Referers : null;
        this.AllowEmpty = 'AllowEmpty' in params ? params.AllowEmpty : null;

    }
}

/**
 * Path cache configuration follows the origin server configuration.
 * @class
 */
class CacheConfigFollowOrigin extends  AbstractModel {
    constructor(){
        super();

        /**
         * The path cache follows the origin site configuration switch. The values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Heuristic cache configuration
         * @type {HeuristicCache || null}
         */
        this.HeuristicCache = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

        if (params.HeuristicCache) {
            let obj = new HeuristicCache();
            obj.deserialize(params.HeuristicCache)
            this.HeuristicCache = obj;
        }

    }
}

/**
 * Information of sticker on sticker track.
 * @class
 */
class StickerTrackItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Source of media material for sticker segment, which can be:
<li>ID of VOD media files</li>
<li>Download URL of other media files</li>
Note: when a download URL of other media files is used as the material source and access control (such as hotlink protection) is enabled, the URL needs to carry access control parameters (such as hotlink protection signature).
         * @type {string || null}
         */
        this.SourceMedia = null;

        /**
         * Sticker duration in seconds.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * Start time of sticker on track in seconds.
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * Origin position. Valid values:
<li> Center: the origin of coordinates is the center position, such as the center of canvas.</li>
Default value: Center.
         * @type {string || null}
         */
        this.CoordinateOrigin = null;

        /**
         * The horizontal position of the origin of the sticker relative to the origin of the canvas. % and px formats are supported:
<li>If the string ends in %, the `XPos` of the sticker will be at the position of the specified percentage of the canvas width; for example, `10%` means that `XPos` is 10% of the canvas width.</li><li>If the string ends in px, the `XPos` of the sticker will be in px; for example, `100px` means that `XPos` is 100 px.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * The vertical position of the origin of the sticker relative to the origin of the canvas. % and px formats are supported:
<li>If the string ends in %, the `YPos` of the sticker will be at the position of the specified percentage of the canvas height; for example, `10%` means that `YPos` is 10% of the canvas height.</li>
<li>If the string ends in px, the `YPos` of the sticker will be in px; for example, `100px` means that `YPos` is 100 px.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.YPos = null;

        /**
         * Sticker width. % and px formats are supported:
<li>If the string ends in %, the `Width` of the sticker will be the specified percentage of the canvas width; for example, `10%` means that `Width` is 10% of the canvas width.</li>
<li>If the string ends in px, the `Width` of the sticker will be in px; for example, `100px` means that `Width` is 100 px.</li>
<li>If both `Width` and `Height` are empty, then they will be the `Width` and `Height` of the sticker material, respectively.</li>
<li>If `Width` is empty (0), but `Height` is not empty, `Width` will be proportionally scaled.</li>
<li>If `Width` is not empty, but `Height` is empty, `Height` will be proportionally scaled.</li>
         * @type {string || null}
         */
        this.Width = null;

        /**
         * Sticker height. % and px formats are supported:
<li>If the string ends in %, the `Height` of the sticker will be the specified percentage of the canvas height; for example, `10%` means that `Height` is 10% of the canvas height.</li>
<li>If the string ends in px, the `Height` of the sticker will be in px; for example, `100px` means that `Height` is 100 px.</li>
<li>If both `Width` and `Height` are empty, then they will be the `Width` and `Height` of the sticker material, respectively.</li>
<li>If `Width` is empty, but `Height` is not empty, `Width` will be proportionally scaled.</li>
<li>If `Width` is not empty, but `Height` is empty, `Height` will be proportionally scaled.</li>
         * @type {string || null}
         */
        this.Height = null;

        /**
         * Operation on sticker such as image rotation.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ImageTransform> || null}
         */
        this.ImageOperations = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SourceMedia = 'SourceMedia' in params ? params.SourceMedia : null;
        this.Duration = 'Duration' in params ? params.Duration : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.CoordinateOrigin = 'CoordinateOrigin' in params ? params.CoordinateOrigin : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;

        if (params.ImageOperations) {
            this.ImageOperations = new Array();
            for (let z in params.ImageOperations) {
                let obj = new ImageTransform();
                obj.deserialize(params.ImageOperations[z]);
                this.ImageOperations.push(obj);
            }
        }

    }
}

/**
 * ModifyEventConfig response structure.
 * @class
 */
class ModifyEventConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ProcessMedia request structure.
 * @class
 */
class ProcessMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file ID, i.e., the globally unique ID of a file in VOD assigned by the VOD backend after successful upload. This field can be obtained through the [video upload completion event notification](https://intl.cloud.tencent.com/document/product/266/7830?from_cn_redirect=1) or [VOD Console](https://console.cloud.tencent.com/vod/media).
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Parameter of video processing task.
         * @type {MediaProcessTaskInput || null}
         */
        this.MediaProcessTask = null;

        /**
         * The information of the audio/video moderation task\*.
This parameter is <font color=red>\*no longer recommended</font>. Please use [ReviewAudioVideo](https://intl.cloud.tencent.com/document/api/266/80283?from_cn_redirect=1) or [ReviewImage](https://intl.cloud.tencent.com/document/api/266/73217?from_cn_redirect=1) instead.
         * @type {AiContentReviewTaskInput || null}
         */
        this.AiContentReviewTask = null;

        /**
         * Video content analysis task parameter.
         * @type {AiAnalysisTaskInput || null}
         */
        this.AiAnalysisTask = null;

        /**
         * Type parameter of video content recognition task.
         * @type {AiRecognitionTaskInput || null}
         */
        this.AiRecognitionTask = null;

        /**
         * Task flow priority. The higher the value, the higher the priority. Value range: -10-10. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * Notification mode for task flow status change. Valid values: Finish, Change, None. If this parameter is left empty, `Finish` will be used.
         * @type {string || null}
         */
        this.TasksNotifyMode = null;

        /**
         * The source context which is used to pass through the user request information. The task flow status change callback will return the value of this field. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * Used to identify duplicate requests. After you send a request, if any request with the same `SessionId` has already been sent in the last three days (72 hours), an error message will be returned. `SessionId` contains up to 50 characters. If this parameter is not carried or is an empty string, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Reserved field for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

        if (params.MediaProcessTask) {
            let obj = new MediaProcessTaskInput();
            obj.deserialize(params.MediaProcessTask)
            this.MediaProcessTask = obj;
        }

        if (params.AiContentReviewTask) {
            let obj = new AiContentReviewTaskInput();
            obj.deserialize(params.AiContentReviewTask)
            this.AiContentReviewTask = obj;
        }

        if (params.AiAnalysisTask) {
            let obj = new AiAnalysisTaskInput();
            obj.deserialize(params.AiAnalysisTask)
            this.AiAnalysisTask = obj;
        }

        if (params.AiRecognitionTask) {
            let obj = new AiRecognitionTaskInput();
            obj.deserialize(params.AiRecognitionTask)
            this.AiRecognitionTask = obj;
        }
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.TasksNotifyMode = 'TasksNotifyMode' in params ? params.TasksNotifyMode : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * DescribeMediaPlayStatDetails response structure.
 * @class
 */
class DescribeMediaPlayStatDetailsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The playback statistics.
         * @type {Array.<PlayStatInfo> || null}
         */
        this.PlayStatInfoSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.PlayStatInfoSet) {
            this.PlayStatInfoSet = new Array();
            for (let z in params.PlayStatInfoSet) {
                let obj = new PlayStatInfo();
                obj.deserialize(params.PlayStatInfoSet[z]);
                this.PlayStatInfoSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Face enhancement configuration.
 * @class
 */
class FaceEnhanceInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable face enhancement. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The face enhancement strength. This parameter is valid only if `Switch` is `ON`. Value range: 0.0 – 1.0.
Default value: `0.0`.
         * @type {number || null}
         */
        this.Intensity = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Intensity = 'Intensity' in params ? params.Intensity : null;

    }
}

/**
 * Video stream configuration parameter
 * @class
 */
class VideoTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The video codec. Valid values:
<li>libx264: H.264</li>
<li>libx265: H.265</li>
<li>av1: AOMedia Video 1</li>
<li>H.266: H.266</li>
<font color=red>Notes:</font>
<li>The AOMedia Video 1 and H.266 codecs can only be used for MP4 files.</li>
<li> Only CRF is supported for H.266 currently.</li>
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * Video frame rate in Hz. Value range: [0,100].
If the value is 0, the frame rate will be the same as that of the source video.
         * @type {number || null}
         */
        this.Fps = null;

        /**
         * Bitrate of video stream in Kbps. Value range: 0 and [128, 35,000].
If the value is 0, the bitrate of the video will be the same as that of the source video.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * The maximum video width (or long side) in pixels. Value range: 0 and [128, 8192].
<li>If both `Width` and `Height` are 0, the output resolution will be the same as that of the source video.</li>
<li>If `Width` is 0 and `Height` is not, the video width will be proportionally scaled.</li>
<li>If `Width` is not 0 and `Height` is, the video height will be proportionally scaled.</li>
<li>If neither `Width` nor `Height` is 0, the specified width and height will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The maximum video height (or short side) in pixels. Value range: 0 and [128, 8192].
<li>If both `Width` and `Height` are 0, the output resolution will be the same as that of the source video.</li>
<li>If `Width` is 0 and `Height` is not, the video width will be proportionally scaled.</li>
<li>If `Width` is not 0 and `Height` is, the video height will be proportionally scaled.</li>
<li>If neither `Width` nor `Height` is 0, the specified width and height will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Fill type, the way of processing a screenshot when the configured aspect ratio is different from that of the source video. Valid values:
<li>stretch: stretches the video image frame by frame to fill the screen. The video image may become "squashed" or "stretched" after transcoding.</li>
<li>black: fills the uncovered area with black color, without changing the image's aspect ratio.</li>
<li>white: fills the uncovered area with white color, without changing the image's aspect ratio.</li>
<li>gauss: applies Gaussian blur to the uncovered area, without changing the image's aspect ratio.</li>
Default value: black
         * @type {string || null}
         */
        this.FillType = null;

        /**
         * The video constant rate factor (CRF). Value range: 1-51.

<font color=red>Notes:</font>
<li>If this parameter is specified, CRF encoding will be used and the bitrate parameter will be ignored.</li>
<li>If `Codec` is `H.266`, this parameter is required (`28` is recommended).</li>
<li>We don’t recommend using this parameter unless you have special requirements.</li>
         * @type {number || null}
         */
        this.Vcrf = null;

        /**
         * I-frame interval in frames. Valid values: 0 and 1-100000.
When this parameter is set to 0 or left empty, `Gop` will be automatically set.
         * @type {number || null}
         */
        this.Gop = null;

        /**
         * Whether to output an HDR (high dynamic range) video if the source video is HDR. Valid values:
<li>ON: If the source video is HDR, output an HDR video; if not, output an SDR (standard dynamic range) video.</li>
<li>OFF: Output an SDR video regardless of whether the source video is HDR.</li>
Default value: OFF.
         * @type {string || null}
         */
        this.PreserveHDRSwitch = null;

        /**
         * The codec tag. This parameter is valid only if the H.265 codec is used. Valid values:
<li>hvc1</li>
<li>hev1</li>
Default value: hvc1.
         * @type {string || null}
         */
        this.CodecTag = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Fps = 'Fps' in params ? params.Fps : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.FillType = 'FillType' in params ? params.FillType : null;
        this.Vcrf = 'Vcrf' in params ? params.Vcrf : null;
        this.Gop = 'Gop' in params ? params.Gop : null;
        this.PreserveHDRSwitch = 'PreserveHDRSwitch' in params ? params.PreserveHDRSwitch : null;
        this.CodecTag = 'CodecTag' in params ? params.CodecTag : null;

    }
}

/**
 * Parameters for OCR-based recognition of politically sensitive content
 * @class
 */
class PoliticalOcrReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable OCR-based recognition of politically sensitive content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * ModifyCDNDomainConfig response structure.
 * @class
 */
class ModifyCDNDomainConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result for OCR-based recognition of pornographic content
 * @class
 */
class AiReviewTaskPornOcrResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for OCR-based recognition of pornographic content
         * @type {AiReviewPornOcrTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for OCR-based recognition of pornographic content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewPornOcrTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an OCR-based moderation task (pornographic content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewPornOcrTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewPornOcrTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * ModifyContentReviewTemplate response structure.
 * @class
 */
class ModifyContentReviewTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeWatermarkTemplates request structure.
 * @class
 */
class DescribeWatermarkTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Watermark type filter. Valid values:
<li>image: image watermark;</li>
<li>text: text watermark.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Unique ID filter of watermarking templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Number of returned entries
<li>Default value: 10;</li>
<li>Maximum value: 100.</li>
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Artifact removal (smoothing) configuration.
 * @class
 */
class ArtifactRepairInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable artifact removal. Valid values:
<li>`ON`</li>
<li>`OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The artifact removal type. This parameter is valid only if `Switch` is `ON`. Valid values:
<li>`weak`</li>
<li>`strong`</li>
Default value: `weak`.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Input parameter type of cover generating task
 * @class
 */
class CoverBySnapshotTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Time point screencapturing template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Screencapturing mode. Valid values:
<li>Time: screencaptures by time point</li>
<li>Percent: screencaptures by percentage</li>
         * @type {string || null}
         */
        this.PositionType = null;

        /**
         * Screenshot position:
<li>For time point screencapturing, this means to take a screenshot at a specified time point (in seconds) and use it as the cover</li>
<li>For percentage screencapturing, this value means to take a screenshot at a specified percentage of the video duration and use it as the cover</li>
         * @type {number || null}
         */
        this.PositionValue = null;

        /**
         * List of up to 10 image or text watermarks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WatermarkInput> || null}
         */
        this.WatermarkSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.PositionType = 'PositionType' in params ? params.PositionType : null;
        this.PositionValue = 'PositionValue' in params ? params.PositionValue : null;

        if (params.WatermarkSet) {
            this.WatermarkSet = new Array();
            for (let z in params.WatermarkSet) {
                let obj = new WatermarkInput();
                obj.deserialize(params.WatermarkSet[z]);
                this.WatermarkSet.push(obj);
            }
        }

    }
}

/**
 * Control parameter of video splitting recognition task
 * @class
 */
class SegmentConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of video splitting recognition task. Valid values:
<li>ON: enables intelligent video splitting recognition task;</li>
<li>OFF: disables intelligent video splitting recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * The input parameters of an audio/video remastering task.
 * @class
 */
class RebuildMediaTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The start offset (seconds). If you do not specify this, the segment will start from the beginning of the video.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * The end offset (seconds). If you do not specify this, the segment will end at the end of the video.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * The ID of the remaster template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The video quality remastering parameters.
         * @type {RepairInfo || null}
         */
        this.RepairInfo = null;

        /**
         * The smart frame interpolation parameters.
         * @type {VideoFrameInterpolationInfo || null}
         */
        this.VideoFrameInterpolationInfo = null;

        /**
         * The super resolution parameters.
         * @type {SuperResolutionInfo || null}
         */
        this.SuperResolutionInfo = null;

        /**
         * The high dynamic range (HDR) parameters.
         * @type {HDRInfo || null}
         */
        this.HDRInfo = null;

        /**
         * The image noise removal parameters.
         * @type {VideoDenoiseInfo || null}
         */
        this.VideoDenoiseInfo = null;

        /**
         * The noise removal parameters.
         * @type {AudioDenoiseInfo || null}
         */
        this.AudioDenoiseInfo = null;

        /**
         * The color enhancement parameters.
         * @type {ColorEnhanceInfo || null}
         */
        this.ColorInfo = null;

        /**
         * The detail enhancement parameters.
         * @type {SharpEnhanceInfo || null}
         */
        this.SharpInfo = null;

        /**
         * The face enhancement parameters.
         * @type {FaceEnhanceInfo || null}
         */
        this.FaceInfo = null;

        /**
         * The low-light enhancement parameters.
         * @type {LowLightEnhanceInfo || null}
         */
        this.LowLightInfo = null;

        /**
         * The banding removal parameters.
         * @type {ScratchRepairInfo || null}
         */
        this.ScratchRepairInfo = null;

        /**
         * The artifact removal (smoothing) parameters.
         * @type {ArtifactRepairInfo || null}
         */
        this.ArtifactRepairInfo = null;

        /**
         * The output parameters of the file.
         * @type {RebuildMediaTargetInfo || null}
         */
        this.TargetInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Definition = 'Definition' in params ? params.Definition : null;

        if (params.RepairInfo) {
            let obj = new RepairInfo();
            obj.deserialize(params.RepairInfo)
            this.RepairInfo = obj;
        }

        if (params.VideoFrameInterpolationInfo) {
            let obj = new VideoFrameInterpolationInfo();
            obj.deserialize(params.VideoFrameInterpolationInfo)
            this.VideoFrameInterpolationInfo = obj;
        }

        if (params.SuperResolutionInfo) {
            let obj = new SuperResolutionInfo();
            obj.deserialize(params.SuperResolutionInfo)
            this.SuperResolutionInfo = obj;
        }

        if (params.HDRInfo) {
            let obj = new HDRInfo();
            obj.deserialize(params.HDRInfo)
            this.HDRInfo = obj;
        }

        if (params.VideoDenoiseInfo) {
            let obj = new VideoDenoiseInfo();
            obj.deserialize(params.VideoDenoiseInfo)
            this.VideoDenoiseInfo = obj;
        }

        if (params.AudioDenoiseInfo) {
            let obj = new AudioDenoiseInfo();
            obj.deserialize(params.AudioDenoiseInfo)
            this.AudioDenoiseInfo = obj;
        }

        if (params.ColorInfo) {
            let obj = new ColorEnhanceInfo();
            obj.deserialize(params.ColorInfo)
            this.ColorInfo = obj;
        }

        if (params.SharpInfo) {
            let obj = new SharpEnhanceInfo();
            obj.deserialize(params.SharpInfo)
            this.SharpInfo = obj;
        }

        if (params.FaceInfo) {
            let obj = new FaceEnhanceInfo();
            obj.deserialize(params.FaceInfo)
            this.FaceInfo = obj;
        }

        if (params.LowLightInfo) {
            let obj = new LowLightEnhanceInfo();
            obj.deserialize(params.LowLightInfo)
            this.LowLightInfo = obj;
        }

        if (params.ScratchRepairInfo) {
            let obj = new ScratchRepairInfo();
            obj.deserialize(params.ScratchRepairInfo)
            this.ScratchRepairInfo = obj;
        }

        if (params.ArtifactRepairInfo) {
            let obj = new ArtifactRepairInfo();
            obj.deserialize(params.ArtifactRepairInfo)
            this.ArtifactRepairInfo = obj;
        }

        if (params.TargetInfo) {
            let obj = new RebuildMediaTargetInfo();
            obj.deserialize(params.TargetInfo)
            this.TargetInfo = obj;
        }

    }
}

/**
 * Parameters for custom recognition
 * @class
 */
class UserDefineConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameters for custom facial recognition
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {UserDefineFaceReviewTemplateInfo || null}
         */
        this.FaceReviewInfo = null;

        /**
         * Parameters for custom ASR-based recognition
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {UserDefineAsrTextReviewTemplateInfo || null}
         */
        this.AsrReviewInfo = null;

        /**
         * Parameters for custom OCR-based recognition
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {UserDefineOcrTextReviewTemplateInfo || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FaceReviewInfo) {
            let obj = new UserDefineFaceReviewTemplateInfo();
            obj.deserialize(params.FaceReviewInfo)
            this.FaceReviewInfo = obj;
        }

        if (params.AsrReviewInfo) {
            let obj = new UserDefineAsrTextReviewTemplateInfo();
            obj.deserialize(params.AsrReviewInfo)
            this.AsrReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new UserDefineOcrTextReviewTemplateInfo();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * Control parameters for detecting video noise.
 * @class
 */
class NoiseConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video noise inspection switch, optional values:
<li>ON: enabled;</li>
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Live recording information
 * @class
 */
class LiveRecordInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Live recording stream ID.
         * @type {string || null}
         */
        this.StreamId = null;

        /**
         * Recording start time, use [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.RecordStartTime = null;

        /**
         * Recording end time, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.RecordEndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StreamId = 'StreamId' in params ? params.StreamId : null;
        this.RecordStartTime = 'RecordStartTime' in params ? params.RecordStartTime : null;
        this.RecordEndTime = 'RecordEndTime' in params ? params.RecordEndTime : null;

    }
}

/**
 * Split video segment.
 * @class
 */
class AiRecognitionTaskSegmentSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * File ID, which is valid only when a VOD file is processed and the subsegments generated through segmentation are also VOD files.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Split video segment URL.
         * @type {string || null}
         */
        this.SegmentUrl = null;

        /**
         * Confidence of split segment. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Start time offset of split segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of split segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Split cover image URL.
         * @type {string || null}
         */
        this.CovImgUrl = null;

        /**
         * Special field, which should be ignored.
         * @type {string || null}
         */
        this.SpecialInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SegmentUrl = 'SegmentUrl' in params ? params.SegmentUrl : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.CovImgUrl = 'CovImgUrl' in params ? params.CovImgUrl : null;
        this.SpecialInfo = 'SpecialInfo' in params ? params.SpecialInfo : null;

    }
}

/**
 * Video retrieval task information
 * @class
 */
class RestoreMediaTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * File ID
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Original storage class
         * @type {string || null}
         */
        this.OriginalStorageClass = null;

        /**
         * Target storage class. For temporary retrieval, the target storage class is the same as the original.
         * @type {string || null}
         */
        this.TargetStorageClass = null;

        /**
         * Retrieval mode. Valid values:
<li>Expedited</li>
<li>Standard</li>
<li>Bulk</li>
         * @type {string || null}
         */
        this.RestoreTier = null;

        /**
         * Validity period (days) for a temporary copy. `0` indicates permanent retrieval.
         * @type {number || null}
         */
        this.RestoreDay = null;

        /**
         * This field has been disused.
         * @type {number || null}
         */
        this.Status = null;

        /**
         * This field has been disused.
         * @type {string || null}
         */
        this.Message = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.OriginalStorageClass = 'OriginalStorageClass' in params ? params.OriginalStorageClass : null;
        this.TargetStorageClass = 'TargetStorageClass' in params ? params.TargetStorageClass : null;
        this.RestoreTier = 'RestoreTier' in params ? params.RestoreTier : null;
        this.RestoreDay = 'RestoreDay' in params ? params.RestoreDay : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Message = 'Message' in params ? params.Message : null;

    }
}

/**
 * Input parameters for OCR-based recognition of pornographic content
 * @class
 */
class AiReviewPornOcrTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the template for recognition of pornographic content
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Text keyword recognition control parameter.
 * @class
 */
class OcrWordsConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of text keyword recognition task. Valid values:
<li>ON: enables text keyword recognition task;</li>
<li>OFF: disables text keyword recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Keyword filter tag, which specifies the keyword tag that needs to be returned. If this parameter is left empty, all results will be returned.
There can be up to 10 tags, each with a length limit of 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;

    }
}

/**
 * CreateSuperPlayerConfig response structure.
 * @class
 */
class CreateSuperPlayerConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result information of intelligent frame-specific tagging
 * @class
 */
class AiAnalysisTaskFrameTagOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of frame-specific video tags
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaAiAnalysisFrameTagSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for frame-specific video tags. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for frame-specific video tags, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaAiAnalysisFrameTagSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * CreateEnhanceMediaTemplate response structure.
 * @class
 */
class CreateEnhanceMediaTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Enhance Media Template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteReviewTemplate response structure.
 * @class
 */
class DeleteReviewTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DNS verification information
 * @class
 */
class DNSVerifyInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * sub-parsing.
         * @type {string || null}
         */
        this.SubDomain = null;

        /**
         * parse value.
         * @type {string || null}
         */
        this.Record = null;

        /**
         * parsing type.
         * @type {string || null}
         */
        this.RecordType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubDomain = 'SubDomain' in params ? params.SubDomain : null;
        this.Record = 'Record' in params ? params.Record : null;
        this.RecordType = 'RecordType' in params ? params.RecordType : null;

    }
}

/**
 * Result information of animated image generating task
 * @class
 */
class MediaAnimatedGraphicsItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Address of generated animated image.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Animated image generating template ID. For more information, please see [Animated Image Generating Parameter Template](https://intl.cloud.tencent.com/document/product/266/33481?from_cn_redirect=1#.3Cspan-id-.3D-.22zdt.22.3E.3C.2Fspan.3E.E8.BD.AC.E5.8A.A8.E5.9B.BE.E6.A8.A1.E6.9D.BF).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Animated image format, such as gif.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Height of animated image in px.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Width of animated image in px.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Bitrate of animated image in bps.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Size of animated image in bytes.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Size = null;

        /**
         * MD5 value of an animated image.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * Start time offset of animated image in video in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of animated image in video in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Container = 'Container' in params ? params.Container : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

    }
}

/**
 * Input of voice translation.
 * @class
 */
class AiRecognitionTaskAsrTranslateResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Voice translation template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Panoramic recording information
 * @class
 */
class WebPageRecordInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Panoramic recording Url.
         * @type {string || null}
         */
        this.RecordUrl = null;

        /**
         * Panoramic recording task ID.
         * @type {string || null}
         */
        this.RecordTaskId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RecordUrl = 'RecordUrl' in params ? params.RecordUrl : null;
        this.RecordTaskId = 'RecordTaskId' in params ? params.RecordTaskId : null;

    }
}

/**
 * DescribeCDNUsageData response structure.
 * @class
 */
class DescribeCDNUsageDataResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Time granularity in minutes.
         * @type {number || null}
         */
        this.DataInterval = null;

        /**
         * CDN statistics.
         * @type {Array.<StatDataItem> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DataInterval = 'DataInterval' in params ? params.DataInterval : null;

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new StatDataItem();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyWordSample request structure.
 * @class
 */
class ModifyWordSampleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Keyword. Length limit: 128 characters.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * <b>Keyword usage. Valid values:</b>
1. Recognition.Ocr: OCR-based content recognition
2. Recognition.Asr: ASR-based content recognition
3. Review.Ocr: OCR-based inappropriate information recognition
4. Review.Asr: ASR-based inappropriate information recognition
<b>Valid values can also be:</b>
5. Recognition: ASR- and OCR-based content recognition; equivalent to 1+2
6. Review: ASR- and OCR-based inappropriate information recognition; equivalent to 3+4
7. All: equivalent to 1+2+3+4
         * @type {Array.<string> || null}
         */
        this.Usages = null;

        /**
         * Tag operation information.
         * @type {AiSampleTagOperation || null}
         */
        this.TagOperationInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Usages = 'Usages' in params ? params.Usages : null;

        if (params.TagOperationInfo) {
            let obj = new AiSampleTagOperation();
            obj.deserialize(params.TagOperationInfo)
            this.TagOperationInfo = obj;
        }

    }
}

/**
 * Video editing task information
 * @class
 */
class EditMediaTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task flow status. Valid values:
<li>PROCESSING: processing;</li>
<li>FINISH: completed.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. 0: success; other values: failure.
<li>40000: invalid input parameter. Please check it;</li>
<li>60000: invalid source file (e.g., video data is corrupted). Please check whether the source file is normal;</li>
<li>70000: internal service error. Please try again.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Progress of a video editing task. Value range: [0, 100]
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * Input of video editing task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {EditMediaTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of video editing task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {EditMediaTaskOutput || null}
         */
        this.Output = null;

        /**
         * The metadata of the output video.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * The task ID for the task type `Procedure`. If a task flow (`ProcedureName`) is specified by [EditMedia](https://intl.cloud.tencent.com/document/api/266/34783?from_cn_redirect=1), and the task flow includes one or more of `MediaProcessTask`, `AiAnalysisTask`, and `AiRecognitionTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ProcedureTaskId = null;

        /**
         * The task ID for the task type `ReviewAudioVideo`. If a task flow (`ProcedureName`) is specified by [EditMedia](https://intl.cloud.tencent.com/document/api/266/34783?from_cn_redirect=1), and the task flow includes `ReviewAudioVideoTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ReviewAudioVideoTaskId = null;

        /**
         * The ID used for deduplication. If there was a request with the same ID in the last seven days, the current request will return an error. The ID can contain up to 50 characters. If this parameter is left empty or a blank string is entered, no deduplication will be performed.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context which is used to pass through the user request information. The task flow status change callback will return the value of this field. It can contain up to 1,000 characters.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

        if (params.Input) {
            let obj = new EditMediaTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new EditMediaTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }
        this.ProcedureTaskId = 'ProcedureTaskId' in params ? params.ProcedureTaskId : null;
        this.ReviewAudioVideoTaskId = 'ReviewAudioVideoTaskId' in params ? params.ReviewAudioVideoTaskId : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * CreateJustInTimeTranscodeTemplate response structure.
 * @class
 */
class CreateJustInTimeTranscodeTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Just In Time transcoding watermark template configuration.
 * @class
 */
class WatermarkConfigureData extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable watermark. Possible values:
<li>ON: means enabling watermark;</li>
<li>OFF: means turning off watermark. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Watermark URL.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * The width of the watermark. 
<li>The string ends with %, indicating that the watermark Width is a percentage of the video width, such as 10% indicating that the Width is 10% of the video width;</li>
         * @type {string || null}
         */
        this.Width = null;

        /**
         * The height of the watermark. 
<li>The string ends with %, indicating that the watermark Height is a percentage of the video height, for example, 10% means that the Height is 10% of the video height;</li>
         * @type {string || null}
         */
        this.Height = null;

        /**
         * The horizontal position of the watermark origin from the video image coordinate origin. The string ends with %, indicating that the watermark XPos specifies a percentage of the video width, such as 10% indicating that XPos is 10% of the video width.
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * The vertical position of the watermark origin from the video image coordinate origin. When the string ends with %, it means that the watermark YPos specifies a percentage of the video height. For example, 10% means that YPos is 10% of the video height.
         * @type {string || null}
         */
        this.YPos = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;

    }
}

/**
 * DeleteMedia response structure.
 * @class
 */
class DeleteMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifySnapshotByTimeOffsetTemplate response structure.
 * @class
 */
class ModifySnapshotByTimeOffsetTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteHeadTailTemplate request structure.
 * @class
 */
class DeleteHeadTailTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Head Tail Template Number.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Result type of intelligent tagging task
 * @class
 */
class AiAnalysisTaskTagResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of intelligent tagging task.
         * @type {AiAnalysisTaskTagInput || null}
         */
        this.Input = null;

        /**
         * Output of intelligent tagging task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskTagOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an intelligent labeling task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the smart label task started executing, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the smart label task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiAnalysisTaskTagInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiAnalysisTaskTagOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * SearchMedia response structure.
 * @class
 */
class SearchMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
<li>Maximum value: 5000. If the number of eligible entries is greater than 5,000, this field will return 5,000 instead of the actual number.</li>
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Media file information list
         * @type {Array.<MediaInfo> || null}
         */
        this.MediaInfoSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.MediaInfoSet) {
            this.MediaInfoSet = new Array();
            for (let z in params.MediaInfoSet) {
                let obj = new MediaInfo();
                obj.deserialize(params.MediaInfoSet[z]);
                this.MediaInfoSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The output of a moderation task.
 * @class
 */
class ReviewAudioVideoTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The handling suggestion. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The most likely label for the suspicious content. This parameter is valid only if `Suggestion` is `review` or `block`.
<li>Porn</li>
<li>Terrorism</li>
         * @type {string || null}
         */
        this.Label = null;

        /**
         * The most likely format of the suspicious content. This parameter is valid only if `Suggestion` is `review` or `block`.
<li>Image</li>
<li>OCR</li>
<li>ASR</li>
<li>Voice</li>
         * @type {string || null}
         */
        this.Form = null;

        /**
         * A list of the suspicious segments detected.
<font color=red>Note</font>: Only the first 10 results will be returned at most. You can get all the results from the file specified by `SegmentSetFileUrl`.
         * @type {Array.<ReviewAudioVideoSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * The URL of the file that contains suspicious segments. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time (`SegmentSetFileUrlExpireTime`).
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * The expiration time of the file that contains suspicious segments, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

        /**
         * The thumbnail moderation result.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ReviewImageResult || null}
         */
        this.CoverReviewResult = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;
        this.Form = 'Form' in params ? params.Form : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new ReviewAudioVideoSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

        if (params.CoverReviewResult) {
            let obj = new ReviewImageResult();
            obj.deserialize(params.CoverReviewResult)
            this.CoverReviewResult = obj;
        }

    }
}

/**
 * Node cache expiration time configuration
 * @class
 */
class Cache extends  AbstractModel {
    constructor(){
        super();

        /**
         * Path cache configuration.
         * @type {Array.<RuleCache> || null}
         */
        this.RuleCache = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.RuleCache) {
            this.RuleCache = new Array();
            for (let z in params.RuleCache) {
                let obj = new RuleCache();
                obj.deserialize(params.RuleCache[z]);
                this.RuleCache.push(obj);
            }
        }

    }
}

/**
 * The output of a watermark removal task.
 * @class
 */
class RemoveWaterMarkTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The file type, such as MP4 or MP3.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * The playback URL of the output file.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * The filename, which can be up to 64 characters long.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * The metadata of the video, including size, duration, video stream information, and audio stream information.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.MediaName = 'MediaName' in params ? params.MediaName : null;

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }

    }
}

/**
 * ModifyMediaStorageClass request structure.
 * @class
 */
class ModifyMediaStorageClassRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file unique identifier list, maximum length: 100.
         * @type {Array.<string> || null}
         */
        this.FileIds = null;

        /**
         * The target storage class. Valid values:
<li>STANDARD</li>
<li>STANDARD_IA</li>
<li>ARCHIVE</li>
<li>DEEP_ARCHIVE</li>
         * @type {string || null}
         */
        this.StorageClass = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The retrieval mode. When switching files from DEEP ARCHIVE or ARCHIVE to STANDARD, you need to specify the retrieval mode. For details, see [Data retrieval and retrieval mode](https://intl.cloud.tencent.com/document/product/266/43051#data-retrieval-and-retrieval-mode.3Ca-id.3D.22retake.22.3E.3C.2Fa.3E).
If the current storage class is ARCHIVE, the valid values for this parameter are as follows:
<li>Expedited</li>
<li>Standard</li>
<li>Bulk</li>
If the current storage class is DEEP ARCHIVE, the valid values for this parameter are as follows:
<li>Standard</li>
<li>Bulk</li>
         * @type {string || null}
         */
        this.RestoreTier = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileIds = 'FileIds' in params ? params.FileIds : null;
        this.StorageClass = 'StorageClass' in params ? params.StorageClass : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.RestoreTier = 'RestoreTier' in params ? params.RestoreTier : null;

    }
}

/**
 * Result information of intelligent tagging
 * @class
 */
class AiAnalysisTaskTagOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of intelligently generated video tags
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `TagSetFileUrl`.
         * @type {Array.<MediaAiAnalysisTagItem> || null}
         */
        this.TagSet = null;

        /**
         * URL to the file for intelligently generated video tags. The file is in JSON format and has the same data structure as `TagSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `TagSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.TagSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for intelligently generated video tags, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.TagSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.TagSet) {
            this.TagSet = new Array();
            for (let z in params.TagSet) {
                let obj = new MediaAiAnalysisTagItem();
                obj.deserialize(params.TagSet[z]);
                this.TagSet.push(obj);
            }
        }
        this.TagSetFileUrl = 'TagSetFileUrl' in params ? params.TagSetFileUrl : null;
        this.TagSetFileUrlExpireTime = 'TagSetFileUrlExpireTime' in params ? params.TagSetFileUrlExpireTime : null;

    }
}

/**
 * Control parameters for detecting video mosaic.
 * @class
 */
class MosaicConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video mosaic inspection switch, optional values:
<li>ON: enabled;</li>
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Information of the intelligent highlight generating result
 * @class
 */
class AiAnalysisTaskHighlightOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of intelligently generated highlights
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `HighlightSetFileUrl`.
         * @type {Array.<MediaAiAnalysisHighlightItem> || null}
         */
        this.HighlightSet = null;

        /**
         * URL to the file for intelligently generated highlights. The file is in JSON format and has the same data structure as `HighlightSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `HighlightSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.HighlightSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for intelligently generated highlights, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.HighlightSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.HighlightSet) {
            this.HighlightSet = new Array();
            for (let z in params.HighlightSet) {
                let obj = new MediaAiAnalysisHighlightItem();
                obj.deserialize(params.HighlightSet[z]);
                this.HighlightSet.push(obj);
            }
        }
        this.HighlightSetFileUrl = 'HighlightSetFileUrl' in params ? params.HighlightSetFileUrl : null;
        this.HighlightSetFileUrlExpireTime = 'HighlightSetFileUrlExpireTime' in params ? params.HighlightSetFileUrlExpireTime : null;

    }
}

/**
 * DescribeRebuildMediaTemplates request structure.
 * @class
 */
class DescribeRebuildMediaTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of rebuild media templates.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The template type. Valid values:
<li>`Preset`</li>
<li>`Custom`</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * The maximum number of records to return. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * The information of an image moderation segment.
 * @class
 */
class ReviewImageSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * The confidence score for the suspicious segment.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * The suggestion. Valid values:
<li>`review`: The content may be non-compliant and needs to be reviewed.</li>
<li>`block`: The content is non-compliant and should be blocked.</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The most likely label for the suspicious content. Valid values: <li>`Porn`</li> <li>`Terror`</li>
         * @type {string || null}
         */
        this.Label = null;

        /**
         * The sub-label.
         * @type {string || null}
         */
        this.SubLabel = null;

        /**
         * The type of the suspicious segment. Valid values:
<li>`Image` (people or icons in images)</li>
<li>`OCR` (text in images)</li>
         * @type {string || null}
         */
        this.Form = null;

        /**
         * The pixel coordinates of the suspicious people, icons, or text. The format is [x1, y1, x2, y2], which indicates the coordinates of the top-left and bottom-right corners.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

        /**
         * The content of the suspicious text detected. This parameter is valid only if `Form` is `OCR`.
         * @type {string || null}
         */
        this.Text = null;

        /**
         * The keywords that match the suspicious text. This parameter is valid only if `Form` is `OCR`.
         * @type {Array.<string> || null}
         */
        this.KeywordSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;
        this.SubLabel = 'SubLabel' in params ? params.SubLabel : null;
        this.Form = 'Form' in params ? params.Form : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;
        this.Text = 'Text' in params ? params.Text : null;
        this.KeywordSet = 'KeywordSet' in params ? params.KeywordSet : null;

    }
}

/**
 * CreateRoundPlay response structure.
 * @class
 */
class CreateRoundPlayResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique identifier of the playlist.
         * @type {string || null}
         */
        this.RoundPlayId = null;

        /**
         * The playlist playback url.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RoundPlayId = 'RoundPlayId' in params ? params.RoundPlayId : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Input parameters of subtile information
 * @class
 */
class MediaSubtitleInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Subtitle name. Length limit: 64 characters
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Subtitle language. Common values:
<li>`zh`: Chinese</li>
<li>`en`: English</li>
<li>`ja`: Japanese</li>
<li>`ko`: Korean</li>
<li>`vi`: Vietnamese</li>
<li>`ms`: Malay</li>
<li>`th`: Thai</li>
<li>`pt`: Portuguese</li>
<li>`tr`: Turkish</li>
<li>`ar`: Arabic</li>
<li>`es`: Spanish</li>
<li>`hi`: Hindi</li>
<li>`fr`: French</li>For other valid values, see [RFC 5646](https://tools.ietf.org/html/rfc5646).
         * @type {string || null}
         */
        this.Language = null;

        /**
         * Subtitle format. Valid value:
<li>vtt</li>
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Subtitle content, which is [Base64-encoded](https://tools.ietf.org/html/rfc4648) strings
         * @type {string || null}
         */
        this.Content = null;

        /**
         * The subtitle ID. It can be up to 16 characters long, can contain letters, numbers, underscores (_), and hyphens (-), and cannot be identical to an existing subtitle ID.
         * @type {string || null}
         */
        this.Id = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Language = 'Language' in params ? params.Language : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Content = 'Content' in params ? params.Content : null;
        this.Id = 'Id' in params ? params.Id : null;

    }
}

/**
 * File verification information
 * @class
 */
class FileVerifyInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * File verification URL guidance.
         * @type {string || null}
         */
        this.FileVerifyUrl = null;

        /**
         * File verification domain name list.
         * @type {Array.<string> || null}
         */
        this.FileVerifyDomains = null;

        /**
         * File verification file name.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {string || null}
         */
        this.FileVerifyName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileVerifyUrl = 'FileVerifyUrl' in params ? params.FileVerifyUrl : null;
        this.FileVerifyDomains = 'FileVerifyDomains' in params ? params.FileVerifyDomains : null;
        this.FileVerifyName = 'FileVerifyName' in params ? params.FileVerifyName : null;

    }
}

/**
 * DeleteCDNDomain response structure.
 * @class
 */
class DeleteCDNDomainResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The moderation result for pornographic content in an image.
 * @class
 */
class PornImageResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The confidence score for the moderation result. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * The suggestion for handling the detected pornographic content. Valid values:
<li>pass/li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The label for the detected pornographic content. Valid values:
<li>porn</li>
<li>sexy</li>
<li>vulgar</li>
<li>intimacy</li>
         * @type {string || null}
         */
        this.Label = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;

    }
}

/**
 * Execution information of the adaptive bitrate streaming task.
 * @class
 */
class ComplexAdaptiveDynamicStreamingTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task status. Valid values:
<li>PROCESSING: processing;</li>
<li>FINISH: completed.</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Execution status and result of the complex adaptive bitrate streaming task. Each array element corresponds to an adaptive bitrate streaming template specified when initiating the task.
         * @type {Array.<ComplexAdaptiveDynamicStreamingTaskResult> || null}
         */
        this.ComplexAdaptiveDynamicStreamingTaskResultSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;

        if (params.ComplexAdaptiveDynamicStreamingTaskResultSet) {
            this.ComplexAdaptiveDynamicStreamingTaskResultSet = new Array();
            for (let z in params.ComplexAdaptiveDynamicStreamingTaskResultSet) {
                let obj = new ComplexAdaptiveDynamicStreamingTaskResult();
                obj.deserialize(params.ComplexAdaptiveDynamicStreamingTaskResultSet[z]);
                this.ComplexAdaptiveDynamicStreamingTaskResultSet.push(obj);
            }
        }

    }
}

/**
 * ModifyMediaInfo response structure.
 * @class
 */
class ModifyMediaInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * URL of new video cover.
* Note: this returned value is valid only if the request carries `CoverData`.*
         * @type {string || null}
         */
        this.CoverUrl = null;

        /**
         * Added subtitle information
         * @type {Array.<MediaSubtitleItem> || null}
         */
        this.AddedSubtitleSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CoverUrl = 'CoverUrl' in params ? params.CoverUrl : null;

        if (params.AddedSubtitleSet) {
            this.AddedSubtitleSet = new Array();
            for (let z in params.AddedSubtitleSet) {
                let obj = new MediaSubtitleItem();
                obj.deserialize(params.AddedSubtitleSet[z]);
                this.AddedSubtitleSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyReviewTemplate request structure.
 * @class
 */
class ModifyReviewTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * 
         * @type {string || null}
         */
        this.Name = null;

        /**
         * 
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * The violation labels to use. Valid values: <li>`Porn`: Pornographic content</li> <li>`Terror`: Terrorist content</li> <li>`Moan`: Moaning</li>
         * @type {Array.<string> || null}
         */
        this.Labels = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Labels = 'Labels' in params ? params.Labels : null;

    }
}

/**
 * Full text recognition result.
 * @class
 */
class AiRecognitionTaskOcrFullTextResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of full text recognition task.
         * @type {AiRecognitionTaskOcrFullTextResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of full text recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskOcrFullTextResultOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a full text recognition task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the full text recognition task started, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the full text recognition task was completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskOcrFullTextResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskOcrFullTextResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Segment information of media track
 * @class
 */
class MediaTrackItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Segment type. Valid values:
<li>Video: video segment.</li>
<li>Audio: audio segment.</li>
<li>Sticker: sticker segment.</li>
<li>Transition: transition.</li>
<li>Empty: empty segment.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Video segment, which is valid if `Type` is `Video`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {VideoTrackItem || null}
         */
        this.VideoItem = null;

        /**
         * Audio segment, which is valid if `Type` is `Audio`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AudioTrackItem || null}
         */
        this.AudioItem = null;

        /**
         * Sticker segment, which is valid if `Type` is `Sticker`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {StickerTrackItem || null}
         */
        this.StickerItem = null;

        /**
         * Transition, which is valid if `Type` is `Transition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaTransitionItem || null}
         */
        this.TransitionItem = null;

        /**
         * Empty segment, which is valid if `Type` is `Empty`. It is used as placeholder on time axis. <li>If you want a period of silence between two audio segments, you can use `EmptyTrackItem` to hold the place.</li>
<li>Use `EmptyTrackItem` as a placeholder to locate an item.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {EmptyTrackItem || null}
         */
        this.EmptyItem = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.VideoItem) {
            let obj = new VideoTrackItem();
            obj.deserialize(params.VideoItem)
            this.VideoItem = obj;
        }

        if (params.AudioItem) {
            let obj = new AudioTrackItem();
            obj.deserialize(params.AudioItem)
            this.AudioItem = obj;
        }

        if (params.StickerItem) {
            let obj = new StickerTrackItem();
            obj.deserialize(params.StickerItem)
            this.StickerItem = obj;
        }

        if (params.TransitionItem) {
            let obj = new MediaTransitionItem();
            obj.deserialize(params.TransitionItem)
            this.TransitionItem = obj;
        }

        if (params.EmptyItem) {
            let obj = new EmptyTrackItem();
            obj.deserialize(params.EmptyItem)
            this.EmptyItem = obj;
        }

    }
}

/**
 * RestoreMedia response structure.
 * @class
 */
class RestoreMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result type of time point screencapturing task
 * @class
 */
class MediaProcessTaskSnapshotByTimeOffsetResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of time point screencapturing task.
         * @type {SnapshotByTimeOffsetTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of time point screencapturing task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaSnapshotByTimeOffsetItem || null}
         */
        this.Output = null;

        /**
         * The progress of a time point screenshot task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the point-in-time screenshot task started to be executed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the point-in-time screenshot task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new SnapshotByTimeOffsetTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new MediaSnapshotByTimeOffsetItem();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * ModifyWordSample response structure.
 * @class
 */
class ModifyWordSampleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * EnhanceMediaByTemplate response structure.
 * @class
 */
class EnhanceMediaByTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID of the Enhance Media. You can use this ID to query the status of the EnhanceMedia task.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateJustInTimeTranscodeTemplate request structure.
 * @class
 */
class CreateJustInTimeTranscodeTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Template name, the length is limited to 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Video parameter configuration.
         * @type {VideoConfigureInfo || null}
         */
        this.VideoConfigure = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Watermark parameter configuration.
         * @type {WatermarkConfigureInfo || null}
         */
        this.WatermarkConfigure = null;

        /**
         * Template description, the length is limited to 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

        if (params.VideoConfigure) {
            let obj = new VideoConfigureInfo();
            obj.deserialize(params.VideoConfigure)
            this.VideoConfigure = obj;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

        if (params.WatermarkConfigure) {
            let obj = new WatermarkConfigureInfo();
            obj.deserialize(params.WatermarkConfigure)
            this.WatermarkConfigure = obj;
        }
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * Input parameters for audio streams in the adaptive bitrate streaming task.
 * @class
 */
class ComplexAdaptiveDynamicStreamingTaskAudioInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media ID of the input audio file. The first audio stream in the media will be fixed, while video streams and other audio streams (if any) will be ignored.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Audio stream name in the output, supporting up to 16 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The language of the audio stream in the output, supporting up to 16 characters. It must comply with the RFC5646 specification.
         * @type {string || null}
         */
        this.Language = null;

        /**
         * Whether to set as the default audio for adaptive bitrate streaming.
<li>YES: Set as the default audio;</li>
<li>NO: Not set as the default audio (default value).</li>
         * @type {string || null}
         */
        this.Default = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Language = 'Language' in params ? params.Language : null;
        this.Default = 'Default' in params ? params.Default : null;

    }
}

/**
 * ManageTask request structure.
 * @class
 */
class ManageTaskRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video processing task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Operation type. Valid value:
<li>Abort: terminate a task. You can only terminate initiated tasks in `WAITING` status.</li>
         * @type {string || null}
         */
        this.OperationType = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.OperationType = 'OperationType' in params ? params.OperationType : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Carousel program information
 * @class
 */
class RoundPlayListItemInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The type of the media played. Valid values:
<li>`Transcode`: A transcoding output. Because a file may be bound to multiple transcoding templates, you need to specify `Definition` if the type is `Transcode`.</li>
<li>`Original`: The original file.</li>
The file must be in HLS format.
         * @type {string || null}
         */
        this.AudioVideoType = null;

        /**
         * ID of the program to be played, assigned by the system.
         * @type {string || null}
         */
        this.ItemId = null;

        /**
         * The transcoding template to be played is specified. this parameter is required if `audiovideotype` is `transcode`.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.AudioVideoType = 'AudioVideoType' in params ? params.AudioVideoType : null;
        this.ItemId = 'ItemId' in params ? params.ItemId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * ModifyEventConfig request structure.
 * @class
 */
class ModifyEventConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * How to receive event notifications. 
<li>PUSH: [HTTP callback notification](https://www.tencentcloud.com/document/product/266/33948);</li>
<li>PULL: [Reliable notification based on message queue ](https://www.tencentcloud.com/document/product/266/33948). </li>
         * @type {string || null}
         */
        this.Mode = null;

        /**
         * The address used to receive 3.0 format callbacks when using the [HTTP callback notification](https://www.tencentcloud.com/document/product/266/33948) reception method. 
Note: If the NotificationUrl parameter is provided and the value is an empty string, the 3.0 format callback address will be cleared.
         * @type {string || null}
         */
        this.NotificationUrl = null;

        /**
         * Whether to receive the [Video Upload Completed](https://www.tencentcloud.com/document/product/266/33950) event notification. The default "OFF" is to ignore the event notification, and "ON" is to receive the event notification. 
         * @type {string || null}
         */
        this.UploadMediaCompleteEventSwitch = null;

        /**
         * Whether to receive [Video deletion completed](https://www.tencentcloud.com/document/product/266/33952) event notification, the default "OFF" means to ignore the event notification, "ON" means to receive the event notification .
         * @type {string || null}
         */
        this.DeleteMediaCompleteEventSwitch = null;

        /**
         * Whether to receive the Persistence completed event notification, the default "OFF" means to ignore the event notification, "ON" means to receive the event notification.
         * @type {string || null}
         */
        this.PersistenceCompleteEventSwitch = null;

        /**
         * <b>The VOD [application](https://www.tencentcloud.com/document/product/266/33987) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Mode = 'Mode' in params ? params.Mode : null;
        this.NotificationUrl = 'NotificationUrl' in params ? params.NotificationUrl : null;
        this.UploadMediaCompleteEventSwitch = 'UploadMediaCompleteEventSwitch' in params ? params.UploadMediaCompleteEventSwitch : null;
        this.DeleteMediaCompleteEventSwitch = 'DeleteMediaCompleteEventSwitch' in params ? params.DeleteMediaCompleteEventSwitch : null;
        this.PersistenceCompleteEventSwitch = 'PersistenceCompleteEventSwitch' in params ? params.PersistenceCompleteEventSwitch : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Output of speech keyword recognition.
 * @class
 */
class AiRecognitionTaskAsrWordsResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Speech keyword recognition result set
<font color=red>Note</font>: this list displays up to the first 100 results. You can get all the results from the file whose URL is `SegmentSetFileUrl`.
         * @type {Array.<AiRecognitionTaskAsrWordsResultItem> || null}
         */
        this.ResultSet = null;

        /**
         * URL to the file of the speech keyword recognition result set. The file format is JSON, and the data structure is the same as `SegmentSet`. The file will be deleted upon the expiration time `SegmentSetFileUrlExpireTime`, instead of being stored permanently.
         * @type {string || null}
         */
        this.ResultSetFileUrl = null;

        /**
         * Expiration time of the URL to the file of the speech keyword recognition result set, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.ResultSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ResultSet) {
            this.ResultSet = new Array();
            for (let z in params.ResultSet) {
                let obj = new AiRecognitionTaskAsrWordsResultItem();
                obj.deserialize(params.ResultSet[z]);
                this.ResultSet.push(obj);
            }
        }
        this.ResultSetFileUrl = 'ResultSetFileUrl' in params ? params.ResultSetFileUrl : null;
        this.ResultSetFileUrlExpireTime = 'ResultSetFileUrlExpireTime' in params ? params.ResultSetFileUrlExpireTime : null;

    }
}

/**
 * DescribeHeadTailTemplates request structure.
 * @class
 */
class DescribeHeadTailTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Head Tail template number, array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Paging offset, default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Returns the number of records, default value: 10, maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * ModifyAdaptiveDynamicStreamingTemplate response structure.
 * @class
 */
class ModifyAdaptiveDynamicStreamingTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result type of transcoding task
 * @class
 */
class MediaProcessTaskTranscodeResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of transcoding task.
         * @type {TranscodeTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of transcoding task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaTranscodeItem || null}
         */
        this.Output = null;

        /**
         * Transcoding progress. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * Transcoding task start time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * Transcoding task end time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new TranscodeTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new MediaTranscodeItem();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Control parameters for video blur detection.
 * @class
 */
class BlurConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video screen blur detection switch, optional values:
<li>ON: turn on;</li>
<li>OFF: turn off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Video stream configuration information
 * @class
 */
class EditMediaVideoStream extends  AbstractModel {
    constructor(){
        super();

        /**
         * The encoding format of the video stream, optional values:
<li>libx264: H.264 encoding;</li>
<li>libx265: H.265 encoding;</li>
<li>av1: AOMedia Video 1 encoding;</li>
<li>H.266: H.266 encoding. </li>
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * The bit rate of the video stream, value range: 0 and [128, 35000], unit: kbps. 
When the value is 0 or left blank, it means automatically selecting the best video bit rate.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Resolution adaptive, optional values:
<li>open: open, at this time, Width represents the long side of the video, and Height represents the short side of the video;</li>
<li>close: closed, at this time , Width represents the width of the video, and Height represents the height of the video. </li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Resolution adaptive, optional values:
<li>open: open, at this time, Width represents the long side of the video, and Height represents the short side of the video;</li>
<li>close: closed, at this time , Width represents the width of the video, and Height represents the height of the video. </li>
Default value: open.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The maximum value of the video stream height (or short side), value range: 0 and [128, 4096], unit: px. 
<li>When Width and Height are both 0, the resolution is based on the base resolution;</li>
<li>When Width is 0 and Height is non-0, Width is scaled according to the base resolution;</li> li>
<li>When Width is non-0 and Height is 0, the Height is scaled according to the base resolution; </li>
<li>When both Width and Height are non-0, the resolution is specified by the user. </li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Video frame rate, value range: [0, 100], unit: Hz. 
When the value is 0, the frame rate will be automatically set for the video. 
The default value is 0.
         * @type {number || null}
         */
        this.Fps = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Fps = 'Fps' in params ? params.Fps : null;

    }
}

/**
 * A digital watermark extraction task.
 * @class
 */
class ExtractTraceWatermarkTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The task status. Valid values:
<li>PROCESSING</li>
<li>FINISH</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The error code. `0` indicates the task is successful. Other values indicate that the task failed.
<li>40000: Invalid input parameter.</li>
<li>60000: Source file error (e.g., video data is corrupted).</li>
<li>70000: Internal server error. Please try again.</li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * The error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The error code. An empty string indicates the task is successful; other values indicate that the task failed. For details, see [Video processing error codes](https://intl.cloud.tencent.com/document/product/266/39145?lang=en&pg=#video-processing).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * The information of a digital watermark extraction task.
         * @type {ExtractTraceWatermarkTaskInput || null}
         */
        this.Input = null;

        /**
         * The output of a digital watermark extraction task.
         * @type {ExtractTraceWatermarkTaskOutput || null}
         */
        this.Output = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last seven days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;

        if (params.Input) {
            let obj = new ExtractTraceWatermarkTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new ExtractTraceWatermarkTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * Output of video splitting.
 * @class
 */
class AiRecognitionTaskSegmentResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of split video segments
<font color=red>Note</font>: this list displays up to the first 100 results. You can get all the results from the file whose URL is `SegmentSetFileUrl`.
         * @type {Array.<AiRecognitionTaskSegmentSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file of the list for split video segments. The file format is JSON, and the data structure is the same as `SegmentSet`. The file will be deleted upon the expiration time `SegmentSetFileUrlExpireTime`, instead of being stored permanently.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file of the list for split video segments, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new AiRecognitionTaskSegmentSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * Input parameter type of image sprite generating task
 * @class
 */
class ImageSpriteTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Image sprite generating template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Control parameter of object recognition task
 * @class
 */
class ObjectConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of object recognition task. Valid values:
<li>ON: enables intelligent object recognition task;</li>
<li>OFF: disables intelligent object recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Object library. Valid values:
<li>Default: default object library;</li>
<li>UserDefine: custom object library.</li>
<li>All: both default and custom object libraries will be used.</li>
         * @type {string || null}
         */
        this.ObjectLibrary = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.ObjectLibrary = 'ObjectLibrary' in params ? params.ObjectLibrary : null;

    }
}

/**
 * DeleteMedia request structure.
 * @class
 */
class DeleteMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Content to be deleted. The default value is "[]", which indicates to delete the media file and all its corresponding files generated by video processing.
         * @type {Array.<MediaDeleteItem> || null}
         */
        this.DeleteParts = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

        if (params.DeleteParts) {
            this.DeleteParts = new Array();
            for (let z in params.DeleteParts) {
                let obj = new MediaDeleteItem();
                obj.deserialize(params.DeleteParts[z]);
                this.DeleteParts.push(obj);
            }
        }

    }
}

/**
 * DescribeReviewTemplates request structure.
 * @class
 */
class DescribeReviewTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The audit template uniquely identifies the filtering conditions, and the array length limit is: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * The template type. Valid values:
<li>Preset</li>
<li>Custom</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * The number of records to return. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * CreateSuperPlayerConfig request structure.
 * @class
 */
class CreateSuperPlayerConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Player configuration name, which can contain up to 64 letters, digits, underscores, and hyphens (such as test_ABC-123) and must be unique under a user.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Type of audio/video played. Valid values:
<li>AdaptiveDynamicStreaming</li>
<li>Transcode</li>
<li>Original</li>
Default value: `AdaptiveDynamicStream`
         * @type {string || null}
         */
        this.AudioVideoType = null;

        /**
         * Whether to allow only adaptive bitrate streaming playback protected by DRM. Valid values:
<li>`ON`: allow only adaptive bitrate streaming playback protected by DRM</li>
<li>`OFF`: allow adaptive bitrate streaming playback not protected by DRM</li>
Default value: `OFF`
This parameter is valid when `AudioVideoType` is `AdaptiveDynamicStream`.
         * @type {string || null}
         */
        this.DrmSwitch = null;

        /**
         * ID of the adaptive bitrate streaming template allowed for playback not protected by DRM.

This parameter is required if `AudioVideoType` is `AdaptiveDynamicStream` and `DrmSwitch` is `OFF`.
         * @type {number || null}
         */
        this.AdaptiveDynamicStreamingDefinition = null;

        /**
         * Content of the adaptive bitrate streaming template allowed for playback protected by DRM.

This parameter is required if `AudioVideoType` is `AdaptiveDynamicStream` and `DrmSwitch` is `ON`.
         * @type {DrmStreamingsInfo || null}
         */
        this.DrmStreamingsInfo = null;

        /**
         * ID of the transcoding template allowed for playback

This parameter is required if `AudioVideoType` is `Transcode`.
         * @type {number || null}
         */
        this.TranscodeDefinition = null;

        /**
         * ID of the image sprite generating template that allows output.
         * @type {number || null}
         */
        this.ImageSpriteDefinition = null;

        /**
         * The player displays names for substreams of different resolutions. If left unfilled or filled in a blank array, the default configuration is used:
<li>MinEdgeLength: 240, Name: smooth;</li>
<li>MinEdgeLength: 480, Name: SD; </li>
<li>MinEdgeLength: 720, Name: HD; </li>
<li>MinEdgeLength: 1080, Name: Full HD; </li>
<li>MinEdgeLength: 1440, Name: 2K; </li>
<li>MinEdgeLength: 2160, Name: 4K; </li>
<li>MinEdgeLength: 4320, Name: 8K. </li>
         * @type {Array.<ResolutionNameInfo> || null}
         */
        this.ResolutionNames = null;

        /**
         * Domain name used for playback. If it is left empty or set to `Default`, the domain name configured in [Default Distribution Configuration](https://intl.cloud.tencent.com/document/product/266/33373?from_cn_redirect=1) will be used.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Scheme used for playback. If it is left empty or set to `Default`, the scheme configured in [Default Distribution Configuration](https://intl.cloud.tencent.com/document/product/266/33373?from_cn_redirect=1) will be used. Other valid values:
<li>HTTP;</li>
<li>HTTPS.</li>
         * @type {string || null}
         */
        this.Scheme = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.AudioVideoType = 'AudioVideoType' in params ? params.AudioVideoType : null;
        this.DrmSwitch = 'DrmSwitch' in params ? params.DrmSwitch : null;
        this.AdaptiveDynamicStreamingDefinition = 'AdaptiveDynamicStreamingDefinition' in params ? params.AdaptiveDynamicStreamingDefinition : null;

        if (params.DrmStreamingsInfo) {
            let obj = new DrmStreamingsInfo();
            obj.deserialize(params.DrmStreamingsInfo)
            this.DrmStreamingsInfo = obj;
        }
        this.TranscodeDefinition = 'TranscodeDefinition' in params ? params.TranscodeDefinition : null;
        this.ImageSpriteDefinition = 'ImageSpriteDefinition' in params ? params.ImageSpriteDefinition : null;

        if (params.ResolutionNames) {
            this.ResolutionNames = new Array();
            for (let z in params.ResolutionNames) {
                let obj = new ResolutionNameInfo();
                obj.deserialize(params.ResolutionNames[z]);
                this.ResolutionNames.push(obj);
            }
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Scheme = 'Scheme' in params ? params.Scheme : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * Image watermarking template
 * @class
 */
class ImageWatermarkTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Watermark image address.
         * @type {string || null}
         */
        this.ImageUrl = null;

        /**
         * Watermark width. % and px formats are supported:
<li>If the string ends in %, the `Width` of the watermark will be the specified percentage of the video width; for example, `10%` means that `Width` is 10% of the video width;</li>
<li>If the string ends in px, the `Width` of the watermark will be in px; for example, `100px` means that `Width` is 100 px.</li>
         * @type {string || null}
         */
        this.Width = null;

        /**
         * Watermark height. % and px formats are supported:
<li>If the string ends in %, the `Height` of the watermark will be the specified percentage of the video height; for example, `10%` means that `Height` is 10% of the video height;</li>
<li>If the string ends in px, the `Height` of the watermark will be in px; for example, `100px` means that `Height` is 100 px;</li>
`0px` means that `Height` will be proportionally scaled according to the video width.
         * @type {string || null}
         */
        this.Height = null;

        /**
         * Repeat type of an animated watermark. Valid values:
<li>once: no longer appears after watermark playback ends.</li>
<li>repeat_last_frame: stays on the last frame after watermark playback ends.</li>
<li>repeat (default): repeats the playback until the video ends.</li>
         * @type {string || null}
         */
        this.RepeatType = null;

        /**
         * 
         * @type {number || null}
         */
        this.Transparency = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ImageUrl = 'ImageUrl' in params ? params.ImageUrl : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.RepeatType = 'RepeatType' in params ? params.RepeatType : null;
        this.Transparency = 'Transparency' in params ? params.Transparency : null;

    }
}

/**
 * ModifySubAppIdInfo response structure.
 * @class
 */
class ModifySubAppIdInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Speech keyword recognition control parameter.
 * @class
 */
class AsrWordsConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of speech keyword recognition task. Valid values:
<li>ON: enables speech keyword recognition task;</li>
<li>OFF: disables speech keyword recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Keyword filter tag, which specifies the keyword tag that needs to be returned. If this parameter is left empty, all results will be returned.
There can be up to 10 tags, each with a length limit of 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;

    }
}

/**
 * StartCDNDomain request structure.
 * @class
 */
class StartCDNDomainRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Domain name operation, value: <li>start: enable;</li> <li>stop: disable. </li>
         * @type {string || null}
         */
        this.Operation = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Operation = 'Operation' in params ? params.Operation : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DeleteRebuildMediaTemplate response structure.
 * @class
 */
class DeleteRebuildMediaTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSubAppIds response structure.
 * @class
 */
class DescribeSubAppIdsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Subapplication information set.
         * @type {Array.<SubAppIdInfo> || null}
         */
        this.SubAppIdInfoSet = null;

        /**
         * Total number of subapplications.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SubAppIdInfoSet) {
            this.SubAppIdInfoSet = new Array();
            for (let z in params.SubAppIdInfoSet) {
                let obj = new SubAppIdInfo();
                obj.deserialize(params.SubAppIdInfoSet[z]);
                this.SubAppIdInfoSet.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SimpleHlsClip request structure.
 * @class
 */
class SimpleHlsClipRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * URL of the HLS video in VOD that needs to be clipped.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Start offset time of clipping in seconds. Default value: 0, which means to clip from the beginning of the video. A negative number indicates how many seconds from the end of the video clipping will start at. For example, -10 means that clipping will start at the 10th second from the end.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End offset time of clipping in seconds. Default value: 0, which means to clip till the end of the video. A negative number indicates how many seconds from the end of the video clipping will end. For example, -10 means that clipping will end at the 10th second from the end.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Whether to store the video clip persistently. 0: no (default), 1: yes.
         * @type {number || null}
         */
        this.IsPersistence = null;

        /**
         * The expiration time of the video clip that is to be saved, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). `9999-12-31T23:59:59Z` is the default value, which means the video clip will never expire. After expiration, the media file and its related resources (such as transcoding results and image sprites) will be permanently deleted. This parameter is valid only if `IsPersistence` is 1.
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * The task flow to execute on the video clipped for persistent storage. For details, see [Upload from Server](https://intl.cloud.tencent.com/document/product/266/33912). This parameter is valid only if `IsPersistence` is 1.
         * @type {string || null}
         */
        this.Procedure = null;

        /**
         * The ID of the media file's category. You can use the [CreateClass](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API to create a category and get the category ID.
<li>The default value is `0`, which means the "Other" category.</li>
This parameter is valid only if `IsPersistence` is `1`.
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The source context, which is used to pass through user request information. The [NewFileUpload](https://intl.cloud.tencent.com/document/product/266/7830?from_cn_redirect=1) callback will return the value of this parameter. It can contain up to 250 characters and is valid only if `IsPersistence` is `1`.
         * @type {string || null}
         */
        this.SourceContext = null;

        /**
         * The session context, which is used to pass through user request information. If the `Procedure` parameter is specified, the [ProcedureStateChanged](https://intl.cloud.tencent.com/document/product/266/9636?from_cn_redirect=1) callback will return the value of this parameter. It can contain up to 1,000 characters and is valid only if `IsPersistence` is `1`.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * 
         * @type {string || null}
         */
        this.Precision = null;

        /**
         * 
         * @type {string || null}
         */
        this.OutputMediaType = null;

        /**
         * 
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.IsPersistence = 'IsPersistence' in params ? params.IsPersistence : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.Procedure = 'Procedure' in params ? params.Procedure : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.SourceContext = 'SourceContext' in params ? params.SourceContext : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.Precision = 'Precision' in params ? params.Precision : null;
        this.OutputMediaType = 'OutputMediaType' in params ? params.OutputMediaType : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * Specify video content for deletion
 * @class
 */
class MediaDeleteItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * The specified portion to be deleted. The parameter is invalid if this field is not filled in. Optional values u200bare:
<li>OriginalFiles (Delete the original file. After deletion, video processing operations such as transcoding cannot be initiated);</li>
<li>TranscodeFiles (delete transcoded files);</li>
<li>AdaptiveDynamicStreamingFiles (Delete the adaptive bitrate streaming files);</li>
<font color=red>Notice:</font> <li>When the value is OriginalFiles, the cover file carried when uploading the file will be deleted;</li>
<li>When the value is TranscodeFiles, cover files generated by media processing will be deleted.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * ID of the template for which to delete the videos of the type specified by the `Type` parameter. For the template definition, please see [Transcoding Template](https://intl.cloud.tencent.com/document/product/266/33478?from_cn_redirect=1#.3Cspan-id-.3D-.22zm.22-.3E.3C.2Fspan.3E.E8.BD.AC.E7.A0.81.E6.A8.A1.E6.9D.BF).
Default value: 0, which indicates to delete all videos of the type specified by the `Type` parameter.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * The moderation result for politically sensitive content in an image.
 * @class
 */
class PoliticalImageResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The confidence score for the moderation result. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * The suggestion for handling the detected politically sensitive content. Valid values:
<li>pass/li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The name of the politically sensitive content or banned icon detected.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The coordinates (pixel) of the top-left and bottom-right corners of the frame where the politically sensitive content or banned icon appears. Format: [x1, y1, x2, y2].
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;

    }
}

/**
 * AI-based sample management - figure information.
 * @class
 */
class AiSamplePerson extends  AbstractModel {
    constructor(){
        super();

        /**
         * Figure ID.
         * @type {string || null}
         */
        this.PersonId = null;

        /**
         * Figure name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Figure description.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Face information.
         * @type {Array.<AiSampleFaceInfo> || null}
         */
        this.FaceInfoSet = null;

        /**
         * Figure tag.
         * @type {Array.<string> || null}
         */
        this.TagSet = null;

        /**
         * Use case.
         * @type {Array.<string> || null}
         */
        this.UsageSet = null;

        /**
         * Creation time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PersonId = 'PersonId' in params ? params.PersonId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;

        if (params.FaceInfoSet) {
            this.FaceInfoSet = new Array();
            for (let z in params.FaceInfoSet) {
                let obj = new AiSampleFaceInfo();
                obj.deserialize(params.FaceInfoSet[z]);
                this.FaceInfoSet.push(obj);
            }
        }
        this.TagSet = 'TagSet' in params ? params.TagSet : null;
        this.UsageSet = 'UsageSet' in params ? params.UsageSet : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * Adaptive bitrate streaming information
 * @class
 */
class MediaAdaptiveDynamicStreamingInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information array of adaptive bitrate streaming.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AdaptiveDynamicStreamingInfoItem> || null}
         */
        this.AdaptiveDynamicStreamingSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.AdaptiveDynamicStreamingSet) {
            this.AdaptiveDynamicStreamingSet = new Array();
            for (let z in params.AdaptiveDynamicStreamingSet) {
                let obj = new AdaptiveDynamicStreamingInfoItem();
                obj.deserialize(params.AdaptiveDynamicStreamingSet[z]);
                this.AdaptiveDynamicStreamingSet.push(obj);
            }
        }

    }
}

/**
 * DescribeDailyPlayStatFileList request structure.
 * @class
 */
class DescribeDailyPlayStatFileListRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start date in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End date in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DescribeSuperPlayerConfigs response structure.
 * @class
 */
class DescribeSuperPlayerConfigsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Player configuration array.
         * @type {Array.<PlayerConfig> || null}
         */
        this.PlayerConfigSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.PlayerConfigSet) {
            this.PlayerConfigSet = new Array();
            for (let z in params.PlayerConfigSet) {
                let obj = new PlayerConfig();
                obj.deserialize(params.PlayerConfigSet[z]);
                this.PlayerConfigSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameter of speech keyword recognition.
 * @class
 */
class AsrWordsConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of speech keyword recognition task. Valid values:
<li>ON: enables speech keyword recognition task;</li>
<li>OFF: disables speech keyword recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Keyword filter tag, which specifies the keyword tag that needs to be returned. If this parameter is left empty or a blank value is entered, all results will be returned.
There can be up to 10 tags, each with a length limit of 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;

    }
}

/**
 * DescribeStorageData request structure.
 * @class
 */
class DescribeStorageDataRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * The information of the segment clipped.
 * @class
 */
class LiveRealTimeClipMediaSegmentInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time of the cliped segment, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time of the cliped segment, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * DeleteImageSpriteTemplate response structure.
 * @class
 */
class DeleteImageSpriteTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Low-light enhancement configuration.
 * @class
 */
class LowLightEnhanceInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable low-light enhancement. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The low-light enhancement type. This parameter is valid only if `Switch` is `ON`.
<li>`normal`</li>
Default value: `normal`.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * DescribeContentReviewTemplates response structure.
 * @class
 */
class DescribeContentReviewTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of intelligent content recognition template details.
         * @type {Array.<ContentReviewTemplateItem> || null}
         */
        this.ContentReviewTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.ContentReviewTemplateSet) {
            this.ContentReviewTemplateSet = new Array();
            for (let z in params.ContentReviewTemplateSet) {
                let obj = new ContentReviewTemplateItem();
                obj.deserialize(params.ContentReviewTemplateSet[z]);
                this.ContentReviewTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * TESHD parameter configuration.
 * @class
 */
class TEHDConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * TESHD transcoding type. Valid values: <li>TEHD-100</li> <li>OFF (default)</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Maximum bitrate, which is valid when `Type` is `TESHD`.
If this parameter is left blank or 0 is entered, there will be no upper limit for bitrate.
         * @type {number || null}
         */
        this.MaxVideoBitrate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.MaxVideoBitrate = 'MaxVideoBitrate' in params ? params.MaxVideoBitrate : null;

    }
}

/**
 * The usage statistics for the image recognition feature.
 * @class
 */
class ImageReviewUsageDataItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * The start time (in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)) of the data returned. For example, if the granularity is a day, `2018-12-01T00:00:00+08:00` indicates that the data is for the whole day of December 1, 2018.
         * @type {string || null}
         */
        this.Time = null;

        /**
         * The number of times the image recognition feature is used.
         * @type {number || null}
         */
        this.Count = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Time = 'Time' in params ? params.Time : null;
        this.Count = 'Count' in params ? params.Count : null;

    }
}

/**
 * Details of an animated image generating template.
 * @class
 */
class AnimatedGraphicsTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an animated image generating template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Template type. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Name of an animated image generating template.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description of an animated image generating template.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Maximum value of the width (or long side) of an animated image in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of an animated image in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Animated image format.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Frame rate.
         * @type {number || null}
         */
        this.Fps = null;

        /**
         * Image quality.
         * @type {number || null}
         */
        this.Quality = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Fps = 'Fps' in params ? params.Fps : null;
        this.Quality = 'Quality' in params ? params.Quality : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * ExtractCopyRightWatermark request structure.
 * @class
 */
class ExtractCopyRightWatermarkRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The media URL from which the watermark needs to be extracted.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Identifies the source context, which is used to transparently transmit user request information. This field value will be returned in the ExtractCopyRightWatermarkComplete callback and task flow status change callback, with a maximum length of 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The identification code used for task deduplication. If there is a request with the same identification code within three days, this request will return an error. The maximum length is 50 characters, without or with an empty string to indicate no deduplication.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The priority of the task. The larger the value, the higher the priority. The value range is -10 to 10. If left blank, it means 0.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * Reserved fields, used for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * IP blocklist/allowlist configuration. This is disabled by default.
 * @class
 */
class IpFilter extends  AbstractModel {
    constructor(){
        super();

        /**
         * IP black and white list configuration switch, value: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * IP blacklist and whitelist types: <li>whitelist: whitelist;</li> <li>blacklist: blacklist. </li>
         * @type {string || null}
         */
        this.FilterType = null;

        /**
         * IP black and white list, supports: IP in the form of X.X.X.X, or network segment in the form of /8, /16, /24; Can populate up to 50 whitelists or 50 blacklists.
         * @type {Array.<string> || null}
         */
        this.Filters = null;

        /**
         * IP blocklist/allowlist path-based configuration. This feature is only available to selected beta customers.
         * @type {Array.<IpFilterPathRule> || null}
         */
        this.FilterRules = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.FilterType = 'FilterType' in params ? params.FilterType : null;
        this.Filters = 'Filters' in params ? params.Filters : null;

        if (params.FilterRules) {
            this.FilterRules = new Array();
            for (let z in params.FilterRules) {
                let obj = new IpFilterPathRule();
                obj.deserialize(params.FilterRules[z]);
                this.FilterRules.push(obj);
            }
        }

    }
}

/**
 * DescribeEnhanceMediaTemplates request structure.
 * @class
 */
class DescribeEnhanceMediaTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * List of Enhance media templates. Length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Template type filter conditions, optional values:
<li>Preset: system preset template;</li>
<li>Custom: user-defined template. </li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Paging offset, default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Returns the number of records, default value: 10, maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Parameters for OCR-based recognition of terrorism content
 * @class
 */
class TerrorismOcrReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable OCR-based recognition of terrorism content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * FastEditMedia request structure.
 * @class
 */
class FastEditMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Input media file information. Support for up to 100 media inputs.
         * @type {Array.<FastEditMediaFileInfo> || null}
         */
        this.FileInfos = null;

        /**
         * ClipMode is used to indicate whether to include this segment when the clipping time point falls in the middle of a TS segment. There are two values:<li>StartInclusiveEndInclusive: When the clip start time point and end time point fall in the middle of a segment, this segment will be included; </li> <li>StartInclusiveEndExclusive: When the starting time point falls in the middle of a segment, the segment will be included; when the end time point falls in the middle of a segment, the segment will not be included.</li> If not specified, the default is StartInclusiveEndInclusive.
         * @type {string || null}
         */
        this.ClipMode = null;

        /**
         * <b> VOD [Application](/document/product/266/14574) ID. Customers who activate VOD services from December 25, 2023, if they access resources in VOD applications (whether it is a default application or a newly created application), must fill in this field as the application ID. </b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FileInfos) {
            this.FileInfos = new Array();
            for (let z in params.FileInfos) {
                let obj = new FastEditMediaFileInfo();
                obj.deserialize(params.FileInfos[z]);
                this.FileInfos.push(obj);
            }
        }
        this.ClipMode = 'ClipMode' in params ? params.ClipMode : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Copyright watermark parameters
 * @class
 */
class CopyRightWatermarkInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Copyright information, maximum length is 200 characters.
         * @type {string || null}
         */
        this.Text = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Text = 'Text' in params ? params.Text : null;

    }
}

/**
 * Output of video opening and ending credits recognition.
 * @class
 */
class AiRecognitionTaskHeadTailResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence of recognized opening credits. Value range: 0-100.
         * @type {number || null}
         */
        this.HeadConfidence = null;

        /**
         * End time point of video opening credits in seconds.
         * @type {number || null}
         */
        this.HeadTimeOffset = null;

        /**
         * Confidence of recognized closing credits. Value range: 0-100.
         * @type {number || null}
         */
        this.TailConfidence = null;

        /**
         * Start time point of video closing credits in seconds.
         * @type {number || null}
         */
        this.TailTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HeadConfidence = 'HeadConfidence' in params ? params.HeadConfidence : null;
        this.HeadTimeOffset = 'HeadTimeOffset' in params ? params.HeadTimeOffset : null;
        this.TailConfidence = 'TailConfidence' in params ? params.TailConfidence : null;
        this.TailTimeOffset = 'TailTimeOffset' in params ? params.TailTimeOffset : null;

    }
}

/**
 * ModifyImageSpriteTemplate response structure.
 * @class
 */
class ModifyImageSpriteTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SetVodDomainCertificate response structure.
 * @class
 */
class SetVodDomainCertificateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The output of digital watermark extraction.
 * @class
 */
class ExtractTraceWatermarkTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The distributor’s user ID, which is a six-digit hex number. This parameter is relevant when [digital watermarks](https://intl.cloud.tencent.com/document/product/266/75789?from_cn_redirect=1) are used.
         * @type {string || null}
         */
        this.Uv = null;

        /**
         * This parameter has been deprecated.
         * @type {string || null}
         */
        this.Uid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uv = 'Uv' in params ? params.Uv : null;
        this.Uid = 'Uid' in params ? params.Uid : null;

    }
}

/**
 * Result type of cover generating task
 * @class
 */
class MediaProcessTaskCoverBySnapshotResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of cover generating task.
         * @type {CoverBySnapshotTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of cover generating task.
         * @type {CoverBySnapshotTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a video screenshot (thumbnail) task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the screenshot making cover task started, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * Screenshot the time when the cover task was completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new CoverBySnapshotTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new CoverBySnapshotTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * CreateWatermarkTemplate request structure.
 * @class
 */
class CreateWatermarkTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Watermarking type. Valid values:
<li>image: image watermark;</li>
<li>text: text watermark;</li>
<li>svg: SVG watermark.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Watermarking template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Origin position. Valid values:
<li>TopLeft: the origin of coordinates is in the top-left corner of the video, and the origin of the watermark is in the top-left corner of the image or text;</li>
<li>TopRight: the origin of coordinates is in the top-right corner of the video, and the origin of the watermark is in the top-right corner of the image or text;</li>
<li>BottomLeft: the origin of coordinates is in the bottom-left corner of the video, and the origin of the watermark is in the bottom-left corner of the image or text;</li>
<li>BottomRight: the origin of coordinates is in the bottom-right corner of the video, and the origin of the watermark is in the bottom-right corner of the image or text.</li>
Default value: TopLeft.
         * @type {string || null}
         */
        this.CoordinateOrigin = null;

        /**
         * The horizontal position of the origin of the watermark relative to the origin of coordinates of the video. % and px formats are supported:
<li>If the string ends in %, the `XPos` of the watermark will be the specified percentage of the video width; for example, `10%` means that `XPos` is 10% of the video width;</li>
<li>If the string ends in px, the `XPos` of the watermark will be the specified px; for example, `100px` means that `XPos` is 100 px.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * The vertical position of the origin of the watermark relative to the origin of coordinates of the video. % and px formats are supported:
<li>If the string ends in %, the `YPos` of the watermark will be the specified percentage of the video height; for example, `10%` means that `YPos` is 10% of the video height;</li>
<li>If the string ends in px, the `YPos` of the watermark will be the specified px; for example, `100px` means that `YPos` is 100 px.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.YPos = null;

        /**
         * Image watermarking template. This field is required when `Type` is `image` and is invalid when `Type` is `text`.
         * @type {ImageWatermarkInput || null}
         */
        this.ImageTemplate = null;

        /**
         * Text watermarking template. This field is required when `Type` is `text` and is invalid when `Type` is `image`.
         * @type {TextWatermarkTemplateInput || null}
         */
        this.TextTemplate = null;

        /**
         * SVG watermarking template. This field is required when `Type` is `svg` and is invalid when `Type` is `image` or `text`.
         * @type {SvgWatermarkInput || null}
         */
        this.SvgTemplate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.CoordinateOrigin = 'CoordinateOrigin' in params ? params.CoordinateOrigin : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;

        if (params.ImageTemplate) {
            let obj = new ImageWatermarkInput();
            obj.deserialize(params.ImageTemplate)
            this.ImageTemplate = obj;
        }

        if (params.TextTemplate) {
            let obj = new TextWatermarkTemplateInput();
            obj.deserialize(params.TextTemplate)
            this.TextTemplate = obj;
        }

        if (params.SvgTemplate) {
            let obj = new SvgWatermarkInput();
            obj.deserialize(params.SvgTemplate)
            this.SvgTemplate = obj;
        }

    }
}

/**
 * UserAgent:blacklist/whitelist configuration
 * @class
 */
class UserAgentFilter extends  AbstractModel {
    constructor(){
        super();

        /**
         * UserAgent blacklist and whitelist configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * UA blacklist/whitelist effect rule list
         * @type {Array.<UserAgentFilterRule> || null}
         */
        this.FilterRules = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

        if (params.FilterRules) {
            this.FilterRules = new Array();
            for (let z in params.FilterRules) {
                let obj = new UserAgentFilterRule();
                obj.deserialize(params.FilterRules[z]);
                this.FilterRules.push(obj);
            }
        }

    }
}

/**
 * Input parameters for the adaptive bitrate streaming task.
 * @class
 */
class ComplexAdaptiveDynamicStreamingTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Adaptive bitrate streaming parameters.
         * @type {ComplexAdaptiveDynamicStreamingTaskStreamPara || null}
         */
        this.StreamPara = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.StreamPara) {
            let obj = new ComplexAdaptiveDynamicStreamingTaskStreamPara();
            obj.deserialize(params.StreamPara)
            this.StreamPara = obj;
        }

    }
}

/**
 * Sort by criterion
 * @class
 */
class SortBy extends  AbstractModel {
    constructor(){
        super();

        /**
         * Sort by field
         * @type {string || null}
         */
        this.Field = null;

        /**
         * Sorting order. Valid values: Asc (ascending), Desc (descending)
         * @type {string || null}
         */
        this.Order = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Field = 'Field' in params ? params.Field : null;
        this.Order = 'Order' in params ? params.Order : null;

    }
}

/**
 * Parameters for recognition of terrorism content
 * @class
 */
class TerrorismConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameters for recognition of terrorism content in images
         * @type {TerrorismImgReviewTemplateInfoForUpdate || null}
         */
        this.ImgReviewInfo = null;

        /**
         * Parameters for OCR-based recognition of terrorism content
         * @type {TerrorismOcrReviewTemplateInfoForUpdate || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ImgReviewInfo) {
            let obj = new TerrorismImgReviewTemplateInfoForUpdate();
            obj.deserialize(params.ImgReviewInfo)
            this.ImgReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new TerrorismOcrReviewTemplateInfoForUpdate();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * Release on WeChat Mini Program task information
 * @class
 */
class WechatMiniProgramPublishTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task status. Valid values:
WAITING: waiting;
PROCESSING: processing;
FINISH: completed.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code
<li>0: success;</li>
<li>Other values: failure.</li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * ID of published video file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * ID of the transcoding template corresponding to the published video. 0 represents the source video.
         * @type {number || null}
         */
        this.SourceDefinition = null;

        /**
         * Status of video release on WeChat Mini Program. Valid values:
<li>Pass: successfully published;</li>
<li>Failed: failed to publish;</li>
<li>Rejected: rejected.</li>
         * @type {string || null}
         */
        this.PublishResult = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SourceDefinition = 'SourceDefinition' in params ? params.SourceDefinition : null;
        this.PublishResult = 'PublishResult' in params ? params.PublishResult : null;

    }
}

/**
 * DescribeDrmKeyProviderInfo request structure.
 * @class
 */
class DescribeDrmKeyProviderInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * ModifyDefaultStorageRegion response structure.
 * @class
 */
class ModifyDefaultStorageRegionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateImageProcessingTemplate response structure.
 * @class
 */
class CreateImageProcessingTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * IP blocklist/allowlist path-based configuration
 * @class
 */
class IpFilterPathRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * IP blacklist and whitelist types: <li>whitelist: whitelist;</li> <li>blacklist: blacklist. </li>
         * @type {string || null}
         */
        this.FilterType = null;

        /**
         * IP black and white list, supports: IP in the form of X.X.X.X, or network segment in the form of /8, /16, /24; Can populate up to 50 whitelists or 50 blacklists.
         * @type {Array.<string> || null}
         */
        this.Filters = null;

        /**
         * Rule type: <li>all: valid for all files;</li> <li>file: valid for specified file suffix;</li> <li>directory: valid for specified path;</li> <li>path: specified absolute The path takes effect. </li>
         * @type {string || null}
         */
        this.RuleType = null;

        /**
         * Matching content under the corresponding type of RuleType: <li>Fill in * when all is used;</li> <li>Fill in suffix name when file is used, such as jpg, txt;</li> <li>Fill in path when directory is used, such as /xxx/ test/;</li> <li>Fill in the absolute path when path is specified, such as /xxx/test.html. </li>
         * @type {Array.<string> || null}
         */
        this.RulePaths = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FilterType = 'FilterType' in params ? params.FilterType : null;
        this.Filters = 'Filters' in params ? params.Filters : null;
        this.RuleType = 'RuleType' in params ? params.RuleType : null;
        this.RulePaths = 'RulePaths' in params ? params.RulePaths : null;

    }
}

/**
 * Media file composing task information
 * @class
 */
class ComposeMediaTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task flow status. Valid values:
<li>PROCESSING: processing;</li>
<li>FINISH: completed.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code
<li>0: success;</li>
<li>Other values: failure.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Progress of a media file composing task. Value range: [0, 100]
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * Input of media file composing task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {ComposeMediaTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of media file composing task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {ComposeMediaTaskOutput || null}
         */
        this.Output = null;

        /**
         * The metadata of the output video.
Note: This field may return `null`, indicating that no valid value was found.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * ID used for deduplication. If there was a request with the same ID in the last seven days, the current request will return an error. The ID can contain up to 50 characters. If this parameter is not carried or is left empty, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context which is used to pass through the user request information. The task flow status change callback will return the value of this parameter. It can contain up to 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

        if (params.Input) {
            let obj = new ComposeMediaTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new ComposeMediaTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * Control parameter of video opening and ending credits recognition task.
 * @class
 */
class HeadTailConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of video opening and ending credits recognition task. Valid values:
<li>ON: enables video opening and ending credits recognition task;</li>
<li>OFF: disables video opening and ending credits recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Image scaling details.
 * @class
 */
class ImageScale extends  AbstractModel {
    constructor(){
        super();

        /**
         * The scaling type. Valid values:
<li>`WidthFirst`: Specify the width and proportionally scale the height.</li>
<li>`HeightFirst`: Specify the height and proportionally scale the width.</li>
<li>`LongEdgeFirst`: Specify the long side (`LongEdge`) and proportionally scale the short side.</li>
<li>`ShortEdgeFirst`: Specify the short side (`ShortEdge`) and proportionally scale the long side.</li>
<li>Force: Specify both the height and width. The output image may be distorted.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The image height (pixels). This parameter is valid only if `Type` is `HeightFirst` or `Force`.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * The image width (pixels). This parameter is valid only if `Type` is `WidthFirst` or `Force`.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The long side of the output image (pixels). This parameter is valid only if `Type` is `LongEdgeFirst`.
         * @type {number || null}
         */
        this.LongEdge = null;

        /**
         * The short side of the output image (pixels). This parameter is valid only if `Type` is `ShortEdgeFirst`.
         * @type {number || null}
         */
        this.ShortEdge = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.LongEdge = 'LongEdge' in params ? params.LongEdge : null;
        this.ShortEdge = 'ShortEdge' in params ? params.ShortEdge : null;

    }
}

/**
 * ModifyJustInTimeTranscodeTemplate response structure.
 * @class
 */
class ModifyJustInTimeTranscodeTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Video transcoding playback information (v2017)
 * @class
 */
class TranscodePlayInfo2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Playback address.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Transcoding specification ID. For more information, please see [Transcoding Parameter Template](https://intl.cloud.tencent.com/document/product/266/33478?from_cn_redirect=1#.E8.BD.AC.E7.A0.81.E6.A8.A1.E6.9D.BF).
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Sum of the average bitrate of a video stream and that of an audio stream in bps.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Maximum value of the height of a video stream in px.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Maximum value of the width of a video stream in px.
         * @type {number || null}
         */
        this.Width = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Width = 'Width' in params ? params.Width : null;

    }
}

/**
 * Video splitting task information. This field has a value only when `TaskType` is `SplitMedia`.
 * @class
 */
class SplitMediaTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task flow status. Valid values:
<li>PROCESSING: processing</li>
<li>FINISH: finished</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You're not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error information.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * List of video splitting task details.
         * @type {Array.<SplitMediaTaskSegmentInfo> || null}
         */
        this.FileInfoSet = null;

        /**
         * The source context which is used to pass through the user request information. The task flow status change callback will return the value of this field. It can contain up to 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * ID used for deduplication. If there was a request with the same ID in the last seven days, the current request will return an error. The ID can contain up to 50 characters. If this parameter is left empty or set to an empty string, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The progress of a video splitting task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.FileInfoSet) {
            this.FileInfoSet = new Array();
            for (let z in params.FileInfoSet) {
                let obj = new SplitMediaTaskSegmentInfo();
                obj.deserialize(params.FileInfoSet[z]);
                this.FileInfoSet.push(obj);
            }
        }
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * Origin-pull authentication for other origins
 * @class
 */
class OthersPrivateAccess extends  AbstractModel {
    constructor(){
        super();

        /**
         * Other manufacturers' object storage back-to-origin authentication configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Access ID.
         * @type {string || null}
         */
        this.AccessKey = null;

        /**
         * Key.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * Region.
         * @type {string || null}
         */
        this.Region = null;

        /**
         * Bucket name
         * @type {string || null}
         */
        this.Bucket = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.AccessKey = 'AccessKey' in params ? params.AccessKey : null;
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.Region = 'Region' in params ? params.Region : null;
        this.Bucket = 'Bucket' in params ? params.Bucket : null;

    }
}

/**
 * Input of media file composing task.
 * @class
 */
class ComposeMediaTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of input media tracks, i.e., information of multiple tracks composed of video, audio, image, and other materials.
         * @type {Array.<MediaTrack> || null}
         */
        this.Tracks = null;

        /**
         * Canvas used for composing video file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Canvas || null}
         */
        this.Canvas = null;

        /**
         * Information of output media file.
         * @type {ComposeMediaOutput || null}
         */
        this.Output = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Tracks) {
            this.Tracks = new Array();
            for (let z in params.Tracks) {
                let obj = new MediaTrack();
                obj.deserialize(params.Tracks[z]);
                this.Tracks.push(obj);
            }
        }

        if (params.Canvas) {
            let obj = new Canvas();
            obj.deserialize(params.Canvas)
            this.Canvas = obj;
        }

        if (params.Output) {
            let obj = new ComposeMediaOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }

    }
}

/**
 * ModifyQualityInspectTemplate request structure.
 * @class
 */
class ModifyQualityInspectTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media quality inspection template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Media quality inspection template name.Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Frame interval, unit in seconds, minimum value is 1. When not filled, the default frame interval is 1 second.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

        /**
         * Control parameters for detecting video jitter and ghosting.
         * @type {JitterConfigureInfoForUpdate || null}
         */
        this.JitterConfigure = null;

        /**
         * Control parameters for detecting video blur.
         * @type {BlurConfigureInfoForUpdate || null}
         */
        this.BlurConfigure = null;

        /**
         * Control parameters for detecting low brightness and overexposure of video.
         * @type {AbnormalLightingConfigureInfoForUpdate || null}
         */
        this.AbnormalLightingConfigure = null;

        /**
         * Control parameters for detecting video crash.
         * @type {CrashScreenConfigureInfoForUpdate || null}
         */
        this.CrashScreenConfigure = null;

        /**
         * Control parameters for detecting video black edges, white edges, black screen, and white screen.
         * @type {BlackWhiteEdgeConfigureInfoForUpdate || null}
         */
        this.BlackWhiteEdgeConfigure = null;

        /**
         * Control parameters for detecting video noise.
         * @type {NoiseConfigureInfoForUpdate || null}
         */
        this.NoiseConfigure = null;

        /**
         * Control parameters for detecting video mosaic.
         * @type {MosaicConfigureInfoForUpdate || null}
         */
        this.MosaicConfigure = null;

        /**
         * Control parameters for QR code detection in video.
         * @type {QRCodeConfigureInfoForUpdate || null}
         */
        this.QRCodeConfigure = null;

        /**
         * Control parameters for audio (mutes, bass, blast sound).
         * @type {VoiceConfigureInfoForUpdate || null}
         */
        this.VoiceConfigure = null;

        /**
         * Control parameters for video quality evaluation.
         * @type {QualityEvaluationConfigureInfoForUpdate || null}
         */
        this.QualityEvaluationConfigure = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;

        if (params.JitterConfigure) {
            let obj = new JitterConfigureInfoForUpdate();
            obj.deserialize(params.JitterConfigure)
            this.JitterConfigure = obj;
        }

        if (params.BlurConfigure) {
            let obj = new BlurConfigureInfoForUpdate();
            obj.deserialize(params.BlurConfigure)
            this.BlurConfigure = obj;
        }

        if (params.AbnormalLightingConfigure) {
            let obj = new AbnormalLightingConfigureInfoForUpdate();
            obj.deserialize(params.AbnormalLightingConfigure)
            this.AbnormalLightingConfigure = obj;
        }

        if (params.CrashScreenConfigure) {
            let obj = new CrashScreenConfigureInfoForUpdate();
            obj.deserialize(params.CrashScreenConfigure)
            this.CrashScreenConfigure = obj;
        }

        if (params.BlackWhiteEdgeConfigure) {
            let obj = new BlackWhiteEdgeConfigureInfoForUpdate();
            obj.deserialize(params.BlackWhiteEdgeConfigure)
            this.BlackWhiteEdgeConfigure = obj;
        }

        if (params.NoiseConfigure) {
            let obj = new NoiseConfigureInfoForUpdate();
            obj.deserialize(params.NoiseConfigure)
            this.NoiseConfigure = obj;
        }

        if (params.MosaicConfigure) {
            let obj = new MosaicConfigureInfoForUpdate();
            obj.deserialize(params.MosaicConfigure)
            this.MosaicConfigure = obj;
        }

        if (params.QRCodeConfigure) {
            let obj = new QRCodeConfigureInfoForUpdate();
            obj.deserialize(params.QRCodeConfigure)
            this.QRCodeConfigure = obj;
        }

        if (params.VoiceConfigure) {
            let obj = new VoiceConfigureInfoForUpdate();
            obj.deserialize(params.VoiceConfigure)
            this.VoiceConfigure = obj;
        }

        if (params.QualityEvaluationConfigure) {
            let obj = new QualityEvaluationConfigureInfoForUpdate();
            obj.deserialize(params.QualityEvaluationConfigure)
            this.QualityEvaluationConfigure = obj;
        }

    }
}

/**
 * Timestamp hotlink protection configuration
 * @class
 */
class Authentication extends  AbstractModel {
    constructor(){
        super();

        /**
         * Anti-hotlink configuration switch, value: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Timestamp hotlink protection mode A configuration
         * @type {AuthenticationTypeA || null}
         */
        this.TypeA = null;

        /**
         * Timestamp hotlink protection mode B configuration
         * @type {AuthenticationTypeB || null}
         */
        this.TypeB = null;

        /**
         * Timestamp hotlink protection mode C configuration
         * @type {AuthenticationTypeC || null}
         */
        this.TypeC = null;

        /**
         * Timestamp hotlink protection mode D configuration
         * @type {AuthenticationTypeD || null}
         */
        this.TypeD = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

        if (params.TypeA) {
            let obj = new AuthenticationTypeA();
            obj.deserialize(params.TypeA)
            this.TypeA = obj;
        }

        if (params.TypeB) {
            let obj = new AuthenticationTypeB();
            obj.deserialize(params.TypeB)
            this.TypeB = obj;
        }

        if (params.TypeC) {
            let obj = new AuthenticationTypeC();
            obj.deserialize(params.TypeC)
            this.TypeC = obj;
        }

        if (params.TypeD) {
            let obj = new AuthenticationTypeD();
            obj.deserialize(params.TypeD)
            this.TypeD = obj;
        }

    }
}

/**
 * Animated image generating task type
 * @class
 */
class AnimatedGraphicTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Animated image generating template ID
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Start time offset of an animated image in the video, in seconds.
<li>If this parameter is left empty or set to 0, the animated image will start at the same time as the video.</li>
<li>If this parameter is set to a positive number (n for example), the animated image will start at the nth second of the video.</li>
<li>If this parameter is set to a negative number (-n for example), the animated image will start at the nth second before the end of the video.</li>
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of an animated image in the video, in seconds.
<li>If this parameter is left empty or set to 0, the animated image will end at the same time as the video.</li>
<li>If this parameter is set to a positive number (n for example), the animated image will end at the nth second of the video.</li>
<li>If this parameter is set to a negative number (-n for example), the animated image will end at the nth second before the end of the video.</li>
         * @type {number || null}
         */
        this.EndTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

    }
}

/**
 * Blur parameter type of video processing task
 * @class
 */
class MosaicInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Origin position, which currently can only be:
<li>TopLeft: the origin of coordinates is in the top-left corner of the video, and the origin of the blur is in the top-left corner of the image or text.</li>
Default value: TopLeft.
         * @type {string || null}
         */
        this.CoordinateOrigin = null;

        /**
         * The horizontal position of the origin of the blur relative to the origin of coordinates of the video. % and px formats are supported:
<li>If the string ends in %, the `XPos` of the blur will be the specified percentage of the video width; for example, `10%` means that `XPos` is 10% of the video width;</li>
<li>If the string ends in px, the `XPos` of the blur will be the specified px; for example, `100px` means that `XPos` is 100 px.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * Vertical position of the origin of blur relative to the origin of coordinates of video. % and px formats are supported:
<li>If the string ends in %, the `YPos` of the blur will be the specified percentage of the video height; for example, `10%` means that `YPos` is 10% of the video height;</li>
<li>If the string ends in px, the `YPos` of the blur will be the specified px; for example, `100px` means that `YPos` is 100 px.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.YPos = null;

        /**
         * Blur width. % and px formats are supported:
<li>If the string ends in %, the `Width` of the blur will be the specified percentage of the video width; for example, `10%` means that `Width` is 10% of the video width;</li>
<li>If the string ends in px, the `Width` of the blur will be in px; for example, `100px` means that `Width` is 100 px.</li>
Default value: 10%.
         * @type {string || null}
         */
        this.Width = null;

        /**
         * Blur height. % and px formats are supported:
<li>If the string ends in %, the `Height` of the blur will be the specified percentage of the video height; for example, `10%` means that `Height` is 10% of the video height;</li>
<li>If the string ends in px, the `Height` of the blur will be in px; for example, `100px` means that `Height` is 100 px.</li>
Default value: 10%.
         * @type {string || null}
         */
        this.Height = null;

        /**
         * Start time offset of blur in seconds. If this parameter is left empty or 0 is entered, the blur will appear upon the first video frame.
<li>If this parameter is left empty or 0 is entered, the blur will appear upon the first video frame;</li>
<li>If this value is greater than 0 (e.g., n), the blur will appear at second n after the first video frame;</li>
<li>If this value is smaller than 0 (e.g., -n), the blur will appear at second n before the last video frame.</li>
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of blur in seconds.
<li>If this parameter is left empty or 0 is entered, the blur will exist till the last video frame;</li>
<li>If this value is greater than 0 (e.g., n), the blur will exist till second n;</li>
<li>If this value is smaller than 0 (e.g., -n), the blur will exist till second n before the last video frame.</li>
         * @type {number || null}
         */
        this.EndTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CoordinateOrigin = 'CoordinateOrigin' in params ? params.CoordinateOrigin : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

    }
}

/**
 * AI-based intelligent analysis template details
 * @class
 */
class AIAnalysisTemplateItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of intelligent analysis template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Intelligent analysis template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Intelligent analysis template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Control parameter of intelligent categorization task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {ClassificationConfigureInfo || null}
         */
        this.ClassificationConfigure = null;

        /**
         * Control parameter of intelligent tagging task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {TagConfigureInfo || null}
         */
        this.TagConfigure = null;

        /**
         * Control parameter of intelligent cover generating task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {CoverConfigureInfo || null}
         */
        this.CoverConfigure = null;

        /**
         * Control parameter of intelligent frame-specific tagging task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {FrameTagConfigureInfo || null}
         */
        this.FrameTagConfigure = null;

        /**
         * Control parameter of an intelligent highlight generating task.
         * @type {HighlightsConfigureInfo || null}
         */
        this.HighlightConfigure = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.ClassificationConfigure) {
            let obj = new ClassificationConfigureInfo();
            obj.deserialize(params.ClassificationConfigure)
            this.ClassificationConfigure = obj;
        }

        if (params.TagConfigure) {
            let obj = new TagConfigureInfo();
            obj.deserialize(params.TagConfigure)
            this.TagConfigure = obj;
        }

        if (params.CoverConfigure) {
            let obj = new CoverConfigureInfo();
            obj.deserialize(params.CoverConfigure)
            this.CoverConfigure = obj;
        }

        if (params.FrameTagConfigure) {
            let obj = new FrameTagConfigureInfo();
            obj.deserialize(params.FrameTagConfigure)
            this.FrameTagConfigure = obj;
        }

        if (params.HighlightConfigure) {
            let obj = new HighlightsConfigureInfo();
            obj.deserialize(params.HighlightConfigure)
            this.HighlightConfigure = obj;
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * Single-object recognition result.
 * @class
 */
class AiRecognitionTaskObjectResultItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of recognized object.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * List of segments that contain an object.
         * @type {Array.<AiRecognitionTaskObjectSeqmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * List of fragments in which the object appears.
         * @type {Array.<AiRecognitionTaskObjectSegmentItem> || null}
         */
        this.RecognitionSegmentSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new AiRecognitionTaskObjectSeqmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }

        if (params.RecognitionSegmentSet) {
            this.RecognitionSegmentSet = new Array();
            for (let z in params.RecognitionSegmentSet) {
                let obj = new AiRecognitionTaskObjectSegmentItem();
                obj.deserialize(params.RecognitionSegmentSet[z]);
                this.RecognitionSegmentSet.push(obj);
            }
        }

    }
}

/**
 * Key hotlink protection information for generating the signature
 * @class
 */
class UrlSignatureAuthPolicy extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable or disable [key hotlink protection](https://intl.cloud.tencent.com/document/product/266/33986). Valid values:
<li>`Enabled`: enable</li>
<li>`Disabled`: disable</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The key for generating the signature of [key hotlink protection](https://intl.cloud.tencent.com/document/product/266/33986).
`EncryptedKey` can contain 8-40 bytes, and cannot contain non-printable characters.
         * @type {string || null}
         */
        this.EncryptedKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.EncryptedKey = 'EncryptedKey' in params ? params.EncryptedKey : null;

    }
}

/**
 * ModifyVodDomainConfig response structure.
 * @class
 */
class ModifyVodDomainConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information of time point screenshot in VOD file
 * @class
 */
class MediaSnapshotByTimeOffsetInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information set of time point screenshots with a specified specification. Currently, there can be only one set of screenshots for each specification.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaSnapshotByTimeOffsetItem> || null}
         */
        this.SnapshotByTimeOffsetSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SnapshotByTimeOffsetSet) {
            this.SnapshotByTimeOffsetSet = new Array();
            for (let z in params.SnapshotByTimeOffsetSet) {
                let obj = new MediaSnapshotByTimeOffsetItem();
                obj.deserialize(params.SnapshotByTimeOffsetSet[z]);
                this.SnapshotByTimeOffsetSet.push(obj);
            }
        }

    }
}

/**
 * Just In Time transcoding video template configuration.
 * @class
 */
class VideoConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The maximum value of the video stream width (or long side), value range: 0 and [128, 1920], unit: px. 
<li>When Width and Height are both 0, the resolution is from the same source;</li>
<li>When Width is 0 and Height is non-0, Width is scaled proportionally;</li>
< li>When Width is non-0 and Height is 0, the Height is scaled proportionally; </li>
<li>When both Width and Height are non-0, the resolution is specified by the user. </li>

Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The maximum value of the video stream height (or short side), value range: 0 and [128, 1920], unit: px. 
<li>When Width and Height are both 0, the resolution is from the same source;</li>
<li>When Width is 0 and Height is non-0, Width is scaled proportionally;</li>
< li>When Width is non-0 and Height is 0, the Height is scaled proportionally; </li>
<li>When both Width and Height are non-0, the resolution is specified by the user. </li>

Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaptive, optional values:
<li>open: open, at this time, Width represents the long side of the video, and Height represents the short side of the video;</li>
<li>close: closed, at this time , Width represents the width of the video, and Height represents the height of the video. </li>

Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * The bit rate of the video stream, value range: 0 and [128, 10000], unit: kbps. 
When the value is 0, it means that the video bitrate remains the same as the original video.
         * @type {number || null}
         */
        this.Bitrate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;

    }
}

/**
 * DescribeImageSpriteTemplates request structure.
 * @class
 */
class DescribeImageSpriteTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique ID filter of image sprite generating templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Paged offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Template type filter. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * ModifyRebuildMediaTemplate response structure.
 * @class
 */
class ModifyRebuildMediaTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateEnhanceMediaTemplate request structure.
 * @class
 */
class CreateEnhanceMediaTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Output file encapsulation format, optional values: mp4, flv, hls.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Audio and video quality rebirth template name, length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description information, length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Audio and picture quality regeneration video control control information.
         * @type {RebuildVideoInfo || null}
         */
        this.RebuildVideoInfo = null;

        /**
         * Audio and video quality regeneration audio control information.
         * @type {RebuildAudioInfo || null}
         */
        this.RebuildAudioInfo = null;

        /**
         * Output target video control information.
         * @type {RebuildMediaTargetVideoStream || null}
         */
        this.TargetVideoInfo = null;

        /**
         * Output target audio control information.
         * @type {RebuildMediaTargetAudioStream || null}
         */
        this.TargetAudioInfo = null;

        /**
         * Whether to remove video data, optional values:
<li>0: Keep</li>
<li>1: Remove</li>
Default value 0.
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data, optional values:
<li>0: Keep</li>
<li>1: Remove</li>
Default value 0.
         * @type {number || null}
         */
        this.RemoveAudio = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Container = 'Container' in params ? params.Container : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.RebuildVideoInfo) {
            let obj = new RebuildVideoInfo();
            obj.deserialize(params.RebuildVideoInfo)
            this.RebuildVideoInfo = obj;
        }

        if (params.RebuildAudioInfo) {
            let obj = new RebuildAudioInfo();
            obj.deserialize(params.RebuildAudioInfo)
            this.RebuildAudioInfo = obj;
        }

        if (params.TargetVideoInfo) {
            let obj = new RebuildMediaTargetVideoStream();
            obj.deserialize(params.TargetVideoInfo)
            this.TargetVideoInfo = obj;
        }

        if (params.TargetAudioInfo) {
            let obj = new RebuildMediaTargetAudioStream();
            obj.deserialize(params.TargetAudioInfo)
            this.TargetAudioInfo = obj;
        }
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

    }
}

/**
 * Video timestamp information
 * @class
 */
class MediaKeyFrameDescItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Offset time of video timestamp in seconds.
         * @type {number || null}
         */
        this.TimeOffset = null;

        /**
         * Content string of timestamp containing 1-128 characters.
         * @type {string || null}
         */
        this.Content = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TimeOffset = 'TimeOffset' in params ? params.TimeOffset : null;
        this.Content = 'Content' in params ? params.Content : null;

    }
}

/**
 * Control parameters of voice translation.
 * @class
 */
class AsrTranslateConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Voice translation task switch, optional values:
<li>ON: switch on;</li>
<li>OFF: switch off.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Media source language, value range:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`ja`: Japanese;</li>
<li>`ko`: Korean;</li>
<li>`vi`: Vietnamese;</li>
<li>`ms`: Malay;</li>
<li>`th`: Thai;</li>
<li>`pt`: Portuguese;</li>
<li>`tr`: Turkish;</li>
<li>`ar`: Arabic;</li>
<li>`es`: Spanish;</li>
<li>`hi`: Hindi;</li>
<li>`fr`: French.</li>
         * @type {string || null}
         */
        this.SrcLanguage = null;

        /**
         * Translation target language.
When SrcLanguage is zh(Chinese), value range:
<li>`en`: English;</li>
<li>`ja`: Japanese;</li>
<li>`ko`: Korean;</li>
<li>`fr`: French;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese;</li>
<li>`vi`: Vietnamese;</li>
<li>`id`: Indonesian;</li>
<li>`th`: Thai;</li>
<li>`ms`: Malay.</li>

When SrcLanguage is en(English), value range:
<li>`zh`: Chinese;</li>
<li>`ja`: Japanese;</li>
<li>`ko`: Korean;</li>
<li>`fr`: French;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese;</li>
<li>`vi`: Vietnamese;</li>
<li>`id`: Indonesian;</li>
<li>`th`: Thai;</li>
<li>`ms`: Malay;</li>
<li>`ar`: Arabic;</li>
<li>`hi`: Hindi.</li>

When SrcLanguage is ja (Japanese), value range:
<li>zh: Chinese;</li>
<li>en: English;</li>
<li>ko: Korean.</li>

When SrcLanguage is ko (Korean), value range:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`ja`: Japanese.</li>

When SrcLanguage is vi (Vietnamese) or ms (Malay) or th (Thai), value range:
<li>`zh`: Chinese;</li>
<li>`en`: English.</li>

When SrcLanguage is pt (Portuguese), value range:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`fr`: French;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian.</li>

When SrcLanguage is tr (Turkish), value range:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`fr`: French;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese.</li>

When SrcLanguage is es (Spanish), value range:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`fr`: French;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese.</li>

When SrcLanguage is ar (Arabic) or hi (Hindi), value range:
<li>`en`: English.</li>

When SrcLanguage is fr (French), value range:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese.</li>
         * @type {string || null}
         */
        this.DstLanguage = null;

        /**
         * Operation information about subtitle format list.
         * @type {SubtitleFormatsOperation || null}
         */
        this.SubtitleFormatsOperation = null;

        /**
         * Specify subtitle name, length limit: 64 characters. This value will be used for player display.
         * @type {string || null}
         */
        this.SubtitleName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.SrcLanguage = 'SrcLanguage' in params ? params.SrcLanguage : null;
        this.DstLanguage = 'DstLanguage' in params ? params.DstLanguage : null;

        if (params.SubtitleFormatsOperation) {
            let obj = new SubtitleFormatsOperation();
            obj.deserialize(params.SubtitleFormatsOperation)
            this.SubtitleFormatsOperation = obj;
        }
        this.SubtitleName = 'SubtitleName' in params ? params.SubtitleName : null;

    }
}

/**
 * RebuildMediaByTemplate request structure.
 * @class
 */
class RebuildMediaByTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Rebuild Media Template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {string || null}
         */
        this.SubAppId = null;

        /**
         * The start offset (seconds). If you do not specify this, the segment will start from the beginning of the video.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * The end offset (seconds). If you do not specify this, the segment will end at the end of the video.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * New file configuration after rebuild.
         * @type {RebuildMediaOutputConfig || null}
         */
        this.OutputConfig = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last three days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The task priority, which can be a value from -10 to 10. The higher the value, the higher the priority. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * A reserved parameter.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

        if (params.OutputConfig) {
            let obj = new RebuildMediaOutputConfig();
            obj.deserialize(params.OutputConfig)
            this.OutputConfig = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * ModifyVodDomainConfig request structure.
 * @class
 */
class ModifyVodDomainConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * [Referer hotlink protection](https://intl.cloud.tencent.com/document/product/266/14046?from_cn_redirect=1) policy
         * @type {RefererAuthPolicy || null}
         */
        this.RefererAuthPolicy = null;

        /**
         * [Key hotlink protection](https://intl.cloud.tencent.com/document/product/266/14047?from_cn_redirect=1) policy
         * @type {UrlSignatureAuthPolicy || null}
         */
        this.UrlSignatureAuthPolicy = null;

        /**
         * The QUIC configuration.
         * @type {DomainQUICConfig || null}
         */
        this.QUICConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

        if (params.RefererAuthPolicy) {
            let obj = new RefererAuthPolicy();
            obj.deserialize(params.RefererAuthPolicy)
            this.RefererAuthPolicy = obj;
        }

        if (params.UrlSignatureAuthPolicy) {
            let obj = new UrlSignatureAuthPolicy();
            obj.deserialize(params.UrlSignatureAuthPolicy)
            this.UrlSignatureAuthPolicy = obj;
        }

        if (params.QUICConfig) {
            let obj = new DomainQUICConfig();
            obj.deserialize(params.QUICConfig)
            this.QUICConfig = obj;
        }

    }
}

/**
 * AI-based sample management - tag operation.
 * @class
 */
class AiSampleTagOperation extends  AbstractModel {
    constructor(){
        super();

        /**
         * Operation type. Valid values: add, delete, reset.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Tag. Length limit: 128 characters.
         * @type {Array.<string> || null}
         */
        this.Tags = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Tags = 'Tags' in params ? params.Tags : null;

    }
}

/**
 * Output of the adaptive bitrate streaming task.
 * @class
 */
class ComplexAdaptiveDynamicStreamingTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Adaptive bitrate streaming template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The adaptive bitrate streaming format. Valid values:
<li>HLS;</li>
<li>MPEG-DASH.</li>

         * @type {string || null}
         */
        this.Format = null;

        /**
         * DRM scheme type, value range:
<li>Widevine;</li>
<li>FairPlay.</li>
The default value is an empty string, indicating that the video will not be DRM protected.
         * @type {string || null}
         */
        this.DrmType = null;

        /**
         * Playback address of the output manifest.
         * @type {string || null}
         */
        this.Url = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.DrmType = 'DrmType' in params ? params.DrmType : null;
        this.Url = 'Url' in params ? params.Url : null;

    }
}

/**
 * Player configuration details
 * @class
 */
class PlayerConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Player configuration name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Player configuration type. Valid values:
<li>Preset: preset configuration;</li>
<li>Custom: custom configuration.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The type of audio/video played. Valid values:
<li>AdaptiveDynamicStreaming: Adaptive bitrate stream</li>
<li>Transcode: Transcoded stream</li>
<li>Original: The original stream</li>
         * @type {string || null}
         */
        this.AudioVideoType = null;

        /**
         * Switch of DRM-protected adaptive bitstream playback:
<li>ON: enabled, indicating to play back only output adaptive bitstreams protected by DRM;</li>
<li>OFF: disabled, indicating to play back unencrypted output adaptive bitstreams.</li>
         * @type {string || null}
         */
        this.DrmSwitch = null;

        /**
         * ID of the unencrypted adaptive bitrate streaming template that allows output.
         * @type {number || null}
         */
        this.AdaptiveDynamicStreamingDefinition = null;

        /**
         * Content of the DRM-protected adaptive bitrate streaming template that allows output.
         * @type {DrmStreamingsInfo || null}
         */
        this.DrmStreamingsInfo = null;

        /**
         * The ID of the transcoding template allowed.
         * @type {number || null}
         */
        this.TranscodeDefinition = null;

        /**
         * ID of the image sprite generating template that allows output.
         * @type {number || null}
         */
        this.ImageSpriteDefinition = null;

        /**
         * Display name of player for substreams with different resolutions.
         * @type {Array.<ResolutionNameInfo> || null}
         */
        this.ResolutionNameSet = null;

        /**
         * Creation time of player configuration in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#iso-.E6.97.A5.E6.9C.9F.E6.A0.BC.E5.BC.8F).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of player configuration in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#iso-.E6.97.A5.E6.9C.9F.E6.A0.BC.E5.BC.8F).
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Domain name used for playback. If its value is `Default`, the domain name configured in [Default Distribution Configuration](https://intl.cloud.tencent.com/document/product/266/33373?from_cn_redirect=1) will be used.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Scheme used for playback. Valid values:
<li>Default: the scheme configured in [Default Distribution Configuration](https://intl.cloud.tencent.com/document/product/266/33373?from_cn_redirect=1) will be used;</li>
<li>HTTP;</li>
<li>HTTPS.</li>
         * @type {string || null}
         */
        this.Scheme = null;

        /**
         * Template description.
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.AudioVideoType = 'AudioVideoType' in params ? params.AudioVideoType : null;
        this.DrmSwitch = 'DrmSwitch' in params ? params.DrmSwitch : null;
        this.AdaptiveDynamicStreamingDefinition = 'AdaptiveDynamicStreamingDefinition' in params ? params.AdaptiveDynamicStreamingDefinition : null;

        if (params.DrmStreamingsInfo) {
            let obj = new DrmStreamingsInfo();
            obj.deserialize(params.DrmStreamingsInfo)
            this.DrmStreamingsInfo = obj;
        }
        this.TranscodeDefinition = 'TranscodeDefinition' in params ? params.TranscodeDefinition : null;
        this.ImageSpriteDefinition = 'ImageSpriteDefinition' in params ? params.ImageSpriteDefinition : null;

        if (params.ResolutionNameSet) {
            this.ResolutionNameSet = new Array();
            for (let z in params.ResolutionNameSet) {
                let obj = new ResolutionNameInfo();
                obj.deserialize(params.ResolutionNameSet[z]);
                this.ResolutionNameSet.push(obj);
            }
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.Scheme = 'Scheme' in params ? params.Scheme : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * Execution information of a single adaptive bitrate stream in a complex adaptive bitrate streaming task.
 * @class
 */
class ComplexAdaptiveDynamicStreamingTaskResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status of a single adaptive bitrate stream. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The execution progress of a single adaptive bitrate stream. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * Input of a single adaptive bitrate stream.
         * @type {ComplexAdaptiveDynamicStreamingTaskInput || null}
         */
        this.Input = null;

        /**
         * Output of a single adaptive bitrate stream.
         * @type {ComplexAdaptiveDynamicStreamingTaskOutput || null}
         */
        this.Output = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

        if (params.Input) {
            let obj = new ComplexAdaptiveDynamicStreamingTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new ComplexAdaptiveDynamicStreamingTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }

    }
}

/**
 * ConfirmEvents request structure.
 * @class
 */
class ConfirmEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event handler, i.e., the `EventSet. EventHandle` field in the output parameters of the [event notification pulling](https://intl.cloud.tencent.com/document/product/266/33433?from_cn_redirect=1) API.
Array length limit: 16.
         * @type {Array.<string> || null}
         */
        this.EventHandles = null;

        /**
         * Reserved field for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventHandles = 'EventHandles' in params ? params.EventHandles : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * CreateAIRecognitionTemplate response structure.
 * @class
 */
class CreateAIRecognitionTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of video content recognition template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifySubAppIdStatus request structure.
 * @class
 */
class ModifySubAppIdStatusRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Subapplication status. Valid values:
<li>On: enabled</li>
<li>Off: disabled</li>
<li>Destroyed: terminated</li>
You cannot enable a subapplication whose status is "Destroying". You can enable it after it was terminated.
         * @type {string || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * CreateSubAppId response structure.
 * @class
 */
class CreateSubAppIdResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of created subapplication.
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteTranscodeTemplate request structure.
 * @class
 */
class DeleteTranscodeTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of transcoding template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Terrorism information
 * @class
 */
class AiReviewTerrorismTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Score of detected terrorism information in a video between 0 and 100.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Suggestion for detected terrorism information. Valid values:
<li>pass.</li>
<li>review.</li>
<li>block.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * Tag of the detected terrorism information in a video. Valid values:
<li>`guns`: weapons and guns</li>
<li>`crowd`: crowds</li>
<li>`police`: police forces</li>
<li>`bloody`: bloody images</li>
<li>`banners`: terrorism flags</li>
<li>`militant`: militants</li>
<li>`explosion`: explosions and fires</li>
<li>`terrorists`: terrorists</li>
<li>`scenario`: terrorism images</li>
         * @type {string || null}
         */
        this.Label = null;

        /**
         * List of video segments that contain terrorism information
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain terrorism information. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain terrorism information, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * ModifyReviewTemplate response structure.
 * @class
 */
class ModifyReviewTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeImageProcessingTemplates request structure.
 * @class
 */
class DescribeImageProcessingTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The IDs of the templates to query. Length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * The template type. Valid values:
<li>Preset</li>
<li>Custom</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * The number of records to return. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Input of media quality inspection task.
 * @class
 */
class QualityInspectTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Media quality inspect template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Control parameter of prohibited information detection task
 * @class
 */
class ProhibitedConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Control parameter of prohibited information detection in speech.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {ProhibitedAsrReviewTemplateInfo || null}
         */
        this.AsrReviewInfo = null;

        /**
         * Control parameter of prohibited information detection in text.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {ProhibitedOcrReviewTemplateInfo || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.AsrReviewInfo) {
            let obj = new ProhibitedAsrReviewTemplateInfo();
            obj.deserialize(params.AsrReviewInfo)
            this.AsrReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new ProhibitedOcrReviewTemplateInfo();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * DRM-protected adaptive bitstream playback information
 * @class
 */
class DrmStreamingsInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the adaptive bitrate streaming template whose protection type is SimpleAES.
         * @type {number || null}
         */
        this.SimpleAesDefinition = null;

        /**
         * The ID of the adaptive bitrate streaming template that encrypts the streams by Widewine.
         * @type {number || null}
         */
        this.WidevineDefinition = null;

        /**
         * The ID of the adaptive bitrate streaming template that encrypts the streams by FairPlay.
         * @type {number || null}
         */
        this.FairPlayDefinition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SimpleAesDefinition = 'SimpleAesDefinition' in params ? params.SimpleAesDefinition : null;
        this.WidevineDefinition = 'WidevineDefinition' in params ? params.WidevineDefinition : null;
        this.FairPlayDefinition = 'FairPlayDefinition' in params ? params.FairPlayDefinition : null;

    }
}

/**
 * SplitMedia request structure.
 * @class
 */
class SplitMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The video ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Video splitting task information list, supporting up to 100 splitting messages at the same time.
         * @type {Array.<SplitMediaTaskConfig> || null}
         */
        this.Segments = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Identifies the source context, which is used to transparently transmit user request information. This field value will be returned in the SplitMediaComplete callback and task flow status change callback, with a maximum length of 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The identification code used for task deduplication. If there is a request with the same identification code within three days, this request will return an error. The maximum length is 50 characters, without or with an empty string to indicate no deduplication.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The priority of the task. The larger the value, the higher the priority. The value range is -10 to 10. If left blank, it means 0.
         * @type {number || null}
         */
        this.TasksPriority = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.Segments) {
            this.Segments = new Array();
            for (let z in params.Segments) {
                let obj = new SplitMediaTaskConfig();
                obj.deserialize(params.Segments[z]);
                this.Segments.push(obj);
            }
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;

    }
}

/**
 * Output for OCR-based recognition of terrorism content
 * @class
 */
class AiReviewTerrorismOcrTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence score for the OCR-detected terrorism content. Value range: 0-100
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the OCR-detected terrorism content
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of video segments that contain OCR-detected terrorism content
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewOcrTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain OCR-detected terrorism content. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain OCR-detected terrorism content, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewOcrTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * Intelligent analysis result
 * @class
 */
class AiAnalysisResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task type. Valid values:
<li>Classification: intelligent categorization</li>
<li>Cover: intelligent cover generating</li>
<li>Tag: intelligent tagging</li>
<li>FrameTag: intelligent frame tagging</li>
<li>Highlight: intelligent highlight generating</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Query result of intelligent categorization task in video content analysis, which is valid if task type is `Classification`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskClassificationResult || null}
         */
        this.ClassificationTask = null;

        /**
         * Query result of intelligent cover generating task in video content analysis, which is valid if task type is `Cover`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskCoverResult || null}
         */
        this.CoverTask = null;

        /**
         * Query result of intelligent tagging task in video content analysis, which is valid if task type is `Tag`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskTagResult || null}
         */
        this.TagTask = null;

        /**
         * Query result of intelligent frame-specific tagging task in video content analysis, which is valid if task type is `FrameTag`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskFrameTagResult || null}
         */
        this.FrameTagTask = null;

        /**
         * Query result of an intelligent highlight generating task in video content analysis, which is valid when task type is `Highlight`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskHighlightResult || null}
         */
        this.HighlightTask = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.ClassificationTask) {
            let obj = new AiAnalysisTaskClassificationResult();
            obj.deserialize(params.ClassificationTask)
            this.ClassificationTask = obj;
        }

        if (params.CoverTask) {
            let obj = new AiAnalysisTaskCoverResult();
            obj.deserialize(params.CoverTask)
            this.CoverTask = obj;
        }

        if (params.TagTask) {
            let obj = new AiAnalysisTaskTagResult();
            obj.deserialize(params.TagTask)
            this.TagTask = obj;
        }

        if (params.FrameTagTask) {
            let obj = new AiAnalysisTaskFrameTagResult();
            obj.deserialize(params.FrameTagTask)
            this.FrameTagTask = obj;
        }

        if (params.HighlightTask) {
            let obj = new AiAnalysisTaskHighlightResult();
            obj.deserialize(params.HighlightTask)
            this.HighlightTask = obj;
        }

    }
}

/**
 * The information of an adaptive bitrate (bitrate reduction) task.
 * @class
 */
class ReduceMediaBitrateAdaptiveDynamicStreamingResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The error code. An empty string indicates the task is successful; other values indicate that the task failed. For details, see [Video processing error codes](https://intl.cloud.tencent.com/document/product/266/39145?lang=en&pg=#video-processing).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * The error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The input of an adaptive bitrate task.
         * @type {AdaptiveDynamicStreamingTaskInput || null}
         */
        this.Input = null;

        /**
         * The output of an adaptive bitrate task.
         * @type {AdaptiveDynamicStreamingInfoItem || null}
         */
        this.Output = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AdaptiveDynamicStreamingTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AdaptiveDynamicStreamingInfoItem();
            obj.deserialize(params.Output)
            this.Output = obj;
        }

    }
}

/**
 * AttachMediaSubtitles response structure.
 * @class
 */
class AttachMediaSubtitlesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateDomainVerifyRecord response structure.
 * @class
 */
class CreateDomainVerifyRecordResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * DNS Verify Information
         * @type {DNSVerifyInfo || null}
         */
        this.DNSVerifyInfo = null;

        /**
         * File Verify Information
         * @type {FileVerifyInfo || null}
         */
        this.FileVerifyInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.DNSVerifyInfo) {
            let obj = new DNSVerifyInfo();
            obj.deserialize(params.DNSVerifyInfo)
            this.DNSVerifyInfo = obj;
        }

        if (params.FileVerifyInfo) {
            let obj = new FileVerifyInfo();
            obj.deserialize(params.FileVerifyInfo)
            this.FileVerifyInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExtractCopyRightWatermark response structure.
 * @class
 */
class ExtractCopyRightWatermarkResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Transcoding information of VOD file
 * @class
 */
class MediaTranscodeInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information set of transcoding with each specification. Each element represents a result of transcoding with a specification.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaTranscodeItem> || null}
         */
        this.TranscodeSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.TranscodeSet) {
            this.TranscodeSet = new Array();
            for (let z in params.TranscodeSet) {
                let obj = new MediaTranscodeItem();
                obj.deserialize(params.TranscodeSet[z]);
                this.TranscodeSet.push(obj);
            }
        }

    }
}

/**
 * Player substream name information
 * @class
 */
class ResolutionNameInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Length of video short side in px.
         * @type {number || null}
         */
        this.MinEdgeLength = null;

        /**
         * Display name.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MinEdgeLength = 'MinEdgeLength' in params ? params.MinEdgeLength : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * VerifyDomainRecord request structure.
 * @class
 */
class VerifyDomainRecordRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Need to access the VOD acceleration domain name.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2024, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * VerifyType:
<li>dns: DNS Parse verification; </li>
<li>fIle: Document verification.</li>

Default value: dns.
         * @type {string || null}
         */
        this.VerifyType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.VerifyType = 'VerifyType' in params ? params.VerifyType : null;

    }
}

/**
 * Text keyword recognition result.
 * @class
 */
class AiRecognitionTaskOcrWordsResultItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Text keyword.
         * @type {string || null}
         */
        this.Word = null;

        /**
         * List of segments that contain a text keyword.
         * @type {Array.<AiRecognitionTaskOcrWordsSegmentItem> || null}
         */
        this.SegmentSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Word = 'Word' in params ? params.Word : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new AiRecognitionTaskOcrWordsSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }

    }
}

/**
 * DeleteCDNDomain request structure.
 * @class
 */
class DeleteCDNDomainRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * ParseStreamingManifest request structure.
 * @class
 */
class ParseStreamingManifestRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Index file content to be parsed.
         * @type {string || null}
         */
        this.MediaManifestContent = null;

        /**
         * Video index file format, which is `m3u8` by default.
<li>m3u8</li>
<li>mpd</li>
         * @type {string || null}
         */
        this.ManifestType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaManifestContent = 'MediaManifestContent' in params ? params.MediaManifestContent : null;
        this.ManifestType = 'ManifestType' in params ? params.ManifestType : null;

    }
}

/**
 * Image moderation results.
 * @class
 */
class ReviewImageResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The suggestion. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The most likely label for the suspicious content. This parameter is valid if `Suggestion` is `review` or `block`. Valid values: <li>`Porn`</li> <li>`Terror`</li>
         * @type {string || null}
         */
        this.Label = null;

        /**
         * The most likely type of the suspicious content. This parameter is valid only if `Suggestion` is `review` or `block`.
<li>`Image` (people or icons in images)</li>
<li>`OCR` (text in images)</li>
         * @type {string || null}
         */
        this.Form = null;

        /**
         * A list of the suspicious segments detected.
<font color=red>Note</font>: Only the first 10 results will be returned at most. You can get all the results from the file specified by `SegmentSetFileUrl`.
         * @type {Array.<ReviewImageSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * The URL of the file that contains suspicious segments. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time (`SegmentSetFileUrlExpireTime`).
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * The expiration time of the file that contains suspicious segments, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;
        this.Form = 'Form' in params ? params.Form : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new ReviewImageSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * DeleteSampleSnapshotTemplate response structure.
 * @class
 */
class DeleteSampleSnapshotTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Input type of intelligent tagging task
 * @class
 */
class AiAnalysisTaskTagInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intelligent video tagging template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Head Tail Template Details
 * @class
 */
class HeadTailTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Head Tail Template Number.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Template name, supports up to 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description, up to 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Title candidate list. When using it, the one closest to the resolution of the feature film will be selected. When the same candidate exists, the first one will be selected. A maximum of 5 are supported.
         * @type {Array.<string> || null}
         */
        this.HeadCandidateSet = null;

        /**
         * Ending candidate list. When using it, the one closest to the resolution of the feature film will be selected. When the same candidate exists, the first one will be selected. A maximum of 5 are supported.
         * @type {Array.<string> || null}
         */
        this.TailCandidateSet = null;

        /**
         * Padding method. When the video stream configuration width and height parameters are inconsistent with the aspect ratio of the original video, the transcoding processing method is "padding". Optional filling method:
<li> stretch: stretch, stretch each frame to fill the entire screen, which may cause the transcoded video to be "squashed" or "stretched";</li> 
<li> gauss: Gaussian blur, keep the video aspect ratio unchanged, use Gaussian blur for the remaining edges; </li>
<li> white: leave blank, keep the video aspect ratio unchanged, use the remaining edges for the edge Use white filling; </li>
<li> black: Leave black, keep the video aspect ratio unchanged, and fill the remaining edges with black. </li>
Default value: stretch.
         * @type {string || null}
         */
        this.FillType = null;

        /**
         * Template creation time, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * The last modification time of the template, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.HeadCandidateSet = 'HeadCandidateSet' in params ? params.HeadCandidateSet : null;
        this.TailCandidateSet = 'TailCandidateSet' in params ? params.TailCandidateSet : null;
        this.FillType = 'FillType' in params ? params.FillType : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * DescribeStorageDetails response structure.
 * @class
 */
class DescribeStorageDetailsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Storage statistics with one piece of data for every 5 minutes or 1 day.
         * @type {Array.<StatDataItem> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new StatDataItem();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * PullEvents response structure.
 * @class
 */
class PullEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of events.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<EventContent> || null}
         */
        this.EventSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.EventSet) {
            this.EventSet = new Array();
            for (let z in params.EventSet) {
                let obj = new EventContent();
                obj.deserialize(params.EventSet[z]);
                this.EventSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Input type of object recognition task.
 * @class
 */
class AiRecognitionTaskObjectResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Object recognition template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * DescribeCdnLogs request structure.
 * @class
 */
class DescribeCdnLogsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name.
         * @type {string || null}
         */
        this.DomainName = null;

        /**
         * Start time for log acquisition in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#iso-.E6.97.A5.E6.9C.9F.E6.A0.BC.E5.BC.8F).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#iso-.E6.97.A5.E6.9C.9F.E6.A0.BC.E5.BC.8F), which must be after the start time.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Maximum return results of pulling paginated queries. Default value: 100; maximum value: 1000
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Page number offset from the beginning of paginated queries. Default value: 0
         * @type {number || null}
         */
        this.Offset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.DomainName = 'DomainName' in params ? params.DomainName : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;

    }
}

/**
 * Video processing task type
 * @class
 */
class MediaProcessTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of transcoding tasks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TranscodeTaskInput> || null}
         */
        this.TranscodeTaskSet = null;

        /**
         * List of animated image generating tasks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AnimatedGraphicTaskInput> || null}
         */
        this.AnimatedGraphicTaskSet = null;

        /**
         * List of time point screencapturing tasks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<SnapshotByTimeOffsetTaskInput> || null}
         */
        this.SnapshotByTimeOffsetTaskSet = null;

        /**
         * List of sampled screencapturing tasks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<SampleSnapshotTaskInput> || null}
         */
        this.SampleSnapshotTaskSet = null;

        /**
         * List of image sprite generating tasks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ImageSpriteTaskInput> || null}
         */
        this.ImageSpriteTaskSet = null;

        /**
         * List of cover generating tasks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<CoverBySnapshotTaskInput> || null}
         */
        this.CoverBySnapshotTaskSet = null;

        /**
         * List of adaptive bitrate streaming tasks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AdaptiveDynamicStreamingTaskInput> || null}
         */
        this.AdaptiveDynamicStreamingTaskSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.TranscodeTaskSet) {
            this.TranscodeTaskSet = new Array();
            for (let z in params.TranscodeTaskSet) {
                let obj = new TranscodeTaskInput();
                obj.deserialize(params.TranscodeTaskSet[z]);
                this.TranscodeTaskSet.push(obj);
            }
        }

        if (params.AnimatedGraphicTaskSet) {
            this.AnimatedGraphicTaskSet = new Array();
            for (let z in params.AnimatedGraphicTaskSet) {
                let obj = new AnimatedGraphicTaskInput();
                obj.deserialize(params.AnimatedGraphicTaskSet[z]);
                this.AnimatedGraphicTaskSet.push(obj);
            }
        }

        if (params.SnapshotByTimeOffsetTaskSet) {
            this.SnapshotByTimeOffsetTaskSet = new Array();
            for (let z in params.SnapshotByTimeOffsetTaskSet) {
                let obj = new SnapshotByTimeOffsetTaskInput();
                obj.deserialize(params.SnapshotByTimeOffsetTaskSet[z]);
                this.SnapshotByTimeOffsetTaskSet.push(obj);
            }
        }

        if (params.SampleSnapshotTaskSet) {
            this.SampleSnapshotTaskSet = new Array();
            for (let z in params.SampleSnapshotTaskSet) {
                let obj = new SampleSnapshotTaskInput();
                obj.deserialize(params.SampleSnapshotTaskSet[z]);
                this.SampleSnapshotTaskSet.push(obj);
            }
        }

        if (params.ImageSpriteTaskSet) {
            this.ImageSpriteTaskSet = new Array();
            for (let z in params.ImageSpriteTaskSet) {
                let obj = new ImageSpriteTaskInput();
                obj.deserialize(params.ImageSpriteTaskSet[z]);
                this.ImageSpriteTaskSet.push(obj);
            }
        }

        if (params.CoverBySnapshotTaskSet) {
            this.CoverBySnapshotTaskSet = new Array();
            for (let z in params.CoverBySnapshotTaskSet) {
                let obj = new CoverBySnapshotTaskInput();
                obj.deserialize(params.CoverBySnapshotTaskSet[z]);
                this.CoverBySnapshotTaskSet.push(obj);
            }
        }

        if (params.AdaptiveDynamicStreamingTaskSet) {
            this.AdaptiveDynamicStreamingTaskSet = new Array();
            for (let z in params.AdaptiveDynamicStreamingTaskSet) {
                let obj = new AdaptiveDynamicStreamingTaskInput();
                obj.deserialize(params.AdaptiveDynamicStreamingTaskSet[z]);
                this.AdaptiveDynamicStreamingTaskSet.push(obj);
            }
        }

    }
}

/**
 * Information of output video stream
 * @class
 */
class OutputVideoStream extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video stream encoder. Valid values:
<li>libx264: H.264</li>
Default value: libx264.
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * Video frame rate in Hz. Value range: [0, 60].
Default value: 0, which means that the value is the same as the video frame rate of the first video segment in the first video track.
         * @type {number || null}
         */
        this.Fps = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Fps = 'Fps' in params ? params.Fps : null;

    }
}

/**
 * Task flow template details
 * @class
 */
class ProcedureTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task flow name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Type of a task flow template. Valid values:
<li>Preset: preset task flow template;</li>
<li>Custom: custom task flow template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Parameter of video processing task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaProcessTaskInput || null}
         */
        this.MediaProcessTask = null;

        /**
         * The information of the intelligent moderation task\*.
<font color=red>\*: This parameter is used by our old moderation templates and is not recommended. Please use `ReviewAudioVideoTask` instead.</font> 
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {AiContentReviewTaskInput || null}
         */
        this.AiContentReviewTask = null;

        /**
         * Parameter of AI-based content analysis task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskInput || null}
         */
        this.AiAnalysisTask = null;

        /**
         * Type parameter of AI-based content recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskInput || null}
         */
        this.AiRecognitionTask = null;

        /**
         * Parameter of a release on WeChat Mini Program task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {WechatMiniProgramPublishTaskInput || null}
         */
        this.MiniProgramPublishTask = null;

        /**
         * The information of the moderation task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ProcedureReviewAudioVideoTaskInput || null}
         */
        this.ReviewAudioVideoTask = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.MediaProcessTask) {
            let obj = new MediaProcessTaskInput();
            obj.deserialize(params.MediaProcessTask)
            this.MediaProcessTask = obj;
        }

        if (params.AiContentReviewTask) {
            let obj = new AiContentReviewTaskInput();
            obj.deserialize(params.AiContentReviewTask)
            this.AiContentReviewTask = obj;
        }

        if (params.AiAnalysisTask) {
            let obj = new AiAnalysisTaskInput();
            obj.deserialize(params.AiAnalysisTask)
            this.AiAnalysisTask = obj;
        }

        if (params.AiRecognitionTask) {
            let obj = new AiRecognitionTaskInput();
            obj.deserialize(params.AiRecognitionTask)
            this.AiRecognitionTask = obj;
        }

        if (params.MiniProgramPublishTask) {
            let obj = new WechatMiniProgramPublishTaskInput();
            obj.deserialize(params.MiniProgramPublishTask)
            this.MiniProgramPublishTask = obj;
        }

        if (params.ReviewAudioVideoTask) {
            let obj = new ProcedureReviewAudioVideoTaskInput();
            obj.deserialize(params.ReviewAudioVideoTask)
            this.ReviewAudioVideoTask = obj;
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * Domain name information
 * @class
 */
class DomainDetailInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Acceleration region information
Note: this field may return `null`, indicating that no valid value is obtained.
         * @type {Array.<AccelerateAreaInfo> || null}
         */
        this.AccelerateAreaInfos = null;

        /**
         * Deployment status. Valid values:
<li>Online</li>
<li>Deploying</li>
<li>Locked: you cannot change the deployment status of locked domain names</li>
         * @type {string || null}
         */
        this.DeployStatus = null;

        /**
         * HTTPS configuration information
Note: this field may return `null`, indicating that no valid value is obtained.
         * @type {DomainHTTPSConfig || null}
         */
        this.HTTPSConfig = null;

        /**
         * [Key hotlink protection](https://intl.cloud.tencent.com/document/product/266/33986) configuration
Note: this field may return `null`, indicating that no valid value is obtained.
         * @type {UrlSignatureAuthPolicy || null}
         */
        this.UrlSignatureAuthPolicy = null;

        /**
         * [Referer hotlink protection](https://intl.cloud.tencent.com/document/product/266/33985) configuration
Note: this field may return `null`, indicating that no valid value is obtained.
         * @type {RefererAuthPolicy || null}
         */
        this.RefererAuthPolicy = null;

        /**
         * The time when the domain name was added in the VOD system
<li>The time is in [ISO 8601 date format](https://intl.cloud.tencent.com/document/product/266/11732).</li>
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * The QUIC configuration for the domain.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {DomainQUICConfig || null}
         */
        this.QUICConfig = null;

        /**
         * 
         * @type {IPFilterPolicy || null}
         */
        this.IPFilterPolicy = null;

        /**
         * Domain type. Valid values:
<li>`VOD`: Domain name distributed using the VOD product;</li> <li>`EdgeOne`: Domain name distributed using the EdgeOne product.</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;

        if (params.AccelerateAreaInfos) {
            this.AccelerateAreaInfos = new Array();
            for (let z in params.AccelerateAreaInfos) {
                let obj = new AccelerateAreaInfo();
                obj.deserialize(params.AccelerateAreaInfos[z]);
                this.AccelerateAreaInfos.push(obj);
            }
        }
        this.DeployStatus = 'DeployStatus' in params ? params.DeployStatus : null;

        if (params.HTTPSConfig) {
            let obj = new DomainHTTPSConfig();
            obj.deserialize(params.HTTPSConfig)
            this.HTTPSConfig = obj;
        }

        if (params.UrlSignatureAuthPolicy) {
            let obj = new UrlSignatureAuthPolicy();
            obj.deserialize(params.UrlSignatureAuthPolicy)
            this.UrlSignatureAuthPolicy = obj;
        }

        if (params.RefererAuthPolicy) {
            let obj = new RefererAuthPolicy();
            obj.deserialize(params.RefererAuthPolicy)
            this.RefererAuthPolicy = obj;
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

        if (params.QUICConfig) {
            let obj = new DomainQUICConfig();
            obj.deserialize(params.QUICConfig)
            this.QUICConfig = obj;
        }

        if (params.IPFilterPolicy) {
            let obj = new IPFilterPolicy();
            obj.deserialize(params.IPFilterPolicy)
            this.IPFilterPolicy = obj;
        }
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Result for intelligent recognition of terrorism content
 * @class
 */
class AiReviewTaskTerrorismResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for intelligent recognition of terrorism content
         * @type {AiReviewTerrorismTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for intelligent recognition of terrorism content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTerrorismTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a moderation task (terrorist content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewTerrorismTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewTerrorismTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * ProcessMediaByUrl response structure.
 * @class
 */
class ProcessMediaByUrlResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeImageReviewUsageData request structure.
 * @class
 */
class DescribeImageReviewUsageDataRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The start date for the query in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * The end date for the query in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format). The end date must be later than the start date.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Video segment containing ASR-detected suspicious content
 * @class
 */
class MediaContentReviewAsrTextSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of suspected segment in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of suspected segment in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Confidence of suspected segment.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the detected suspicious content. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of suspected keywords.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.KeywordSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.KeywordSet = 'KeywordSet' in params ? params.KeywordSet : null;

    }
}

/**
 * DescribeEventConfig response structure.
 * @class
 */
class DescribeEventConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * How to receive event notifications. 
<li>PUSH: [HTTP callback notification](https://www.tencentcloud.com/document/product/266/33948);</li>
<li>PULL: [Reliable notification based on message queue ](https://www.tencentcloud.com/document/product/266/33948). </li>
         * @type {string || null}
         */
        this.Mode = null;

        /**
         * The address used to receive 3.0 format callbacks when using the [HTTP callback notification](https://www.tencentcloud.com/document/product/266/33948) reception method. 
         * @type {string || null}
         */
        this.NotificationUrl = null;

        /**
         * Whether to receive the [Video Upload Completed](https://www.tencentcloud.com/document/product/266/33950) event notification. "OFF" is to ignore the event notification, and "ON" is to receive the event notification. 
         * @type {string || null}
         */
        this.UploadMediaCompleteEventSwitch = null;

        /**
         * Whether to receive [Video deletion completed](https://www.tencentcloud.com/document/product/266/33952) event notification, "OFF" means to ignore the event notification, "ON" means to receive the event notification .
         * @type {string || null}
         */
        this.DeleteMediaCompleteEventSwitch = null;

        /**
         * Whether to receive the Persistence completed event notification,  "OFF" means to ignore the event notification, "ON" means to receive the event notification.
         * @type {string || null}
         */
        this.PersistenceCompleteEventSwitch = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Mode = 'Mode' in params ? params.Mode : null;
        this.NotificationUrl = 'NotificationUrl' in params ? params.NotificationUrl : null;
        this.UploadMediaCompleteEventSwitch = 'UploadMediaCompleteEventSwitch' in params ? params.UploadMediaCompleteEventSwitch : null;
        this.DeleteMediaCompleteEventSwitch = 'DeleteMediaCompleteEventSwitch' in params ? params.DeleteMediaCompleteEventSwitch : null;
        this.PersistenceCompleteEventSwitch = 'PersistenceCompleteEventSwitch' in params ? params.PersistenceCompleteEventSwitch : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeCdnLogs response structure.
 * @class
 */
class DescribeCdnLogsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of log download links
Note: this field may return `null`, indicating that no valid value is obtained.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Log download list for CDN nodes outside Mainland China. If global acceleration is not enabled for the domain name, ignore this parameter.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<CdnLogInfo> || null}
         */
        this.OverseaCdnLogs = null;

        /**
         * Log download list for CDN nodes in Mainland China.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<CdnLogInfo> || null}
         */
        this.DomesticCdnLogs = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.OverseaCdnLogs) {
            this.OverseaCdnLogs = new Array();
            for (let z in params.OverseaCdnLogs) {
                let obj = new CdnLogInfo();
                obj.deserialize(params.OverseaCdnLogs[z]);
                this.OverseaCdnLogs.push(obj);
            }
        }

        if (params.DomesticCdnLogs) {
            this.DomesticCdnLogs = new Array();
            for (let z in params.DomesticCdnLogs) {
                let obj = new CdnLogInfo();
                obj.deserialize(params.DomesticCdnLogs[z]);
                this.DomesticCdnLogs.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Video segment containing detected politically sensitive content
 * @class
 */
class MediaContentReviewPoliticalSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of a suspected segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of a suspected segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Confidence score for the detected politically sensitive content
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the detected politically sensitive content. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * Name of the politically sensitive content or banned images
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Labels for the detected politically sensitive content. The relationship between the values of this parameter and those of the `LabelSet` parameter in [PoliticalImgReviewTemplateInfo](https://intl.cloud.tencent.com/document/api/266/31773?from_cn_redirect=1#PoliticalImgReviewTemplateInfo) is as follows:
violation_photo:
<li>`violation_photo`: banned images</li>
politician:
<li>`nation_politician`: state leader of China</li>
<li>`province_politician`: provincial officials</li>
<li>`bureau_politician`: bureau-level officials</li>
<li>`county_politician`: county-level officials</li>
<li>`rural_politician`: township-level officials</li>
<li>`sensitive_politician`: politically sensitive people</li>
<li>`foreign_politician`: state leaders of other countries</li>
entertainment:
<li>`sensitive_entertainment`: banned people in the entertainment industry</li>
sport:
<li>`sensitive_sport`: banned sports celebrities</li>
entrepreneur:
<li>`sensitive_entrepreneur`: banned businesspeople</li>
scholar:
<li>sensitive_scholar: banned scholars</li>
celebrity:
<li>sensitive_celebrity: banned celebrities</li>
<li>historical_celebrity: banned historical figures</li>
military:
<li>sensitive_military: banned people in military</li>
         * @type {string || null}
         */
        this.Label = null;

        /**
         * URL of a suspected image (which will not be permanently stored
 and will be deleted after `PicUrlExpireTime`).
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Coordinates (pixel) of the detected politically sensitive content or banned icons. The format is [x1, y1, x2, y2], which indicates the coordinates of the top-left and bottom-right corners.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

        /**
         * This field has been disused. Please use `PicUrlExpireTime`.
         * @type {number || null}
         */
        this.PicUrlExpireTimeStamp = null;

        /**
         * Expiration time of suspected image URL in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.PicUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Label = 'Label' in params ? params.Label : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;
        this.PicUrlExpireTimeStamp = 'PicUrlExpireTimeStamp' in params ? params.PicUrlExpireTimeStamp : null;
        this.PicUrlExpireTime = 'PicUrlExpireTime' in params ? params.PicUrlExpireTime : null;

    }
}

/**
 * DeletePersonSample response structure.
 * @class
 */
class DeletePersonSampleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateSnapshotByTimeOffsetTemplate response structure.
 * @class
 */
class CreateSnapshotByTimeOffsetTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a time point screencapturing template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameters for audio (silence, bass, pop) detection.
 * @class
 */
class VoiceConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Audio (mute, bass, pop) detection switch, optional values: 
<li>ON: on; </li>
<li>OFF: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * ModifyContentReviewTemplate request structure.
 * @class
 */
class ModifyContentReviewTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an intelligent content recognition template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of an intelligent content recognition template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description of an intelligent content recognition template. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Control parameter for terrorism information.
         * @type {TerrorismConfigureInfoForUpdate || null}
         */
        this.TerrorismConfigure = null;

        /**
         * Control parameter for porn information.
         * @type {PornConfigureInfoForUpdate || null}
         */
        this.PornConfigure = null;

        /**
         * Control parameter for politically sensitive information.
         * @type {PoliticalConfigureInfoForUpdate || null}
         */
        this.PoliticalConfigure = null;

        /**
         * Control parameter of prohibited information detection. Prohibited information includes:
<li>Abusive;</li>
<li>Drug-related.</li>
         * @type {ProhibitedConfigureInfoForUpdate || null}
         */
        this.ProhibitedConfigure = null;

        /**
         * Control parameter for custom intelligent content recognition tasks.
         * @type {UserDefineConfigureInfoForUpdate || null}
         */
        this.UserDefineConfigure = null;

        /**
         * Frame capturing interval in seconds. Minimum value: 0.5 seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

        /**
         * Whether to allow the recognition result to enter the intelligent recognition platform (for human recognition).
<li>ON: yes</li>
<li>OFF: no</li>
         * @type {string || null}
         */
        this.ReviewWallSwitch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.TerrorismConfigure) {
            let obj = new TerrorismConfigureInfoForUpdate();
            obj.deserialize(params.TerrorismConfigure)
            this.TerrorismConfigure = obj;
        }

        if (params.PornConfigure) {
            let obj = new PornConfigureInfoForUpdate();
            obj.deserialize(params.PornConfigure)
            this.PornConfigure = obj;
        }

        if (params.PoliticalConfigure) {
            let obj = new PoliticalConfigureInfoForUpdate();
            obj.deserialize(params.PoliticalConfigure)
            this.PoliticalConfigure = obj;
        }

        if (params.ProhibitedConfigure) {
            let obj = new ProhibitedConfigureInfoForUpdate();
            obj.deserialize(params.ProhibitedConfigure)
            this.ProhibitedConfigure = obj;
        }

        if (params.UserDefineConfigure) {
            let obj = new UserDefineConfigureInfoForUpdate();
            obj.deserialize(params.UserDefineConfigure)
            this.UserDefineConfigure = obj;
        }
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;
        this.ReviewWallSwitch = 'ReviewWallSwitch' in params ? params.ReviewWallSwitch : null;

    }
}

/**
 * Details of an image sprite generating template
 * @class
 */
class ImageSpriteTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an image sprite generating template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Template type. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Name of an image sprite generating template.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Maximum value of the width (or long side) of a subimage in an image sprite in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of a subimage in an image sprite in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Sampling type.
         * @type {string || null}
         */
        this.SampleType = null;

        /**
         * Sampling interval.
         * @type {number || null}
         */
        this.SampleInterval = null;

        /**
         * Subimage row count of an image sprite.
         * @type {number || null}
         */
        this.RowCount = null;

        /**
         * Subimage column count of an image sprite.
         * @type {number || null}
         */
        this.ColumnCount = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Fill type. "Fill" refers to the way of processing a screenshot when its aspect ratio is different from that of the source video. The following fill types are supported:
<li> stretch: stretch. The screenshot will be stretched frame by frame to match the aspect ratio of the source video, which may make the screenshot "shorter" or "longer";</li>
<li>black: fill with black. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with black color blocks.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

        /**
         * Template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * The image format.
         * @type {string || null}
         */
        this.Format = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.SampleType = 'SampleType' in params ? params.SampleType : null;
        this.SampleInterval = 'SampleInterval' in params ? params.SampleInterval : null;
        this.RowCount = 'RowCount' in params ? params.RowCount : null;
        this.ColumnCount = 'ColumnCount' in params ? params.ColumnCount : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FillType = 'FillType' in params ? params.FillType : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Format = 'Format' in params ? params.Format : null;

    }
}

/**
 * DeleteReviewTemplate request structure.
 * @class
 */
class DeleteReviewTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique ID of the moderation template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Result information of intelligent cover generating
 * @class
 */
class AiAnalysisTaskCoverOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of intelligently generated thumbnails
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `CoverSetFileUrl`.
         * @type {Array.<MediaAiAnalysisCoverItem> || null}
         */
        this.CoverSet = null;

        /**
         * URL to the file for intelligently generated thumbnails. The file is in JSON format and has the same data structure as `CoverSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `CoverSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.CoverSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for intelligently generated thumbnails, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.CoverSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.CoverSet) {
            this.CoverSet = new Array();
            for (let z in params.CoverSet) {
                let obj = new MediaAiAnalysisCoverItem();
                obj.deserialize(params.CoverSet[z]);
                this.CoverSet.push(obj);
            }
        }
        this.CoverSetFileUrl = 'CoverSetFileUrl' in params ? params.CoverSetFileUrl : null;
        this.CoverSetFileUrlExpireTime = 'CoverSetFileUrlExpireTime' in params ? params.CoverSetFileUrlExpireTime : null;

    }
}

/**
 * Type of intelligent recognition task
 * @class
 */
class AiContentReviewTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intelligent recognition template ID
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * CreateAdaptiveDynamicStreamingTemplate response structure.
 * @class
 */
class CreateAdaptiveDynamicStreamingTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of adaptive bitrate streaming template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteSampleSnapshotTemplate request structure.
 * @class
 */
class DeleteSampleSnapshotTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a sampled screencapturing template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DescribeTranscodeTemplates response structure.
 * @class
 */
class DescribeTranscodeTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of transcoding template details.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<TranscodeTemplate> || null}
         */
        this.TranscodeTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.TranscodeTemplateSet) {
            this.TranscodeTemplateSet = new Array();
            for (let z in params.TranscodeTemplateSet) {
                let obj = new TranscodeTemplate();
                obj.deserialize(params.TranscodeTemplateSet[z]);
                this.TranscodeTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Result information of intelligent tagging
 * @class
 */
class MediaAiAnalysisTagItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Tag name.
         * @type {string || null}
         */
        this.Tag = null;

        /**
         * Confidence of tag between 0 and 100.
         * @type {number || null}
         */
        this.Confidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Tag = 'Tag' in params ? params.Tag : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;

    }
}

/**
 * DescribeStorageData response structure.
 * @class
 */
class DescribeStorageDataResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of current media files.
         * @type {number || null}
         */
        this.MediaCount = null;

        /**
         * Total current storage capacity in bytes.
         * @type {number || null}
         */
        this.TotalStorage = null;

        /**
         * Current Standard storage capacity in bytes.
         * @type {number || null}
         */
        this.StandardStorage = null;

        /**
         * Current Standard_IA storage capacity in bytes.
         * @type {number || null}
         */
        this.InfrequentStorage = null;

        /**
         * The current ARCHIVE storage usage in bytes.
         * @type {number || null}
         */
        this.ArchiveStorage = null;

        /**
         * The current DEEP ARCHIVE storage usage in bytes.
         * @type {number || null}
         */
        this.DeepArchiveStorage = null;

        /**
         * Storage usage by billing region.
         * @type {Array.<StorageStatData> || null}
         */
        this.StorageStat = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaCount = 'MediaCount' in params ? params.MediaCount : null;
        this.TotalStorage = 'TotalStorage' in params ? params.TotalStorage : null;
        this.StandardStorage = 'StandardStorage' in params ? params.StandardStorage : null;
        this.InfrequentStorage = 'InfrequentStorage' in params ? params.InfrequentStorage : null;
        this.ArchiveStorage = 'ArchiveStorage' in params ? params.ArchiveStorage : null;
        this.DeepArchiveStorage = 'DeepArchiveStorage' in params ? params.DeepArchiveStorage : null;

        if (params.StorageStat) {
            this.StorageStat = new Array();
            for (let z in params.StorageStat) {
                let obj = new StorageStatData();
                obj.deserialize(params.StorageStat[z]);
                this.StorageStat.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Full text recognition segment.
 * @class
 */
class AiRecognitionTaskOcrFullTextSegmentTextItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence of recognized segment. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Zone coordinates of recognition result. The array contains four elements: [x1,y1,x2,y2], i.e., the horizontal and vertical coordinates of the top-left and bottom-right corners.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

        /**
         * Recognized text.
         * @type {string || null}
         */
        this.Text = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;
        this.Text = 'Text' in params ? params.Text : null;

    }
}

/**
 * An image processing template, which can contain at most three operations, for example, cropping, scaling, and cropping again.
 * @class
 */
class ImageProcessingTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * The template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The template type. Valid values:
<li>Preset</li>
<li>Custom</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * An array of image processing operations. The operations will be performed in the specified order.
<li>Length limit: 3.</li>
         * @type {Array.<ImageOperation> || null}
         */
        this.Operations = null;

        /**
         * The template creation time in [ISO date format](https://www.tencentcloud.com/document/product/266/11732?lang=en&pg=#iso-date-format).
         * @type {string || null}
         */
        this.CreateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.Operations) {
            this.Operations = new Array();
            for (let z in params.Operations) {
                let obj = new ImageOperation();
                obj.deserialize(params.Operations[z]);
                this.Operations.push(obj);
            }
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;

    }
}

/**
 * Control parameter of video splitting recognition task
 * @class
 */
class SegmentConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of video splitting recognition task. Valid values:
<li>ON: enables intelligent video splitting recognition task;</li>
<li>OFF: disables intelligent video splitting recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Banding removal configuration.
 * @class
 */
class ScratchRepairInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable banding removal. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The banding removal strength. Value range: 0.0 – 1.0. This parameter is valid only if `Switch` is `ON`.
Default value: `0.0`.
         * @type {number || null}
         */
        this.Intensity = null;

        /**
         * The banding removal type. This parameter is valid only if `Switch` is `ON`. Valid values:
<li>`normal`</li>
Default value: `normal`.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Intensity = 'Intensity' in params ? params.Intensity : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * The result of file deletion.
 * @class
 */
class FileDeleteResultItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * The ID of the file deleted.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The type of the file deleted.
Note: This field may return `null`, indicating that no valid value can be obtained.
         * @type {Array.<MediaDeleteItem> || null}
         */
        this.DeleteParts = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.DeleteParts) {
            this.DeleteParts = new Array();
            for (let z in params.DeleteParts) {
                let obj = new MediaDeleteItem();
                obj.deserialize(params.DeleteParts[z]);
                this.DeleteParts.push(obj);
            }
        }

    }
}

/**
 * Input parameter type of time point screencapturing task
 * @class
 */
class SnapshotByTimeOffsetTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Time point screencapturing template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The list of screenshot time points. “s” and “%” formats are supported:
<li>When a time point string ends with “s”, its unit is second. For example, “3.5s” means the 3.5th second of the video.</li>
<li>When a time point string ends with “%”, it represents the percentage of the video’s duration. For example, “10%” means that the time point is at the 10% of the video’s entire duration.</li>
         * @type {Array.<string> || null}
         */
        this.ExtTimeOffsetSet = null;

        /**
         * List of time points for screencapturing in <font color=red>milliseconds</font>.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<number> || null}
         */
        this.TimeOffsetSet = null;

        /**
         * List of up to 10 image or text watermarks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WatermarkInput> || null}
         */
        this.WatermarkSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.ExtTimeOffsetSet = 'ExtTimeOffsetSet' in params ? params.ExtTimeOffsetSet : null;
        this.TimeOffsetSet = 'TimeOffsetSet' in params ? params.TimeOffsetSet : null;

        if (params.WatermarkSet) {
            this.WatermarkSet = new Array();
            for (let z in params.WatermarkSet) {
                let obj = new WatermarkInput();
                obj.deserialize(params.WatermarkSet[z]);
                this.WatermarkSet.push(obj);
            }
        }

    }
}

/**
 * Referer hotlink protection configuration
 * @class
 */
class RefererAuthPolicy extends  AbstractModel {
    constructor(){
        super();

        /**
         * [Referer hotlink protection](https://intl.cloud.tencent.com/document/product/266/33985) status. Valid values:
<li>Enabled</li>
<li>Disabled</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Referer authentication method. Valid values:
<li>`Black`: blocklist. Any HTTP request carrying a referer in the `Referers` list will be rejected. </li>
<li>`White`: allowlist. Only HTTP requests carrying referers in the `Referers` list will be accepted.</li>
When `Status` is set to `Enabled`, `AuthType` must be specified.
         * @type {string || null}
         */
        this.AuthType = null;

        /**
         * The list of referers (up to 20). When `Status` is set to `Enabled`, `Referers` cannot be empty. Enter domain names as referers.
         * @type {Array.<string> || null}
         */
        this.Referers = null;

        /**
         * Whether to allow requests with empty referer to access this domain name. Valid values:
<li>`Yes`</li>
<li>`No`</li>
When `Status` is set to `Enabled`, `BlankRefererAllowed` must be specified.
         * @type {string || null}
         */
        this.BlankRefererAllowed = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.AuthType = 'AuthType' in params ? params.AuthType : null;
        this.Referers = 'Referers' in params ? params.Referers : null;
        this.BlankRefererAllowed = 'BlankRefererAllowed' in params ? params.BlankRefererAllowed : null;

    }
}

/**
 * Task statistics, including number of tasks and usage.
 * @class
 */
class TaskStatDataItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time of data time range in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#iso-.E6.97.A5.E6.9C.9F.E6.A0.BC.E5.BC.8F). For example, if the time granularity is 1-day, `2018-12-01T00:00:00+08:00` represents the time range between December 1, 2018 (inclusive) and December 2, 2018 (not inclusive).
         * @type {string || null}
         */
        this.Time = null;

        /**
         * Number of tasks.
         * @type {number || null}
         */
        this.Count = null;

        /**
         * Task usage.
         * @type {number || null}
         */
        this.Usage = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Time = 'Time' in params ? params.Time : null;
        this.Count = 'Count' in params ? params.Count : null;
        this.Usage = 'Usage' in params ? params.Usage : null;

    }
}

/**
 * Object recognition result fragment.
 * @class
 */
class AiRecognitionTaskObjectSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Identifies the offset time of the beginning of the segment, in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * Offset time to identify the end of the segment, in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Identify segment confidence. Value: 0~100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * The area coordinates of the recognition result. The array contains 4 elements [x1, y1, x2, y2], which in turn represent the horizontal and vertical coordinates of the upper left point and lower right point of the area.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;

    }
}

/**
 * Output for OCR-based recognition of pornographic content
 * @class
 */
class AiReviewPornOcrTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence score for the OCR-detected pornographic content
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the OCR-detected pornographic content
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of video segments that contain OCR-detected pornographic content
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewOcrTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain OCR-detected pornographic content. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain OCR-detected pornographic content, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewOcrTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * ApplyUpload request structure.
 * @class
 */
class ApplyUploadRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media type. For the detailed valid values, please see [Upload Overview](https://intl.cloud.tencent.com/document/product/266/9760?from_cn_redirect=1#.E6.96.87.E4.BB.B6.E7.B1.BB.E5.9E.8B).
         * @type {string || null}
         */
        this.MediaType = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Media name.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * Cover type. For the detailed valid values, please see [Upload Overview](https://intl.cloud.tencent.com/document/product/266/9760?from_cn_redirect=1#.E6.96.87.E4.BB.B6.E7.B1.BB.E5.9E.8B).
         * @type {string || null}
         */
        this.CoverType = null;

        /**
         * Subsequent task operation on a media file, i.e., after a media file is uploaded, task flow operations will be initiated automatically. This parameter value is a task flow template name. VOD supports [creating task flow templates](https://intl.cloud.tencent.com/document/product/266/33819?from_cn_redirect=1) and naming the templates.
         * @type {string || null}
         */
        this.Procedure = null;

        /**
         * Expiration time of a media file in ISO 8601 format. For more information, please see [Notes on ISO Date Format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#iso-.E6.97.A5.E6.9C.9F.E6.A0.BC.E5.BC.8F).
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * Specifies upload region. This is only applicable to users that have special requirements for the upload region.
         * @type {string || null}
         */
        this.StorageRegion = null;

        /**
         * Category ID, which is used to categorize the media for management. A category can be created and its ID can be obtained by using the [category creating](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API.
<li>Default value: 0, which means "Other".</li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Source context, which is used to pass through the user request information. The [upload callback](https://intl.cloud.tencent.com/document/product/266/7830?from_cn_redirect=1) API will return the value of this field. It can contain up to 250 characters.
         * @type {string || null}
         */
        this.SourceContext = null;

        /**
         * Session context, which is used to pass through the user request information. If the `Procedure` parameter is specified, the [task flow status change callback](https://intl.cloud.tencent.com/document/product/266/9636?from_cn_redirect=1) API will return the value of this field. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * Reserved parameter for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaType = 'MediaType' in params ? params.MediaType : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.CoverType = 'CoverType' in params ? params.CoverType : null;
        this.Procedure = 'Procedure' in params ? params.Procedure : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.StorageRegion = 'StorageRegion' in params ? params.StorageRegion : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.SourceContext = 'SourceContext' in params ? params.SourceContext : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * CreateSampleSnapshotTemplate response structure.
 * @class
 */
class CreateSampleSnapshotTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a sampled screencapturing template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Input type of an intelligent highlight generating task
 * @class
 */
class AiAnalysisTaskHighlightInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of an intelligent highlight generating template.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * ModifyCDNDomainConfig request structure.
 * @class
 */
class ModifyCDNDomainConfigRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * Domain Config.
         * @type {CDNDomainConfigForUpdate || null}
         */
        this.Config = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;

        if (params.Config) {
            let obj = new CDNDomainConfigForUpdate();
            obj.deserialize(params.Config)
            this.Config = obj;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DeleteContentReviewTemplate response structure.
 * @class
 */
class DeleteContentReviewTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CloneCDNDomain response structure.
 * @class
 */
class CloneCDNDomainResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Basic information of VOD media file
 * @class
 */
class MediaBasicInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media filename.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Media file description.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Creation time of media file in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last update time of media file (by an operation that triggers updating of media file information such as modifying video attributes or initiating video processing) in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * Expiration time of media file in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). After the expiration, the media file and its related resources (such as transcoding results and image sprites) will be permanently deleted. `9999-12-31T23:59:59Z` means "never expire".
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * Category ID of media file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Category name of media file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ClassName = null;

        /**
         * Category path to media file separated by "-", such as "new first-level category - new second-level category".
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ClassPath = null;

        /**
         * Cover image address of media file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CoverUrl = null;

        /**
         * Media file container, such as mp4 and flv.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * URL of source media file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MediaUrl = null;

        /**
         * Source information of media file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaSourceData || null}
         */
        this.SourceInfo = null;

        /**
         * Regions where media files are stored, such as `ap-chongqing`. For more regions, see [Storage Region](https://intl.cloud.tencent.com/document/product/266/9760).
         * @type {string || null}
         */
        this.StorageRegion = null;

        /**
         * Tag information of media file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<string> || null}
         */
        this.TagSet = null;

        /**
         * Unique ID of an LVB recording file.
         * @type {string || null}
         */
        this.Vid = null;

        /**
         * File type:
<li>Video: video file</li>
<li>Audio: audio file</li>
<li>Image: image file</li>
         * @type {string || null}
         */
        this.Category = null;

        /**
         * File status: Normal: normal, Forbidden: banned.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Storage class of a media file:
<li>STANDARD</li>
<li>STANDARD_IA</li>
<li>ARCHIVE</li>
<li>DEEP_ARCHIVE</li>
         * @type {string || null}
         */
        this.StorageClass = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ClassName = 'ClassName' in params ? params.ClassName : null;
        this.ClassPath = 'ClassPath' in params ? params.ClassPath : null;
        this.CoverUrl = 'CoverUrl' in params ? params.CoverUrl : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.MediaUrl = 'MediaUrl' in params ? params.MediaUrl : null;

        if (params.SourceInfo) {
            let obj = new MediaSourceData();
            obj.deserialize(params.SourceInfo)
            this.SourceInfo = obj;
        }
        this.StorageRegion = 'StorageRegion' in params ? params.StorageRegion : null;
        this.TagSet = 'TagSet' in params ? params.TagSet : null;
        this.Vid = 'Vid' in params ? params.Vid : null;
        this.Category = 'Category' in params ? params.Category : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.StorageClass = 'StorageClass' in params ? params.StorageClass : null;

    }
}

/**
 * Input parameters for ASR-based recognition of politically sensitive content
 * @class
 */
class AiReviewPoliticalAsrTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the template for recognition of politically sensitive content
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * PullUpload request structure.
 * @class
 */
class PullUploadRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The URL of the media to pull, which can be in HLS format, but not DASH format.
For more information about supported extensions, see [Media types](https://intl.cloud.tencent.com/document/product/266/9760#media-types). Please make sure the URL is accessible.
         * @type {string || null}
         */
        this.MediaUrl = null;

        /**
         * The file format (extension). For information about supported extensions, see [Media Types](https://intl.cloud.tencent.com/document/product/266/9760?from_cn_redirect=1#.E5.AA.92.E4.BD.93.E7.B1.BB.E5.9E.8B).
If you do not specify this parameter or pass in an empty string, the file obtained will have the same extension as `MediaUrl`.
         * @type {string || null}
         */
        this.MediaType = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Media name.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * The URL of the video to pull. Supported formats include GIF, JPEG (JPG), and PNG.
         * @type {string || null}
         */
        this.CoverUrl = null;

        /**
         * Subsequent task for media. For more information, please see [Specifying Task Flow After Upload](https://intl.cloud.tencent.com/document/product/266/9759?from_cn_redirect=1).
         * @type {string || null}
         */
        this.Procedure = null;

        /**
         * Expiration time of media file in ISO 8601 format. For more information, please see [Notes on ISO Date Format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * Specifies upload region. This is only applicable to users that have special requirements for the upload region:
<li>If it is left empty, the upload region is your [default region](https://intl.cloud.tencent.com/document/product/266/14059?from=11329?from_cn_redirect=1#.E5.AD.98.E5.82.A8.E5.9C.B0.E5.9F.9F.E6.AD.A5.E9.AA.A4);</li>
<li>If it is specified, please make sure that the upload region has been [enabled for storage](https://intl.cloud.tencent.com/document/product/266/14059?from=11329?from_cn_redirect=1#.E5.AD.98.E5.82.A8.E5.9C.B0.E5.9F.9F.E6.AD.A5.E9.AA.A4).</li>
         * @type {string || null}
         */
        this.StorageRegion = null;

        /**
         * Category ID, which is used to categorize the media for management. A category can be created and its ID can be obtained by using the [CreateClass](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API.
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The source context which is used to pass through the user request information. After `Procedure` is specified, the task flow status change callback will return the value of this field. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * Used to identify duplicate requests. After you send a request, if any request with the same `SessionId` has already been sent in the last three days (72 hours), an error message will be returned. `SessionId` contains up to 50 characters. If this parameter is not carried or is an empty string, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Reserved field for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

        /**
         * Source context, which is used to pass through the user request information. The [upload callback](https://intl.cloud.tencent.com/document/product/266/7830?from_cn_redirect=1) API will return the value of this field. It can contain up to 250 characters.
         * @type {string || null}
         */
        this.SourceContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaUrl = 'MediaUrl' in params ? params.MediaUrl : null;
        this.MediaType = 'MediaType' in params ? params.MediaType : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.CoverUrl = 'CoverUrl' in params ? params.CoverUrl : null;
        this.Procedure = 'Procedure' in params ? params.Procedure : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.StorageRegion = 'StorageRegion' in params ? params.StorageRegion : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;
        this.SourceContext = 'SourceContext' in params ? params.SourceContext : null;

    }
}

/**
 * CreateQualityInspectTemplate request structure.
 * @class
 */
class CreateQualityInspectTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Media quality inspect template name.Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Frame interval, unit in seconds, minimum value is 1. When not filled, the default frame interval is 1 second.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

        /**
         * Control parameters for detecting video jitter and ghosting.
         * @type {JitterConfigureInfo || null}
         */
        this.JitterConfigure = null;

        /**
         * Control parameters for detecting video blur.
         * @type {BlurConfigureInfo || null}
         */
        this.BlurConfigure = null;

        /**
         * Control parameters for detecting low brightness and overexposure of video.
         * @type {AbnormalLightingConfigureInfo || null}
         */
        this.AbnormalLightingConfigure = null;

        /**
         * Control parameters for detecting video crash.
         * @type {CrashScreenConfigureInfo || null}
         */
        this.CrashScreenConfigure = null;

        /**
         * Control parameters for detecting video black edges, white edges, black screen, and white screen.
         * @type {BlackWhiteEdgeConfigureInfo || null}
         */
        this.BlackWhiteEdgeConfigure = null;

        /**
         * Control parameters for detecting video noise.
         * @type {NoiseConfigureInfo || null}
         */
        this.NoiseConfigure = null;

        /**
         * Control parameters for detecting video mosaic.
         * @type {MosaicConfigureInfo || null}
         */
        this.MosaicConfigure = null;

        /**
         * Control parameters for QR code detection in video.
         * @type {QRCodeConfigureInfo || null}
         */
        this.QRCodeConfigure = null;

        /**
         * Control parameters for audio (mutes, bass, blast sound).
         * @type {VoiceConfigureInfo || null}
         */
        this.VoiceConfigure = null;

        /**
         * Control parameters for video quality evaluation.
         * @type {QualityEvaluationConfigureInfo || null}
         */
        this.QualityEvaluationConfigure = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;

        if (params.JitterConfigure) {
            let obj = new JitterConfigureInfo();
            obj.deserialize(params.JitterConfigure)
            this.JitterConfigure = obj;
        }

        if (params.BlurConfigure) {
            let obj = new BlurConfigureInfo();
            obj.deserialize(params.BlurConfigure)
            this.BlurConfigure = obj;
        }

        if (params.AbnormalLightingConfigure) {
            let obj = new AbnormalLightingConfigureInfo();
            obj.deserialize(params.AbnormalLightingConfigure)
            this.AbnormalLightingConfigure = obj;
        }

        if (params.CrashScreenConfigure) {
            let obj = new CrashScreenConfigureInfo();
            obj.deserialize(params.CrashScreenConfigure)
            this.CrashScreenConfigure = obj;
        }

        if (params.BlackWhiteEdgeConfigure) {
            let obj = new BlackWhiteEdgeConfigureInfo();
            obj.deserialize(params.BlackWhiteEdgeConfigure)
            this.BlackWhiteEdgeConfigure = obj;
        }

        if (params.NoiseConfigure) {
            let obj = new NoiseConfigureInfo();
            obj.deserialize(params.NoiseConfigure)
            this.NoiseConfigure = obj;
        }

        if (params.MosaicConfigure) {
            let obj = new MosaicConfigureInfo();
            obj.deserialize(params.MosaicConfigure)
            this.MosaicConfigure = obj;
        }

        if (params.QRCodeConfigure) {
            let obj = new QRCodeConfigureInfo();
            obj.deserialize(params.QRCodeConfigure)
            this.QRCodeConfigure = obj;
        }

        if (params.VoiceConfigure) {
            let obj = new VoiceConfigureInfo();
            obj.deserialize(params.VoiceConfigure)
            this.VoiceConfigure = obj;
        }

        if (params.QualityEvaluationConfigure) {
            let obj = new QualityEvaluationConfigureInfo();
            obj.deserialize(params.QualityEvaluationConfigure)
            this.QualityEvaluationConfigure = obj;
        }

    }
}

/**
 * IPv6 access configuration
 * @class
 */
class Ipv6Access extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name enables ipv6 access configuration switch. The value is: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * ProcessMediaByProcedure request structure.
 * @class
 */
class ProcessMediaByProcedureRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * [Task flow template](https://intl.cloud.tencent.com/document/product/266/11700?from_cn_redirect=1#.E4.BB.BB.E5.8A.A1.E6.B5.81.E6.A8.A1.E6.9D.BF) name.
         * @type {string || null}
         */
        this.ProcedureName = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Task flow priority. The higher the value, the higher the priority. Value range: -10-10. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * Notification mode for task flow status change. Valid values: Finish, Change, None. If this parameter is left empty, `Finish` will be used.
         * @type {string || null}
         */
        this.TasksNotifyMode = null;

        /**
         * The source context which is used to pass through the user request information. The task flow status change callback will return the value of this field. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * Identification code used for deduplication. If there is a request with the same identification code within 7 days, this request will return an error. The maximum length is 50 characters, without or with an empty string to indicate no deduplication.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Reserved field for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.ProcedureName = 'ProcedureName' in params ? params.ProcedureName : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.TasksNotifyMode = 'TasksNotifyMode' in params ? params.TasksNotifyMode : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * The output video parameters of an audio/video remastering task.
 * @class
 */
class RebuildMediaTargetVideoStream extends  AbstractModel {
    constructor(){
        super();

        /**
         * The video codec. Valid values:
<li>`libx264`: H.264</li>
<li>`libx265`: H.265</li>
<li>`av1`: AOMedia Video 1</li>
The default codec is H.264.
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * The video bitrate (Kbps). Value range: 0 and 128-35000.
If the value is `0`, the original video bitrate will be used.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * The video frame rate (Hz). Value range: 0-100. If the value is `0`, the original video frame rate will be used.
         * @type {number || null}
         */
        this.Fps = null;

        /**
         * Resolution adaption. Valid values:
<li>`open`: Enable. When resolution adaption is enabled, `Width` indicates the long side of a video, while `Height` indicates the short side.</li>
<li>`close`: Disable. When resolution adaption is disabled, `Width` indicates the width of a video, while `Height` indicates the height.</li>

Default value: `open`.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * The maximum video width (or long side) in pixels. Value range: 0 and 128-4096.
<li>If both `Width` and `Height` are `0`, the original resolution will be used.</li>
<li>If `Width` is 0 and `Height` is not, the video width will be proportionally scaled.</li>
<li>If `Width` is not 0 and `Height` is, the video height will be proportionally scaled.</li>
<li>If neither `Width` nor `Height` is 0, the specified width and height will be used.</li>

Default value: `0`.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The maximum video width (or short side) in pixels. Value range: 0 and [128, 4096].
<li>If both `Width` and `Height` are `0`, the original resolution will be used.</li>
<li>If `Width` is 0 and `Height` is not, the video width will be proportionally scaled.</li>
<li>If `Width` is not 0 and `Height` is, the video height will be proportionally scaled.</li>
<li>If neither `Width` nor `Height` is 0, the specified width and height will be used.</li>

Default value: `0`.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * The fill mode, which indicates how a video is resized when the video’s original aspect ratio is different from the target aspect ratio. Valid values:
<li>`stretch`: Stretch the image frame by frame to fill the entire screen. The video image may become "squashed" or "stretched" after transcoding.</li>
<li>`black`: Keep the image's original aspect ratio and fill the blank space with black bars.</li>

Default value: `stretch`.
         * @type {string || null}
         */
        this.FillType = null;

        /**
         * The number of frames between two I-frames. Valid values: 0 and 1-100000.
If this parameter is `0` or left empty, the interval will be determined by the system.
         * @type {number || null}
         */
        this.Gop = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.Fps = 'Fps' in params ? params.Fps : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.FillType = 'FillType' in params ? params.FillType : null;
        this.Gop = 'Gop' in params ? params.Gop : null;

    }
}

/**
 * Control parameters for audio (silence, bass, pop) detection.
 * @class
 */
class VoiceConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Audio (mute, bass, pop) detection switch, optional values: 
<li>ON: on; </li>
<li>OFF: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * The details of a video editing task. This parameter is only valid for tasks initiated by the v2017 video editing API.
 * @class
 */
class ClipTask2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video clipping task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * ID of source file for video clipping task.
         * @type {string || null}
         */
        this.SrcFileId = null;

        /**
         * Information of file output by video clipping.
         * @type {ClipFileInfo2017 || null}
         */
        this.FileInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.SrcFileId = 'SrcFileId' in params ? params.SrcFileId : null;

        if (params.FileInfo) {
            let obj = new ClipFileInfo2017();
            obj.deserialize(params.FileInfo)
            this.FileInfo = obj;
        }

    }
}

/**
 * Transcoding template details
 * @class
 */
class TranscodeTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of transcoding template.
         * @type {string || null}
         */
        this.Definition = null;

        /**
         * Container. Valid values: mp4, flv, hls, mp3, flac, ogg.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Transcoding template name.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Template type. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Whether to remove video data. Valid values:
<li>0: retain;</li>
<li>1: remove.</li>
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data. Valid values:
<li>0: retain;</li>
<li>1: remove.</li>
         * @type {number || null}
         */
        this.RemoveAudio = null;

        /**
         * Video stream configuration parameter. This field is valid only when `RemoveVideo` is 0.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {VideoTemplateInfo || null}
         */
        this.VideoTemplate = null;

        /**
         * Audio stream configuration parameter. This field is valid only when `RemoveAudio` is 0.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AudioTemplateInfo || null}
         */
        this.AudioTemplate = null;

        /**
         * TESHD transcoding parameter.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {TEHDConfig || null}
         */
        this.TEHDConfig = null;

        /**
         * Container filter. Valid values:
<li>Video: video container that can contain both video stream and audio stream;</li>
<li>PureAudio: audio container that can contain only audio stream.</li>
         * @type {string || null}
         */
        this.ContainerType = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * The segment type. This parameter is valid only if `Container` is `hls`
         * @type {string || null}
         */
        this.SegmentType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Container = 'Container' in params ? params.Container : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

        if (params.VideoTemplate) {
            let obj = new VideoTemplateInfo();
            obj.deserialize(params.VideoTemplate)
            this.VideoTemplate = obj;
        }

        if (params.AudioTemplate) {
            let obj = new AudioTemplateInfo();
            obj.deserialize(params.AudioTemplate)
            this.AudioTemplate = obj;
        }

        if (params.TEHDConfig) {
            let obj = new TEHDConfig();
            obj.deserialize(params.TEHDConfig)
            this.TEHDConfig = obj;
        }
        this.ContainerType = 'ContainerType' in params ? params.ContainerType : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.SegmentType = 'SegmentType' in params ? params.SegmentType : null;

    }
}

/**
 * DescribeCDNUsageData request structure.
 * @class
 */
class DescribeCDNUsageDataRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start date in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End date in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). The end date must be after the start date.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * CDN statistics type. Valid values:
<li>Flux: traffic in bytes.</li>
<li>Bandwidth: bandwidth in bps.</li>
         * @type {string || null}
         */
        this.DataType = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Time granularity of usage data in minutes. Valid values:
<li>5: 5-minute granularity. The data at 5-minute granularity in the query period will be returned.</li>
<li>60: 1-hour granularity. The data at 1-hour granularity in the query period will be returned.</li>
<li>1440: 1-day granularity. The data at 1-day granularity in the query period will be returned.</li>
Default value: 1440. Data at 1-day granularity will be returned.
         * @type {number || null}
         */
        this.DataInterval = null;

        /**
         * List of domain names. The usage data of up to 20 domain names can be queried at a time. You can specify multiple domain names and query their combined usage data. The usage data of all domain names will be returned by default.
         * @type {Array.<string> || null}
         */
        this.DomainNames = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.DataType = 'DataType' in params ? params.DataType : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.DataInterval = 'DataInterval' in params ? params.DataInterval : null;
        this.DomainNames = 'DomainNames' in params ? params.DomainNames : null;

    }
}

/**
 * Just In Time transcoding template details.
 * @class
 */
class JustInTimeTranscodeTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Template type.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Video parameter configuration.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {VideoConfigureInfo || null}
         */
        this.VideoConfigure = null;

        /**
         * Watermark parameter configuration. 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {WatermarkConfigureData || null}
         */
        this.WatermarkConfigure = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.VideoConfigure) {
            let obj = new VideoConfigureInfo();
            obj.deserialize(params.VideoConfigure)
            this.VideoConfigure = obj;
        }

        if (params.WatermarkConfigure) {
            let obj = new WatermarkConfigureData();
            obj.deserialize(params.WatermarkConfigure)
            this.WatermarkConfigure = obj;
        }

    }
}

/**
 * Parameters for OCR-based recognition of pornographic content
 * @class
 */
class PornOcrReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable OCR-based recognition of pornographic content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Result for ASR-based recognition of politically sensitive content
 * @class
 */
class AiReviewTaskPoliticalAsrResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for ASR-based recognition of politically sensitive content
         * @type {AiReviewPoliticalAsrTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for ASR-based recognition of politically sensitive content
         * @type {AiReviewPoliticalAsrTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an ASR-based moderation task (politically sensitive content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewPoliticalAsrTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewPoliticalAsrTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * The output of a task to get file attributes.
 * @class
 */
class DescribeFileAttributesTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The MD5 hash of the file.
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * The Sha1 value of the media file.
         * @type {string || null}
         */
        this.Sha1 = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.Sha1 = 'Sha1' in params ? params.Sha1 : null;

    }
}

/**
 * The TRTC recording information.
 * @class
 */
class TrtcRecordInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The TRTC application ID.
         * @type {number || null}
         */
        this.SdkAppId = null;

        /**
         * The TRTC room ID.
         * @type {string || null}
         */
        this.RoomId = null;

        /**
         * The recording task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The IDs of users whose streams are mixed.
         * @type {Array.<string> || null}
         */
        this.UserIds = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SdkAppId = 'SdkAppId' in params ? params.SdkAppId : null;
        this.RoomId = 'RoomId' in params ? params.RoomId : null;
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.UserIds = 'UserIds' in params ? params.UserIds : null;

    }
}

/**
 * DescribeReviewDetails request structure.
 * @class
 */
class DescribeReviewDetailsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start date in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End date in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). The end date must be after the start date.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Parameters for recognition of pornographic content
 * @class
 */
class PornConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameters for recognition of pornographic content in images
         * @type {PornImgReviewTemplateInfoForUpdate || null}
         */
        this.ImgReviewInfo = null;

        /**
         * Parameters for ASR-based recognition of pornographic content
         * @type {PornAsrReviewTemplateInfoForUpdate || null}
         */
        this.AsrReviewInfo = null;

        /**
         * Parameters for OCR-based recognition of pornographic content
         * @type {PornOcrReviewTemplateInfoForUpdate || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ImgReviewInfo) {
            let obj = new PornImgReviewTemplateInfoForUpdate();
            obj.deserialize(params.ImgReviewInfo)
            this.ImgReviewInfo = obj;
        }

        if (params.AsrReviewInfo) {
            let obj = new PornAsrReviewTemplateInfoForUpdate();
            obj.deserialize(params.AsrReviewInfo)
            this.AsrReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new PornOcrReviewTemplateInfoForUpdate();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * Input parameters for ASR-based recognition of banned content
 * @class
 */
class AiReviewProhibitedAsrTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Prohibited information detection template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Video segment containing detected pornographic or terrorism content
 * @class
 */
class MediaContentReviewSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of a suspected segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of a suspected segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Confidence score for the detected pornographic content
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Label for the detected pornographic content
         * @type {string || null}
         */
        this.Label = null;

        /**
         * Processing suggestion for the detected pornographic content. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * URL of a suspected image (which will not be permanently stored
 and will be deleted after `PicUrlExpireTime`).
         * @type {string || null}
         */
        this.Url = null;

        /**
         * This field has been disused. Please use `PicUrlExpireTime`.
         * @type {number || null}
         */
        this.PicUrlExpireTimeStamp = null;

        /**
         * Expiration time of suspected image URL in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.PicUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Label = 'Label' in params ? params.Label : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.PicUrlExpireTimeStamp = 'PicUrlExpireTimeStamp' in params ? params.PicUrlExpireTimeStamp : null;
        this.PicUrlExpireTime = 'PicUrlExpireTime' in params ? params.PicUrlExpireTime : null;

    }
}

/**
 * ParseStreamingManifest response structure.
 * @class
 */
class ParseStreamingManifestResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Segment file list.
         * @type {Array.<string> || null}
         */
        this.MediaSegmentSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaSegmentSet = 'MediaSegmentSet' in params ? params.MediaSegmentSet : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameters for OCR-based recognition of terrorism content
 * @class
 */
class TerrorismOcrReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable OCR-based recognition of terrorism content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * CreateRoundPlay request structure.
 * @class
 */
class CreateRoundPlayRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The playback start time, in [iso 8601 date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * The program list.
<Li>Array length limit: 100.</li>.
         * @type {Array.<RoundPlayListItemInfo> || null}
         */
        this.RoundPlaylist = null;

        /**
         * <B>VOD [subapplication](https://intl.cloud.tencent.com/document/product/266/14574?from_cn_redirect=1) id. starting from december 25, 2023, if you want to access resources in the vod application (whether it is the default application or a newly created application), you must enter the application id in this field.</b>.
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The playlist name (not longer than 64 characters).
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The playlist description, length limit: 256 characters.
         * @type {string || null}
         */
        this.Desc = null;

        /**
         * Play mode, optional values:.
<Li>Loop: loop the playlist;</li>.
<Li>Linear: single play, stop playback after the single play finishes.</li>.
Default value: loop.
         * @type {string || null}
         */
        this.PlayBackMode = null;

        /**
         * Playlist unique identifier id, with a length limit of 64 characters, only allowing uppercase and lowercase english letters (a-za-z), digits (0-9) and hyphens (-). if there is a playlist with the same roundplayid, return the error invalidparametervalue.roundplayalreadyexists. the default value is empty, which means it is system-assigned.
         * @type {string || null}
         */
        this.RoundPlayId = null;

        /**
         * Expiration time, in iso 8601 format. for details, see [iso date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format). the playlist will stop playing after expiration. "9999-12-31t23:59:59+08:00" means it does not expire. default value: 9999-12-31t23:59:59+08:00.
         * @type {string || null}
         */
        this.ExpiredTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;

        if (params.RoundPlaylist) {
            this.RoundPlaylist = new Array();
            for (let z in params.RoundPlaylist) {
                let obj = new RoundPlayListItemInfo();
                obj.deserialize(params.RoundPlaylist[z]);
                this.RoundPlaylist.push(obj);
            }
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Desc = 'Desc' in params ? params.Desc : null;
        this.PlayBackMode = 'PlayBackMode' in params ? params.PlayBackMode : null;
        this.RoundPlayId = 'RoundPlayId' in params ? params.RoundPlayId : null;
        this.ExpiredTime = 'ExpiredTime' in params ? params.ExpiredTime : null;

    }
}

/**
 * Result for intelligent recognition of pornographic content
 * @class
 */
class AiReviewTaskPornResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for intelligent recognition of pornographic content
         * @type {AiReviewPornTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for intelligent recognition of pornographic content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewPornTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a moderation task (pornographic content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewPornTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewPornTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * Output of intelligent object recognition.
 * @class
 */
class AiRecognitionTaskObjectResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intelligent object recognition result set
<font color=red>Note</font>: this list displays up to the first 100 results. You can get all the results from the file whose URL is `SegmentSetFileUrl`.
         * @type {Array.<AiRecognitionTaskObjectResultItem> || null}
         */
        this.ResultSet = null;

        /**
         * URL to the file of the object recognition result set. The file format is JSON, and the data structure is the same as `SegmentSet`. The file will be deleted upon the expiration time `SegmentSetFileUrlExpireTime`, instead of being stored permanently.
         * @type {string || null}
         */
        this.ResultSetFileUrl = null;

        /**
         * Expiration time of the URL to the object recognition result set, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.ResultSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ResultSet) {
            this.ResultSet = new Array();
            for (let z in params.ResultSet) {
                let obj = new AiRecognitionTaskObjectResultItem();
                obj.deserialize(params.ResultSet[z]);
                this.ResultSet.push(obj);
            }
        }
        this.ResultSetFileUrl = 'ResultSetFileUrl' in params ? params.ResultSetFileUrl : null;
        this.ResultSetFileUrlExpireTime = 'ResultSetFileUrlExpireTime' in params ? params.ResultSetFileUrlExpireTime : null;

    }
}

/**
 * DescribeMediaPlayStatDetails request structure.
 * @class
 */
class DescribeMediaPlayStatDetailsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The ID of the media file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The start time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * The end time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Granularity. Valid values:
<li>Hour</li>
<li>Day</li>
The default value depends on the time period queried. If the time period is shorter than one day, the default value is `Hour`; if the time period is one day or longer, the default value is `Day`.
         * @type {string || null}
         */
        this.Interval = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Interval = 'Interval' in params ? params.Interval : null;

    }
}

/**
 * ASR-detected prohibited information in speech
 * @class
 */
class AiReviewProhibitedAsrTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Score of ASR-detected prohibited information in speech between 0 and 100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Suggestion for ASR-detected prohibited information in speech. Valid values:
<li>pass.</li>
<li>review.</li>
<li>block.</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of video segments that contain ASR-detected prohibited information
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewAsrTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain ASR-detected prohibited information. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain ASR-detected prohibited information, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewAsrTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * CreateClass response structure.
 * @class
 */
class CreateClassResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Category ID
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteSuperPlayerConfig response structure.
 * @class
 */
class DeleteSuperPlayerConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameters for video screen blur detection.
 * @class
 */
class CrashScreenConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video screen distortion detection switch, optional values:
<li>ON: turn on;</li>
<li>OFF: turn off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * DescribeSampleSnapshotTemplates request structure.
 * @class
 */
class DescribeSampleSnapshotTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique ID filter of sampled screencapturing templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Paged offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Template type filter. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Control parameter of intelligent cover generating task
 * @class
 */
class CoverConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of intelligent cover generating task. Valid values:
<li>ON: enables intelligent cover generating task;</li>
<li>OFF: disables intelligent cover generating task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Result type of intelligent categorization task
 * @class
 */
class AiAnalysisTaskClassificationResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of intelligent categorization task.
         * @type {AiAnalysisTaskClassificationInput || null}
         */
        this.Input = null;

        /**
         * Output of intelligent categorization task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskClassificationOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an intelligent categorization task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the intelligent classification task started to be executed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the intelligent classification task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiAnalysisTaskClassificationInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiAnalysisTaskClassificationOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Parameters for recognition of politically sensitive content in images
 * @class
 */
class PoliticalImgReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable recognition of politically sensitive content in images. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for recognition of politically sensitive content in images. Results containing the specified labels are returned. If no labels are specified, all results are returned. Valid values:
<li>`violation_photo`: banned images</li>
<li>`politician`: politically sensitive people</li>
<li>`entertainment`: people in the entertainment industry</li>
<li>`sport`: sportspeople</li>
<li>`entrepreneur`: businesspeople</li>
<li>`scholar`: scholars</li>
<li>`celebrity`: celebrities</li>
<li>`military`: people in military</li>
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Parameters for custom OCR-based recognition
 * @class
 */
class UserDefineOcrTextReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable custom OCR-based recognition. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for custom OCR-based recognition. Results containing the specified labels are returned. If no labels are specified, all results are returned. To filter by labels, specify the labels when adding keywords for custom OCR-based recognition.
Up to 10 labels are allowed, each containing no more than 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * DescribeVodDomains response structure.
 * @class
 */
class DescribeVodDomainsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Total number of domain names
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Domain name information list
         * @type {Array.<DomainDetailInfo> || null}
         */
        this.DomainSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.DomainSet) {
            this.DomainSet = new Array();
            for (let z in params.DomainSet) {
                let obj = new DomainDetailInfo();
                obj.deserialize(params.DomainSet[z]);
                this.DomainSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Adaptive bitrate streaming parameter template
 * @class
 */
class AdaptiveStreamTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video parameter information.
         * @type {VideoTemplateInfo || null}
         */
        this.Video = null;

        /**
         * Audio parameter information.
         * @type {AudioTemplateInfo || null}
         */
        this.Audio = null;

        /**
         * Whether to remove audio stream. Valid values:
<li>0: no,</li>
<li>1: yes.</li>
         * @type {number || null}
         */
        this.RemoveAudio = null;

        /**
         * Whether to remove a video stream. Valid values:
<li>0: no</li>
<li>1: yes</li>
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * TESHD transcoding parameters
Note: This field may return `null`, indicating that no valid value was found.
         * @type {TEHDConfig || null}
         */
        this.TEHDConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Video) {
            let obj = new VideoTemplateInfo();
            obj.deserialize(params.Video)
            this.Video = obj;
        }

        if (params.Audio) {
            let obj = new AudioTemplateInfo();
            obj.deserialize(params.Audio)
            this.Audio = obj;
        }
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;

        if (params.TEHDConfig) {
            let obj = new TEHDConfig();
            obj.deserialize(params.TEHDConfig)
            this.TEHDConfig = obj;
        }

    }
}

/**
 * Input parameter type of transcoding task
 * @class
 */
class TranscodeTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video transcoding template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * List of up to 10 image or text watermarks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WatermarkInput> || null}
         */
        this.WatermarkSet = null;

        /**
         * Digital watermark.
         * @type {TraceWatermarkInput || null}
         */
        this.TraceWatermark = null;

        /**
         * Copyright watermark.
         * @type {CopyRightWatermarkInput || null}
         */
        this.CopyRightWatermark = null;

        /**
         * List of blurs. Up to 10 ones can be supported.
         * @type {Array.<MosaicInput> || null}
         */
        this.MosaicSet = null;

        /**
         * List of video opening/closing credits configuration template IDs. You can enter up to 10 IDs.
         * @type {Array.<HeadTailTaskInput> || null}
         */
        this.HeadTailSet = null;

        /**
         * Start time offset of a transcoded video, in seconds.
<li>If this parameter is left empty or set to 0, the transcoded video will start at the same time as the original video.</li>
<li>If this parameter is set to a positive number (n for example), the transcoded video will start at the nth second of the original video.</li>
<li>If this parameter is set to a negative number (-n for example), the transcoded video will start at the nth second before the end of the original video.</li>
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of a transcoded video, in seconds.
<li>If this parameter is left empty or set to 0, the transcoded video will end at the same time as the original video.</li>
<li>If this parameter is set to a positive number (n for example), the transcoded video will end at the nth second of the original video.</li>
<li>If this parameter is set to a negative number (-n for example), the transcoded video will end at the nth second before the end of the original video.</li>
         * @type {number || null}
         */
        this.EndTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

        if (params.WatermarkSet) {
            this.WatermarkSet = new Array();
            for (let z in params.WatermarkSet) {
                let obj = new WatermarkInput();
                obj.deserialize(params.WatermarkSet[z]);
                this.WatermarkSet.push(obj);
            }
        }

        if (params.TraceWatermark) {
            let obj = new TraceWatermarkInput();
            obj.deserialize(params.TraceWatermark)
            this.TraceWatermark = obj;
        }

        if (params.CopyRightWatermark) {
            let obj = new CopyRightWatermarkInput();
            obj.deserialize(params.CopyRightWatermark)
            this.CopyRightWatermark = obj;
        }

        if (params.MosaicSet) {
            this.MosaicSet = new Array();
            for (let z in params.MosaicSet) {
                let obj = new MosaicInput();
                obj.deserialize(params.MosaicSet[z]);
                this.MosaicSet.push(obj);
            }
        }

        if (params.HeadTailSet) {
            this.HeadTailSet = new Array();
            for (let z in params.HeadTailSet) {
                let obj = new HeadTailTaskInput();
                obj.deserialize(params.HeadTailSet[z]);
                this.HeadTailSet.push(obj);
            }
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

    }
}

/**
 * DescribeClientUploadAccelerationUsageData request structure.
 * @class
 */
class DescribeClientUploadAccelerationUsageDataRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The start date for the query in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * The end date for the query in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format). The end date must be later than the start date.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The client upload acceleration type. Valid values:
<li> AccelerationWithHTTP: Acceleration of HTTP transmission</li>
<li> AccelerationWithQUIC: Acceleration of QUIC transmission</li>
If you do not specify this parameter, the usage of both types will be queried.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * StartCDNDomain response structure.
 * @class
 */
class StartCDNDomainResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyAIRecognitionTemplate request structure.
 * @class
 */
class ModifyAIRecognitionTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of video content recognition template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Video content recognition template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description of video content recognition template. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Control parameter of video opening and ending credits recognition.
         * @type {HeadTailConfigureInfoForUpdate || null}
         */
        this.HeadTailConfigure = null;

        /**
         * Control parameter of video splitting recognition.
         * @type {SegmentConfigureInfoForUpdate || null}
         */
        this.SegmentConfigure = null;

        /**
         * Control parameter of face recognition.
         * @type {FaceConfigureInfoForUpdate || null}
         */
        this.FaceConfigure = null;

        /**
         * Control parameter of full text recognition.
         * @type {OcrFullTextConfigureInfoForUpdate || null}
         */
        this.OcrFullTextConfigure = null;

        /**
         * Control parameter of text keyword recognition.
         * @type {OcrWordsConfigureInfoForUpdate || null}
         */
        this.OcrWordsConfigure = null;

        /**
         * Control parameter of full speech recognition.
         * @type {AsrFullTextConfigureInfoForUpdate || null}
         */
        this.AsrFullTextConfigure = null;

        /**
         * Control parameter of speech keyword recognition.
         * @type {AsrWordsConfigureInfoForUpdate || null}
         */
        this.AsrWordsConfigure = null;

        /**
         * Control parameter of voice translation.
         * @type {AsrTranslateConfigureInfoForUpdate || null}
         */
        this.AsrTranslateConfigure = null;

        /**
         * Control parameter of object recognition.
         * @type {ObjectConfigureInfoForUpdate || null}
         */
        this.ObjectConfigure = null;

        /**
         * Frame capturing interval in seconds. Minimum value: 0.5 seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.HeadTailConfigure) {
            let obj = new HeadTailConfigureInfoForUpdate();
            obj.deserialize(params.HeadTailConfigure)
            this.HeadTailConfigure = obj;
        }

        if (params.SegmentConfigure) {
            let obj = new SegmentConfigureInfoForUpdate();
            obj.deserialize(params.SegmentConfigure)
            this.SegmentConfigure = obj;
        }

        if (params.FaceConfigure) {
            let obj = new FaceConfigureInfoForUpdate();
            obj.deserialize(params.FaceConfigure)
            this.FaceConfigure = obj;
        }

        if (params.OcrFullTextConfigure) {
            let obj = new OcrFullTextConfigureInfoForUpdate();
            obj.deserialize(params.OcrFullTextConfigure)
            this.OcrFullTextConfigure = obj;
        }

        if (params.OcrWordsConfigure) {
            let obj = new OcrWordsConfigureInfoForUpdate();
            obj.deserialize(params.OcrWordsConfigure)
            this.OcrWordsConfigure = obj;
        }

        if (params.AsrFullTextConfigure) {
            let obj = new AsrFullTextConfigureInfoForUpdate();
            obj.deserialize(params.AsrFullTextConfigure)
            this.AsrFullTextConfigure = obj;
        }

        if (params.AsrWordsConfigure) {
            let obj = new AsrWordsConfigureInfoForUpdate();
            obj.deserialize(params.AsrWordsConfigure)
            this.AsrWordsConfigure = obj;
        }

        if (params.AsrTranslateConfigure) {
            let obj = new AsrTranslateConfigureInfoForUpdate();
            obj.deserialize(params.AsrTranslateConfigure)
            this.AsrTranslateConfigure = obj;
        }

        if (params.ObjectConfigure) {
            let obj = new ObjectConfigureInfoForUpdate();
            obj.deserialize(params.ObjectConfigure)
            this.ObjectConfigure = obj;
        }
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;

    }
}

/**
 * Control parameters for QR code detection in video.
 * @class
 */
class QRCodeConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * QR code inspection switch, optional values:
<li>ON: enabled;</li>
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * DescribeStorageRegions request structure.
 * @class
 */
class DescribeStorageRegionsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Access authentication configuration for OSS origin
 * @class
 */
class OssPrivateAccess extends  AbstractModel {
    constructor(){
        super();

        /**
         * Alibaba Cloud OSS return-to-origin authentication configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Access ID.
         * @type {string || null}
         */
        this.AccessKey = null;

        /**
         * Key.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * Region.
         * @type {string || null}
         */
        this.Region = null;

        /**
         * BucketName.
         * @type {string || null}
         */
        this.Bucket = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.AccessKey = 'AccessKey' in params ? params.AccessKey : null;
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.Region = 'Region' in params ? params.Region : null;
        this.Bucket = 'Bucket' in params ? params.Bucket : null;

    }
}

/**
 * Release on WeChat task information
 * @class
 */
class WechatPublishTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task status. Valid values:
WAITING: waiting;
PROCESSING: processing;
FINISH: completed.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code
<li>0: success;</li>
<li>Other values: failure.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * ID of published video file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Release on WeChat template ID.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * ID of the transcoding template corresponding to the published video. 0 represents the source video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.SourceDefinition = null;

        /**
         * Release on WeChat status. Valid values:
<li>FAIL: failure;</li>
<li>SUCCESS: success;</li>
<li>AUDITNOTPASS: rejected</li>
<li>NOTTRIGGERED: release on WeChat not initiated yet.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WechatStatus = null;

        /**
         * WeChat `Vid`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WechatVid = null;

        /**
         * WeChat address.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.WechatUrl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SourceDefinition = 'SourceDefinition' in params ? params.SourceDefinition : null;
        this.WechatStatus = 'WechatStatus' in params ? params.WechatStatus : null;
        this.WechatVid = 'WechatVid' in params ? params.WechatVid : null;
        this.WechatUrl = 'WechatUrl' in params ? params.WechatUrl : null;

    }
}

/**
 * DescribeCDNStatDetails request structure.
 * @class
 */
class DescribeCDNStatDetailsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Query indicators, the values u200bu200bare:
<li>Traffic: traffic, unit is Byte. </li>
<li>Bandwidth: Bandwidth, unit is Bps. </li>
<li>Requests: Number of requests. </li>
<li>QUICRequests: Number of QUIC requests. </li>
<li>IpVisit: Number of IP visits. </li>
         * @type {string || null}
         */
        this.Metric = null;

        /**
         * Start time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * List of domain names. The usage data of up to 20 domain names can be queried at a time. The usage data of all domain names is returned by default.
         * @type {Array.<string> || null}
         */
        this.DomainNames = null;

        /**
         * Service region. Valid values:
<li>Chinese Mainland</li>
<li>Asia Pacific Region 1: Hong Kong (China), Macao (China), Singapore, Vietnam, and Thailand</li>
<li>Asia Pacific Region 2: Taiwan (China), Japan, Malaysia, Indonesia, and South Korea</li>
<li>Asia Pacific Region 3: Philippines, India, Australia, and other Asia Pacific countries and regions</li>
<li>Middle East</li>
<li>Europe</li>
<li>North America</li>
<li>South America</li>
<li>Africa</li>
Default value: Chinese Mainland
         * @type {string || null}
         */
        this.Area = null;

        /**
         * District where users are located. When `Area` is `Chinese Mainland`, valid values for `Districts` are as follows. Otherwise, `Districts` can be ignored.
<li>Beijing</li>
<li>Inner Mongolia</li>
<li>Shanxi</li>
<li>Hebei</li>
<li>Tianjin</li>
<li>Ningxia</li>
<li>Shaanxi</li>
<li>Gansu</li>
<li>Qinghai</li>
<li>Xinjiang</li>
<li>Heilongjiang</li>
<li>Jilin</li>
<li>Liaoning</li>
<li>Fujian</li>
<li>Jiangsu</li>
<li>Anhui</li>
<li>Shandong</li>
<li>Shanghai</li>
<li>Zhejiang</li>
<li>Henan</li>
<li>Hubei</li>
<li>Jiangxi</li>
<li>Hunan</li>
<li>Guizhou</li>
<li>Yunnan</li>
<li>Chongqing</li>
<li>Sichuan</li>
<li>Tibet</li>
<li>Guangdong</li>
<li>Guangxi</li>
<li>Hainan</li>
<li>Hong Kong, Macao and Taiwan</li>
<li>Outside Chinese Mainland</li>
<li>Other</li>
         * @type {Array.<string> || null}
         */
        this.Districts = null;

        /**
         * ISP of users. When `Area` is `Chinese Mainland`, valid values for `Isps` are as follows. Otherwise, `Isps` can be ignored.
<li>China Telecom</li>
<li>China Unicom</li>
<li>CERNET</li>
<li>Great Wall Broadband Network</li>
<li>China Mobile</li>
<li>China Mobile Tietong</li>
<li>ISPs outside Chinese Mainland</li>
<li>Other ISPs</li>
         * @type {Array.<string> || null}
         */
        this.Isps = null;

        /**
         * Time granularity of every piece of data in minutes. Valid values:
<li>5: 5-minute granularity. The data at 5-minute granularity in the query period will be returned.</li>
<li>1440: 1-day granularity. The data at 1-day granularity in the query period will be returned. If the query period is larger than 24 hours, only data at 1-day granularity can be queried.</li>
If the difference between `StartTime` and `EndTime` is larger than 24 hours, the default value of `DataInterval` is 1440.
         * @type {number || null}
         */
        this.DataInterval = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Metric = 'Metric' in params ? params.Metric : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.DomainNames = 'DomainNames' in params ? params.DomainNames : null;
        this.Area = 'Area' in params ? params.Area : null;
        this.Districts = 'Districts' in params ? params.Districts : null;
        this.Isps = 'Isps' in params ? params.Isps : null;
        this.DataInterval = 'DataInterval' in params ? params.DataInterval : null;

    }
}

/**
 * Input parameters for a video opening/closing credits generation task
 * @class
 */
class HeadTailTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video opening/closing credits configuration template ID
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * DescribeImageReviewUsageData response structure.
 * @class
 */
class DescribeImageReviewUsageDataResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The image recognition usage statistics (the number of times the image recognition feature is used in the time period specified).
         * @type {Array.<ImageReviewUsageDataItem> || null}
         */
        this.ImageReviewUsageDataSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ImageReviewUsageDataSet) {
            this.ImageReviewUsageDataSet = new Array();
            for (let z in params.ImageReviewUsageDataSet) {
                let obj = new ImageReviewUsageDataItem();
                obj.deserialize(params.ImageReviewUsageDataSet[z]);
                this.ImageReviewUsageDataSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteRoundPlay response structure.
 * @class
 */
class DeleteRoundPlayResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Statistics
 * @class
 */
class StatDataItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time of data time range in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). For example, if the time granularity is 1-day, `2018-12-01T00:00:00+08:00` represents the time range between December 1, 2018 (inclusive) and December 2, 2018 (not inclusive).
<li>For data at hourly level, `2019-08-22T00:00:00+08:00` indicates the statistics between 00:00 and 01:00 AM on August 22, 2019.</li>
<li>For data at daily level, `2019-08-22T00:00:00+08:00` indicates statistics on August 22, 2019.</li>
         * @type {string || null}
         */
        this.Time = null;

        /**
         * Data size. 
<li>The data of the storage space, the unit is bytes. </li>
<li>Transcoding duration data, unit is seconds. </li>
<li>Traffic data, unit is bytes. </li>
<li>Bandwidth data, unit is bits per second. </li>
<li>Live broadcast clip data, the unit is seconds. </li>
<li>Carousel data, unit is seconds. </li>
<li>The number of sub-applications, the unit is one. </li>
         * @type {number || null}
         */
        this.Value = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Time = 'Time' in params ? params.Time : null;
        this.Value = 'Value' in params ? params.Value : null;

    }
}

/**
 * CreateStorageRegion response structure.
 * @class
 */
class CreateStorageRegionResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Acceleration region information of the domain name
 * @class
 */
class AccelerateAreaInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Acceleration region. Valid values:
<li>Chinese Mainland</li>
<li>Outside Chinese Mainland</li>
         * @type {string || null}
         */
        this.Area = null;

        /**
         * Reason why acceleration is disabled by Tencent Cloud. Valid values:
<li>ForLegalReasons: legal reasons</li>
<li>ForOverdueBills: overdue payment</li>
         * @type {string || null}
         */
        this.TencentDisableReason = null;

        /**
         * CNAME of the acceleration domain name
         * @type {string || null}
         */
        this.TencentEdgeDomain = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Area = 'Area' in params ? params.Area : null;
        this.TencentDisableReason = 'TencentDisableReason' in params ? params.TencentDisableReason : null;
        this.TencentEdgeDomain = 'TencentEdgeDomain' in params ? params.TencentEdgeDomain : null;

    }
}

/**
 * Source file information.
 * @class
 */
class MediaSourceData extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media files source category: <li>Record: From recording. Such as live streaming recording, live time shift recording, etc.</li> <li>Upload: From upload. Such as pull upload, upload from server, client UGC upload, etc.</li> <li>VideoProcessing: From video processing. Such as video splicing, video editing, etc.</li> <li>TrtcRecord: From TRTC accompanying recording.</li> <li>WebPageRecord: From panoramic recording.</li> <li>Unknown: Unknown source.</li>
         * @type {string || null}
         */
        this.SourceType = null;

        /**
         * User-transparent transmission field when creating a file.
         * @type {string || null}
         */
        this.SourceContext = null;

        /**
         * Live streaming recording information, valid when the file source is Record.
         * @type {LiveRecordInfo || null}
         */
        this.LiveRecordInfo = null;

        /**
         * TRTC recording information, valid when the file source is TrtcRecord.
         * @type {TrtcRecordInfo || null}
         */
        this.TrtcRecordInfo = null;

        /**
         * Panoramic recording information, valid when the file source is WebPageRecord.
         * @type {WebPageRecordInfo || null}
         */
        this.WebPageRecordInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SourceType = 'SourceType' in params ? params.SourceType : null;
        this.SourceContext = 'SourceContext' in params ? params.SourceContext : null;

        if (params.LiveRecordInfo) {
            let obj = new LiveRecordInfo();
            obj.deserialize(params.LiveRecordInfo)
            this.LiveRecordInfo = obj;
        }

        if (params.TrtcRecordInfo) {
            let obj = new TrtcRecordInfo();
            obj.deserialize(params.TrtcRecordInfo)
            this.TrtcRecordInfo = obj;
        }

        if (params.WebPageRecordInfo) {
            let obj = new WebPageRecordInfo();
            obj.deserialize(params.WebPageRecordInfo)
            this.WebPageRecordInfo = obj;
        }

    }
}

/**
 * Control parameter of prohibited information detection in speech task
 * @class
 */
class ProhibitedAsrReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of prohibited information detection in speech task. Valid values:
<li>ON: enables prohibited information detection in speech task;</li>
<li>OFF: disables prohibited information detection in speech task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * HandleCurrentPlaylist response structure.
 * @class
 */
class HandleCurrentPlaylistResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of successfully operated programs.
         * @type {Array.<RoundPlayListItemInfo> || null}
         */
        this.RoundPlaylist = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.RoundPlaylist) {
            this.RoundPlaylist = new Array();
            for (let z in params.RoundPlaylist) {
                let obj = new RoundPlayListItemInfo();
                obj.deserialize(params.RoundPlaylist[z]);
                this.RoundPlaylist.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * PushUrlCache request structure.
 * @class
 */
class PushUrlCacheRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of prefetched URLs. Up to 20 ones can be specified at a time.
         * @type {Array.<string> || null}
         */
        this.Urls = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Urls = 'Urls' in params ? params.Urls : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * CreateAIAnalysisTemplate response structure.
 * @class
 */
class CreateAIAnalysisTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of video content analysis template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameter of video opening and ending credits recognition task.
 * @class
 */
class HeadTailConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of video opening and ending credits recognition task. Valid values:
<li>ON: enables video opening and ending credits recognition task;</li>
<li>OFF: disables video opening and ending credits recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Event notification content, where TranscodeCompleteEvent, ConcatCompleteEvent, ClipCompleteEvent, CreateImageSpriteCompleteEvent, and SnapshotByTimeOffsetCompleteEvent are event notifications for tasks that are initiated by v2017-compatible APIs.
 * @class
 */
class EventContent extends  AbstractModel {
    constructor(){
        super();

        /**
         * Event handler. The caller must call `ConfirmEvents` to confirm that the message has been received, and the confirmation is valid for 30 seconds. After the confirmation expires, the event can be obtained again.
         * @type {string || null}
         */
        this.EventHandle = null;

        /**
         * <b>Supported event types:</b><li>`NewFileUpload`: Video uploaded.</li><li>`ProcedureStateChanged`: Task flow status changed.</li><li>`FileDeleted`: Video deleted.</li><li>`RestoreMediaComplete`: Video retrieved.</li><li>`PullComplete`: Finished video pulling.</li><li>`EditMediaComplete`: Finished video editing.</li><li>`SplitMediaComplete`: Finished video splitting.</li><li>`ComposeMediaComplete`: Finished producing the media file.</li><li>`WechatMiniProgramPublishComplete`: Finished publishing on Weixin Mini Program.</li><li>`RemoveWatermark`: Watermark removed.</li><li>`RebuildMediaComplete`: Finished audio/video remastering.</li><li>`ReviewAudioVideoComplete`: Finished moderation.</li><li>`ExtractTraceWatermarkComplete`: Finished digital watermark extraction.</li><li>`DescribeFileAttributesComplete`: Finished getting file attributes.</li><li>`QualityEnhanceComplete`: FinishedQualityEnhance.</li><li>`PersistenceComplete`: Clipping persistented. </li><li>`ComplexAdaptiveDynamicStreamingComplete `: Finished complex adaptive bitrate streaming processing. </li><b>v2017 task types:</b><li>`TranscodeComplete`: Finished video transcoding.</li><li>`ConcatComplete`: Finished video splicing.</li><li>`ClipComplete`: Finished video clipping.</li><li>`CreateImageSpriteComplete`: Finished image sprite generation.</li><li>`CreateSnapshotByTimeOffsetComplete`: Finished time point screencapturing.</li>
         * @type {string || null}
         */
        this.EventType = null;

        /**
         * Media uploaded event, valid when the event type is NewFileUpload.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {FileUploadTask || null}
         */
        this.FileUploadEvent = null;

        /**
         * Task flow status changed event, valid when the event type is ProcedureStateChanged.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ProcedureTask || null}
         */
        this.ProcedureStateChangeEvent = null;

        /**
         * File deleted event, valid when the event type is FileDeleted.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {FileDeleteTask || null}
         */
        this.FileDeleteEvent = null;

        /**
         * PullUpload completion event, valid when the event type is PullComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {PullUploadTask || null}
         */
        this.PullCompleteEvent = null;

        /**
         * EditMedia completion event, valid when the event type is EditMediaComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {EditMediaTask || null}
         */
        this.EditMediaCompleteEvent = null;

        /**
         * SplitMedia completion event, valid when the event type is SplitMediaComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {SplitMediaTask || null}
         */
        this.SplitMediaCompleteEvent = null;

        /**
         * ComposeMedia completion event, valid when the event type is ComposeMediaComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ComposeMediaTask || null}
         */
        this.ComposeMediaCompleteEvent = null;

        /**
         * Expired.
         * @type {ClipTask2017 || null}
         */
        this.ClipCompleteEvent = null;

        /**
         * Expired.
         * @type {TranscodeTask2017 || null}
         */
        this.TranscodeCompleteEvent = null;

        /**
         * Expired.
         * @type {CreateImageSpriteTask2017 || null}
         */
        this.CreateImageSpriteCompleteEvent = null;

        /**
         * Expired.
         * @type {ConcatTask2017 || null}
         */
        this.ConcatCompleteEvent = null;

        /**
         * Expired.
         * @type {SnapshotByTimeOffsetTask2017 || null}
         */
        this.SnapshotByTimeOffsetCompleteEvent = null;

        /**
         * Expired.
         * @type {WechatPublishTask || null}
         */
        this.WechatPublishCompleteEvent = null;

        /**
         * WechatMiniProgramPublish completion event, valid when the event type is WechatMiniProgramPublishComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {WechatMiniProgramPublishTask || null}
         */
        this.WechatMiniProgramPublishCompleteEvent = null;

        /**
         * RemoveWatermark completion event, valid when the event type is RemoveWatermark.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {RemoveWatermarkTask || null}
         */
        this.RemoveWatermarkCompleteEvent = null;

        /**
         * RestoreMedia completion event, valid when the event type is RestoreMediaComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {RestoreMediaTask || null}
         */
        this.RestoreMediaCompleteEvent = null;

        /**
         * RebuildMedia completion event, valid when the event type is RebuildMediaComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {RebuildMediaTask || null}
         */
        this.RebuildMediaCompleteEvent = null;

        /**
         * Expired.
         * @type {ExtractTraceWatermarkTask || null}
         */
        this.ExtractTraceWatermarkCompleteEvent = null;

        /**
         * Expired.
         * @type {ExtractCopyRightWatermarkTask || null}
         */
        this.ExtractCopyRightWatermarkCompleteEvent = null;

        /**
         * ReviewAudioVideo completion event, valid when the event type is ReviewAudioVideoComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ReviewAudioVideoTask || null}
         */
        this.ReviewAudioVideoCompleteEvent = null;

        /**
         * Expired.
         * @type {ReduceMediaBitrateTask || null}
         */
        this.ReduceMediaBitrateCompleteEvent = null;

        /**
         * DescribeFileAttributes completion event, valid when the event type is DescribeFileAttributesComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {DescribeFileAttributesTask || null}
         */
        this.DescribeFileAttributesCompleteEvent = null;

        /**
         * QualityInspect completion event, valid when the event type is QualityInspectComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {QualityInspectTask || null}
         */
        this.QualityInspectCompleteEvent = null;

        /**
         * Remaster completion event, valid when the event type is QualityEnhanceComplete.
Pay attention to: this field may return null, indicating that no valid value can be obtained
         * @type {QualityEnhanceTask || null}
         */
        this.QualityEnhanceCompleteEvent = null;

        /**
         * MediaCastStatus changed event, valid when the event type is MediaCastStatusChanged.
Pay attention to: this field may return null, indicating that no valid value can be obtained.
         * @type {MediaCastEvent || null}
         */
        this.MediaCastStatusChangedEvent = null;

        /**
         * Persistence completion event, valid when the event type is PersistenceComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {PersistenceCompleteTask || null}
         */
        this.PersistenceCompleteEvent = null;

        /**
         * Complex adaptive bitrate streaming processing completion event, valid when the event type is ComplexAdaptiveDynamicStreamingComplete.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ComplexAdaptiveDynamicStreamingTask || null}
         */
        this.ComplexAdaptiveDynamicStreamingCompleteEvent = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.EventHandle = 'EventHandle' in params ? params.EventHandle : null;
        this.EventType = 'EventType' in params ? params.EventType : null;

        if (params.FileUploadEvent) {
            let obj = new FileUploadTask();
            obj.deserialize(params.FileUploadEvent)
            this.FileUploadEvent = obj;
        }

        if (params.ProcedureStateChangeEvent) {
            let obj = new ProcedureTask();
            obj.deserialize(params.ProcedureStateChangeEvent)
            this.ProcedureStateChangeEvent = obj;
        }

        if (params.FileDeleteEvent) {
            let obj = new FileDeleteTask();
            obj.deserialize(params.FileDeleteEvent)
            this.FileDeleteEvent = obj;
        }

        if (params.PullCompleteEvent) {
            let obj = new PullUploadTask();
            obj.deserialize(params.PullCompleteEvent)
            this.PullCompleteEvent = obj;
        }

        if (params.EditMediaCompleteEvent) {
            let obj = new EditMediaTask();
            obj.deserialize(params.EditMediaCompleteEvent)
            this.EditMediaCompleteEvent = obj;
        }

        if (params.SplitMediaCompleteEvent) {
            let obj = new SplitMediaTask();
            obj.deserialize(params.SplitMediaCompleteEvent)
            this.SplitMediaCompleteEvent = obj;
        }

        if (params.ComposeMediaCompleteEvent) {
            let obj = new ComposeMediaTask();
            obj.deserialize(params.ComposeMediaCompleteEvent)
            this.ComposeMediaCompleteEvent = obj;
        }

        if (params.ClipCompleteEvent) {
            let obj = new ClipTask2017();
            obj.deserialize(params.ClipCompleteEvent)
            this.ClipCompleteEvent = obj;
        }

        if (params.TranscodeCompleteEvent) {
            let obj = new TranscodeTask2017();
            obj.deserialize(params.TranscodeCompleteEvent)
            this.TranscodeCompleteEvent = obj;
        }

        if (params.CreateImageSpriteCompleteEvent) {
            let obj = new CreateImageSpriteTask2017();
            obj.deserialize(params.CreateImageSpriteCompleteEvent)
            this.CreateImageSpriteCompleteEvent = obj;
        }

        if (params.ConcatCompleteEvent) {
            let obj = new ConcatTask2017();
            obj.deserialize(params.ConcatCompleteEvent)
            this.ConcatCompleteEvent = obj;
        }

        if (params.SnapshotByTimeOffsetCompleteEvent) {
            let obj = new SnapshotByTimeOffsetTask2017();
            obj.deserialize(params.SnapshotByTimeOffsetCompleteEvent)
            this.SnapshotByTimeOffsetCompleteEvent = obj;
        }

        if (params.WechatPublishCompleteEvent) {
            let obj = new WechatPublishTask();
            obj.deserialize(params.WechatPublishCompleteEvent)
            this.WechatPublishCompleteEvent = obj;
        }

        if (params.WechatMiniProgramPublishCompleteEvent) {
            let obj = new WechatMiniProgramPublishTask();
            obj.deserialize(params.WechatMiniProgramPublishCompleteEvent)
            this.WechatMiniProgramPublishCompleteEvent = obj;
        }

        if (params.RemoveWatermarkCompleteEvent) {
            let obj = new RemoveWatermarkTask();
            obj.deserialize(params.RemoveWatermarkCompleteEvent)
            this.RemoveWatermarkCompleteEvent = obj;
        }

        if (params.RestoreMediaCompleteEvent) {
            let obj = new RestoreMediaTask();
            obj.deserialize(params.RestoreMediaCompleteEvent)
            this.RestoreMediaCompleteEvent = obj;
        }

        if (params.RebuildMediaCompleteEvent) {
            let obj = new RebuildMediaTask();
            obj.deserialize(params.RebuildMediaCompleteEvent)
            this.RebuildMediaCompleteEvent = obj;
        }

        if (params.ExtractTraceWatermarkCompleteEvent) {
            let obj = new ExtractTraceWatermarkTask();
            obj.deserialize(params.ExtractTraceWatermarkCompleteEvent)
            this.ExtractTraceWatermarkCompleteEvent = obj;
        }

        if (params.ExtractCopyRightWatermarkCompleteEvent) {
            let obj = new ExtractCopyRightWatermarkTask();
            obj.deserialize(params.ExtractCopyRightWatermarkCompleteEvent)
            this.ExtractCopyRightWatermarkCompleteEvent = obj;
        }

        if (params.ReviewAudioVideoCompleteEvent) {
            let obj = new ReviewAudioVideoTask();
            obj.deserialize(params.ReviewAudioVideoCompleteEvent)
            this.ReviewAudioVideoCompleteEvent = obj;
        }

        if (params.ReduceMediaBitrateCompleteEvent) {
            let obj = new ReduceMediaBitrateTask();
            obj.deserialize(params.ReduceMediaBitrateCompleteEvent)
            this.ReduceMediaBitrateCompleteEvent = obj;
        }

        if (params.DescribeFileAttributesCompleteEvent) {
            let obj = new DescribeFileAttributesTask();
            obj.deserialize(params.DescribeFileAttributesCompleteEvent)
            this.DescribeFileAttributesCompleteEvent = obj;
        }

        if (params.QualityInspectCompleteEvent) {
            let obj = new QualityInspectTask();
            obj.deserialize(params.QualityInspectCompleteEvent)
            this.QualityInspectCompleteEvent = obj;
        }

        if (params.QualityEnhanceCompleteEvent) {
            let obj = new QualityEnhanceTask();
            obj.deserialize(params.QualityEnhanceCompleteEvent)
            this.QualityEnhanceCompleteEvent = obj;
        }

        if (params.MediaCastStatusChangedEvent) {
            let obj = new MediaCastEvent();
            obj.deserialize(params.MediaCastStatusChangedEvent)
            this.MediaCastStatusChangedEvent = obj;
        }

        if (params.PersistenceCompleteEvent) {
            let obj = new PersistenceCompleteTask();
            obj.deserialize(params.PersistenceCompleteEvent)
            this.PersistenceCompleteEvent = obj;
        }

        if (params.ComplexAdaptiveDynamicStreamingCompleteEvent) {
            let obj = new ComplexAdaptiveDynamicStreamingTask();
            obj.deserialize(params.ComplexAdaptiveDynamicStreamingCompleteEvent)
            this.ComplexAdaptiveDynamicStreamingCompleteEvent = obj;
        }

    }
}

/**
 * Control parameter of an intelligent highlight generating task
 * @class
 */
class HighlightsConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of an intelligent highlight generating task. Valid values:
<li>ON: enable an intelligent highlight generating task;</li>
<li>OFF: disable an intelligent highlight generating task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * 
 * @class
 */
class IPFilterPolicy extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {string || null}
         */
        this.Status = null;

        /**
         * 
         * @type {string || null}
         */
        this.FilterType = null;

        /**
         * 
         * @type {Array.<string> || null}
         */
        this.IPList = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.FilterType = 'FilterType' in params ? params.FilterType : null;
        this.IPList = 'IPList' in params ? params.IPList : null;

    }
}

/**
 * Parameters for custom recognition
 * @class
 */
class UserDefineConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameters for custom facial recognition
         * @type {UserDefineFaceReviewTemplateInfoForUpdate || null}
         */
        this.FaceReviewInfo = null;

        /**
         * Parameters for custom ASR-based recognition
         * @type {UserDefineAsrTextReviewTemplateInfoForUpdate || null}
         */
        this.AsrReviewInfo = null;

        /**
         * Parameters for custom OCR-based recognition
         * @type {UserDefineOcrTextReviewTemplateInfoForUpdate || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.FaceReviewInfo) {
            let obj = new UserDefineFaceReviewTemplateInfoForUpdate();
            obj.deserialize(params.FaceReviewInfo)
            this.FaceReviewInfo = obj;
        }

        if (params.AsrReviewInfo) {
            let obj = new UserDefineAsrTextReviewTemplateInfoForUpdate();
            obj.deserialize(params.AsrReviewInfo)
            this.AsrReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new UserDefineOcrTextReviewTemplateInfoForUpdate();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * The input of digital watermark extraction.
 * @class
 */
class ExtractTraceWatermarkTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The URL of the media on which digital watermark extraction is to be performed.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * Media file ID. The original media file ID corresponding to the URL.
         * @type {string || null}
         */
        this.FileId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.FileId = 'FileId' in params ? params.FileId : null;

    }
}

/**
 * Output for ASR-based recognition of politically sensitive content
 * @class
 */
class AiReviewPoliticalAsrTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence score for the ASR-detected politically sensitive content. Value range: 0-100
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the ASR-detected politically sensitive content. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of video segments that contain ASR-detected politically sensitive content
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewAsrTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain ASR-detected politically sensitive content. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain ASR-detected politically sensitive content, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewAsrTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * Information of output audio stream
 * @class
 */
class OutputAudioStream extends  AbstractModel {
    constructor(){
        super();

        /**
         * Audio stream encoder. Valid values:
<li>libfdk_aac: suitable for mp4 files.</li>
Default value: libfdk_aac.
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * Audio stream sample rate. Valid values:
<li>16,000</li>
<li>32,000</li>
<li>44,100</li>
<li>48,000</li>
In Hz.
Default value: 16,000.
         * @type {number || null}
         */
        this.SampleRate = null;

        /**
         * Number of sound channels. Valid values:
<li>1: mono.</li>
<li>2: dual</li>
Default value: 2.
         * @type {number || null}
         */
        this.AudioChannel = null;

        /**
         * The bit rate of the audio stream, value range: 0 and [26, 256], unit: kbps. 
When the value is 0, the audio bitrate will be automatically set.
         * @type {number || null}
         */
        this.Bitrate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.SampleRate = 'SampleRate' in params ? params.SampleRate : null;
        this.AudioChannel = 'AudioChannel' in params ? params.AudioChannel : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;

    }
}

/**
 * ModifyClass request structure.
 * @class
 */
class ModifyClassRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Category ID
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Category name, which can contain 1-64 characters.
         * @type {string || null}
         */
        this.ClassName = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ClassName = 'ClassName' in params ? params.ClassName : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Control parameters for QR code detection in video.
 * @class
 */
class QRCodeConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * QR code inspection switch, optional values:
<li>ON: enabled;</li>
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Statistics of task with specified specification.
 * @class
 */
class SpecificationDataItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task specification.
         * @type {string || null}
         */
        this.Specification = null;

        /**
         * Statistics.
         * @type {Array.<TaskStatDataItem> || null}
         */
        this.Data = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Specification = 'Specification' in params ? params.Specification : null;

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new TaskStatDataItem();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }

    }
}

/**
 * TESHD parameter configuration.
 * @class
 */
class TEHDConfigForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * TESHD transcoding type. Valid values: <li>TEHD-100</li> <li>OFF (default)</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Maximum bitrate. If this parameter is left blank, no modification will be made.
         * @type {number || null}
         */
        this.MaxVideoBitrate = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.MaxVideoBitrate = 'MaxVideoBitrate' in params ? params.MaxVideoBitrate : null;

    }
}

/**
 * Output of media file composing task.
 * @class
 */
class ComposeMediaTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * File type, such as mp4 and mp3.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Media file playback address.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * Filename of up to 64 characters.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * Category ID, which is used to categorize the media for management. A category can be created and its ID can be obtained by using the [category creating](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API.
<li>Default value: 0, which means "Other".</li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Expiration time of output media file in ISO 8601 format, after which the file will be deleted. Files will never expire by default. For more information, please see [Notes on ISO Date Format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.ExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

    }
}

/**
 * DescribeQualityInspectTemplates request structure.
 * @class
 */
class DescribeQualityInspectTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Media quality inspect template list. Length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Template type filter conditions, optional values: <li>Preset: system preset template;</li> <li>Custom: user-defined template. </li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Paging offset, default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Back record count, default value: 10, maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * DescribeMediaInfos request structure.
 * @class
 */
class DescribeMediaInfosRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * List of media file IDs. N starts from 0 and can be up to 19.
         * @type {Array.<string> || null}
         */
        this.FileIds = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The types of information to return. You can specify multiple information types. `N` starts from 0. If you do not specify this parameter, all information will be returned. The supported information types are as follows:
<li>`basicInfo` (basic information)</li>
<li>`metaData` (video metadata)</li>
<li>`transcodeInfo` (transcoding information)</li>
<li>`animatedGraphicsInfo` (animated image information)</li>
<li>`imageSpriteInfo` (image sprite information)</li>
<li>`snapshotByTimeOffsetInfo` (time point screenshot information)</li>
<li>`sampleSnapshotInfo` (sampled screenshot information)</li>
<li>`keyFrameDescInfo` (timestamp information)</li>
<li>`adaptiveDynamicStreamingInfo` (adaptive bitrate information)</li>
<li>`miniProgramReviewInfo` (WeChat Mini Program moderation information)</li>
<li>`subtitleInfo` (subtitle information)</li>
<li>`reviewInfo` (moderation information)</li>
         * @type {Array.<string> || null}
         */
        this.Filters = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileIds = 'FileIds' in params ? params.FileIds : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Filters = 'Filters' in params ? params.Filters : null;

    }
}

/**
 * ModifyPersonSample request structure.
 * @class
 */
class ModifyPersonSampleRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of a sample.
         * @type {string || null}
         */
        this.PersonId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name. Length limit: 128 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description. Length limit: 1,024 characters.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Sample usage. Valid values:
1. Recognition: used for content recognition; equivalent to `Recognition.Face`
2. Review: used for inappropriate information recognition; equivalent to `Review.Face`
3. All: used for content recognition and inappropriate information recognition; equivalent to 1+2
         * @type {Array.<string> || null}
         */
        this.Usages = null;

        /**
         * Information of operations on facial features.
         * @type {AiSampleFaceOperation || null}
         */
        this.FaceOperationInfo = null;

        /**
         * Tag operation information.
         * @type {AiSampleTagOperation || null}
         */
        this.TagOperationInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.PersonId = 'PersonId' in params ? params.PersonId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.Usages = 'Usages' in params ? params.Usages : null;

        if (params.FaceOperationInfo) {
            let obj = new AiSampleFaceOperation();
            obj.deserialize(params.FaceOperationInfo)
            this.FaceOperationInfo = obj;
        }

        if (params.TagOperationInfo) {
            let obj = new AiSampleTagOperation();
            obj.deserialize(params.TagOperationInfo)
            this.TagOperationInfo = obj;
        }

    }
}

/**
 * Control parameter of full speech recognition task.
 * @class
 */
class AsrFullTextConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of full speech recognition task. Valid values:
<li>ON: enables intelligent full speech recognition task;</li>
<li>OFF: disables intelligent full speech recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The formats of the subtitle files generated. If this parameter is not passed or an empty string is passed in, no subtitles files will be generated. Valid values:
<li>vtt</li>
<li>srt</li>
         * @type {Array.<string> || null}
         */
        this.SubtitleFormats = null;

        /**
         * The format of the subtitle file generated. If this parameter is not passed or an empty string is passed in, no subtitles files will be generated. Valid values:
<li>vtt</li>
<li>srt</li>
<font color='red'>Note: This parameter has been deprecated. Please use `SubtitleFormats` instead.</font>
         * @type {string || null}
         */
        this.SubtitleFormat = null;

        /**
         * Media source language value range: <li>zh: Mandarin </li> <li>en: English</li> <li>ja: Japanese </li> <li>zh-ca: Cantonese</li><font color=red>Note: </font> If it fills in an empty string or leaves this parameter blank, it will be automatically recognized (it is recommended to fill in the language corresponding to the media to improve the recognition accuracy).
         * @type {string || null}
         */
        this.SrcLanguage = null;

        /**
         * Specify subtitle name, length limit: 64 characters. This value will be displayed by the player. If not provided, VOD will automatically generate it.
<font color=red>Note:</font> This field is valid only when SubtitleFormats includes vtt.

         * @type {string || null}
         */
        this.SubtitleName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.SubtitleFormats = 'SubtitleFormats' in params ? params.SubtitleFormats : null;
        this.SubtitleFormat = 'SubtitleFormat' in params ? params.SubtitleFormat : null;
        this.SrcLanguage = 'SrcLanguage' in params ? params.SrcLanguage : null;
        this.SubtitleName = 'SubtitleName' in params ? params.SubtitleName : null;

    }
}

/**
 * The moderation result for terrorist content in an image.
 * @class
 */
class TerrorismImageResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The confidence score for the moderation result. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * The suggestion for handling the detected terrorist content. Valid values:
<li>pass/li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The label for the detected terrorist content. Valid values:
<li>`guns`</li>
<li>`crowd`</li>
<li>`police`</li>
<li>`bloody`</li>
<li>`banners`</li>
<li>`explosion`</li>
<li>`scenario` (terrorist scenes) </li>
         * @type {string || null}
         */
        this.Label = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;

    }
}

/**
 * DeleteVodDomain request structure.
 * @class
 */
class DeleteVodDomainRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name to delete from VOD
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DescribeDrmKeyProviderInfo response structure.
 * @class
 */
class DescribeDrmKeyProviderInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The DRM key information provided by SDMC.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {SDMCDrmKeyProviderInfo || null}
         */
        this.SDMCInfo = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SDMCInfo) {
            let obj = new SDMCDrmKeyProviderInfo();
            obj.deserialize(params.SDMCInfo)
            this.SDMCInfo = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ExtractTraceWatermark response structure.
 * @class
 */
class ExtractTraceWatermarkResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateAIRecognitionTemplate request structure.
 * @class
 */
class CreateAIRecognitionTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Video content recognition template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description of video content recognition template. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Control parameter of video opening and ending credits recognition.
         * @type {HeadTailConfigureInfo || null}
         */
        this.HeadTailConfigure = null;

        /**
         * Control parameter of video splitting recognition.
         * @type {SegmentConfigureInfo || null}
         */
        this.SegmentConfigure = null;

        /**
         * Control parameter of face recognition.
         * @type {FaceConfigureInfo || null}
         */
        this.FaceConfigure = null;

        /**
         * Control parameter of full text recognition.
         * @type {OcrFullTextConfigureInfo || null}
         */
        this.OcrFullTextConfigure = null;

        /**
         * Control parameter of text keyword recognition.
         * @type {OcrWordsConfigureInfo || null}
         */
        this.OcrWordsConfigure = null;

        /**
         * Control parameter of full speech recognition.
         * @type {AsrFullTextConfigureInfo || null}
         */
        this.AsrFullTextConfigure = null;

        /**
         * Control parameter of speech keyword recognition.
         * @type {AsrWordsConfigureInfo || null}
         */
        this.AsrWordsConfigure = null;

        /**
         * Control parameter of voice translation.
         * @type {AsrTranslateConfigureInfo || null}
         */
        this.AsrTranslateConfigure = null;

        /**
         * Control parameter of object recognition.
         * @type {ObjectConfigureInfo || null}
         */
        this.ObjectConfigure = null;

        /**
         * Frame capturing interval in seconds. If this parameter is left empty, 1 second will be used by default. Minimum value: 0.5 seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.HeadTailConfigure) {
            let obj = new HeadTailConfigureInfo();
            obj.deserialize(params.HeadTailConfigure)
            this.HeadTailConfigure = obj;
        }

        if (params.SegmentConfigure) {
            let obj = new SegmentConfigureInfo();
            obj.deserialize(params.SegmentConfigure)
            this.SegmentConfigure = obj;
        }

        if (params.FaceConfigure) {
            let obj = new FaceConfigureInfo();
            obj.deserialize(params.FaceConfigure)
            this.FaceConfigure = obj;
        }

        if (params.OcrFullTextConfigure) {
            let obj = new OcrFullTextConfigureInfo();
            obj.deserialize(params.OcrFullTextConfigure)
            this.OcrFullTextConfigure = obj;
        }

        if (params.OcrWordsConfigure) {
            let obj = new OcrWordsConfigureInfo();
            obj.deserialize(params.OcrWordsConfigure)
            this.OcrWordsConfigure = obj;
        }

        if (params.AsrFullTextConfigure) {
            let obj = new AsrFullTextConfigureInfo();
            obj.deserialize(params.AsrFullTextConfigure)
            this.AsrFullTextConfigure = obj;
        }

        if (params.AsrWordsConfigure) {
            let obj = new AsrWordsConfigureInfo();
            obj.deserialize(params.AsrWordsConfigure)
            this.AsrWordsConfigure = obj;
        }

        if (params.AsrTranslateConfigure) {
            let obj = new AsrTranslateConfigureInfo();
            obj.deserialize(params.AsrTranslateConfigure)
            this.AsrTranslateConfigure = obj;
        }

        if (params.ObjectConfigure) {
            let obj = new ObjectConfigureInfo();
            obj.deserialize(params.ObjectConfigure)
            this.ObjectConfigure = obj;
        }
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;

    }
}

/**
 * DescribeTaskDetail request structure.
 * @class
 */
class DescribeTaskDetailRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video processing task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Intelligent categorization result
 * @class
 */
class MediaAiAnalysisClassificationItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of intelligently generated category.
         * @type {string || null}
         */
        this.Classification = null;

        /**
         * Confidence of intelligently generated category between 0 and 100.
         * @type {number || null}
         */
        this.Confidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Classification = 'Classification' in params ? params.Classification : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;

    }
}

/**
 * Result type of intelligent frame-specific tagging
 * @class
 */
class AiAnalysisTaskFrameTagResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input of intelligent frame-specific tagging task.
         * @type {AiAnalysisTaskFrameTagInput || null}
         */
        this.Input = null;

        /**
         * Output of intelligent frame-specific tagging task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiAnalysisTaskFrameTagOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an intelligent labeling by frame task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the intelligent frame labeling task started execution, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the intelligent frame labeling task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiAnalysisTaskFrameTagInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiAnalysisTaskFrameTagOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * Output for intelligent recognition of pornographic content
 * @class
 */
class AiReviewPornTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence score for the detected pornographic content. Value range: 0-100
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the detected pornographic content. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * Labels for the detected pornographic content. Valid values:
<li>porn</li>
<li>sexy</li>
<li>vulgar</li>
<li>intimacy</li>
         * @type {string || null}
         */
        this.Label = null;

        /**
         * List of video segments that contain detected pornographic content
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain detected pornographic content. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain detected pornographic content, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * The DRM key information provided by SDMC.
 * @class
 */
class SDMCDrmKeyProviderInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The user ID assigned by SDMC, which can contain up to 128 characters.
         * @type {string || null}
         */
        this.Uid = null;

        /**
         * The secret ID assigned by SDMC, which can contain up to 128 characters.
         * @type {string || null}
         */
        this.SecretId = null;

        /**
         * The secret key assigned by SDMC, which can contain up to 128 characters.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * The URL of the FairPlay certificate issued by SDMC. It must be an HTTPS address and can contain up to 1,024 characters.
         * @type {string || null}
         */
        this.FairPlayCertificateUrl = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Uid = 'Uid' in params ? params.Uid : null;
        this.SecretId = 'SecretId' in params ? params.SecretId : null;
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.FairPlayCertificateUrl = 'FairPlayCertificateUrl' in params ? params.FairPlayCertificateUrl : null;

    }
}

/**
 * Full speech recognition result.
 * @class
 */
class AiRecognitionTaskAsrFullTextResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of full speech recognition task.
         * @type {AiRecognitionTaskAsrFullTextResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of full speech recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskAsrFullTextResultOutput || null}
         */
        this.Output = null;

        /**
         * Speech full-text recognition task progress, value range [0-100].
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the full-text speech recognition task started, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the speech full-text recognition task was completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskAsrFullTextResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskAsrFullTextResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * DeleteQualityInspectTemplate response structure.
 * @class
 */
class DeleteQualityInspectTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The playback statistics.
 * @class
 */
class PlayStatInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The start time (in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I)) of the data returned. For example, if the granularity is a day, `2018-12-01T00:00:00+08:00` indicates that the data is for the period between December 1, 2018 (inclusive) and December 2, 2018 (exclusive).
<li>If the granularity is an hour, `2019-08-22T00:00:00+08:00` indicates the data is for the period between 00:00 and 01:00 AM on August 22, 2019.</li>
<li>If the granularity is a day, `2019-08-22T00:00:00+08:00` indicates the data is for August 22, 2019.</li>
         * @type {string || null}
         */
        this.Time = null;

        /**
         * The ID of the media file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The playback times.
         * @type {number || null}
         */
        this.PlayTimes = null;

        /**
         * The traffic (in bytes) consumed for playback.
         * @type {number || null}
         */
        this.Traffic = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Time = 'Time' in params ? params.Time : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.PlayTimes = 'PlayTimes' in params ? params.PlayTimes : null;
        this.Traffic = 'Traffic' in params ? params.Traffic : null;

    }
}

/**
 * Voice translation result.
 * @class
 */
class AiRecognitionTaskAsrTranslateResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Voice translation segments list.
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<AiRecognitionTaskAsrTranslateSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file of the list for voice translation segments. The file format is JSON, and the data structure is the same as `SegmentSet`. The file will be deleted upon the expiration time `SegmentSetFileUrlExpireTime`, instead of being stored permanently.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * The expiration time of the URLs of voice translation segments in [ISO date format](https://cloud.tencent.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

        /**
         * Generated subtitle list.
         * @type {Array.<AiRecognitionTaskAsrFullTextResultOutputSubtitleItem> || null}
         */
        this.SubtitleSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new AiRecognitionTaskAsrTranslateSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

        if (params.SubtitleSet) {
            this.SubtitleSet = new Array();
            for (let z in params.SubtitleSet) {
                let obj = new AiRecognitionTaskAsrFullTextResultOutputSubtitleItem();
                obj.deserialize(params.SubtitleSet[z]);
                this.SubtitleSet.push(obj);
            }
        }

    }
}

/**
 * Parameters for recognition of politically sensitive content in images
 * @class
 */
class PoliticalImgReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable recognition of politically sensitive content in images. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for recognition of politically sensitive content in images. Results containing the specified labels are returned. If no labels are specified, all results are returned. Valid values:
<li>`violation_photo`: banned images</li>
<li>`politician`: politically sensitive people</li>
<li>`entertainment`: people in the entertainment industry</li>
<li>`sport`: sportspeople</li>
<li>`entrepreneur`: businesspeople</li>
<li>`scholar`: scholars</li>
<li>`celebrity`: celebrities</li>
<li>`military`: people in military</li>
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `97` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `95` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Parameters for recognition of politically sensitive content
 * @class
 */
class PoliticalConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameters for recognition of politically sensitive content in images
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {PoliticalImgReviewTemplateInfo || null}
         */
        this.ImgReviewInfo = null;

        /**
         * Parameters for ASR-based recognition of politically sensitive content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {PoliticalAsrReviewTemplateInfo || null}
         */
        this.AsrReviewInfo = null;

        /**
         * Parameters for OCR-based recognition of politically sensitive content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {PoliticalOcrReviewTemplateInfo || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ImgReviewInfo) {
            let obj = new PoliticalImgReviewTemplateInfo();
            obj.deserialize(params.ImgReviewInfo)
            this.ImgReviewInfo = obj;
        }

        if (params.AsrReviewInfo) {
            let obj = new PoliticalAsrReviewTemplateInfo();
            obj.deserialize(params.AsrReviewInfo)
            this.AsrReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new PoliticalOcrReviewTemplateInfo();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * Control parameter of an intelligent highlight generating task
 * @class
 */
class HighlightsConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of an intelligent highlight generating task. Valid values:
<li>ON: enable an intelligent highlight generating task;</li>
<li>OFF: disable an intelligent highlight generating task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Domain https acceleration configuration, the default is off
 * @class
 */
class CDNCertInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The server certificate ID is automatically generated during certificate hosting by SSL Certificate Management.
         * @type {string || null}
         */
        this.CertId = null;

        /**
         * Server certificate information.
         * @type {string || null}
         */
        this.Certificate = null;

        /**
         * Server key information.
         * @type {string || null}
         */
        this.PrivateKey = null;

        /**
         * Certificate expiration time; no need to fill in when configured as an input parameter.
         * @type {string || null}
         */
        this.ExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CertId = 'CertId' in params ? params.CertId : null;
        this.Certificate = 'Certificate' in params ? params.Certificate : null;
        this.PrivateKey = 'PrivateKey' in params ? params.PrivateKey : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

    }
}

/**
 * CreateHeadTailTemplate response structure.
 * @class
 */
class CreateHeadTailTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Head Tail Template Number
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Text recognition segment.
 * @class
 */
class AiRecognitionTaskOcrWordsSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of recognized segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of recognition segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Confidence of recognized segment. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Zone coordinates of recognition result. The array contains four elements: [x1,y1,x2,y2], i.e., the horizontal and vertical coordinates of the top-left and bottom-right corners.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;

    }
}

/**
 * Query result type of task
 * @class
 */
class MediaProcessTaskResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task type. Valid values:
<li>Transcode: transcoding</li>
<li>AnimatedGraphics: animated image generating</li>
<li>SnapshotByTimeOffset: time point screencapturing</li>
<li>SampleSnapshot: sampled screencapturing</li>
<li>ImageSprites: image sprite generating</li>
<li>CoverBySnapshot: Screencapturing for cover image</li>
<li>AdaptiveDynamicStreaming: adaptive bitrate streaming</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Query result of transcoding task, which is valid when task type is `Transcode`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaProcessTaskTranscodeResult || null}
         */
        this.TranscodeTask = null;

        /**
         * Query result of animated image generating task, which is valid when task type is `AnimatedGraphics`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaProcessTaskAnimatedGraphicResult || null}
         */
        this.AnimatedGraphicTask = null;

        /**
         * Query result of time point screencapturing task, which is valid when task type is `SnapshotByTimeOffset`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaProcessTaskSnapshotByTimeOffsetResult || null}
         */
        this.SnapshotByTimeOffsetTask = null;

        /**
         * Query result of sampled screencapturing task, which is valid when task type is `SampleSnapshot`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaProcessTaskSampleSnapshotResult || null}
         */
        this.SampleSnapshotTask = null;

        /**
         * Query result of image sprite generating task, which is valid when task type is `ImageSprite`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaProcessTaskImageSpriteResult || null}
         */
        this.ImageSpriteTask = null;

        /**
         * Query result of cover generating task, which is valid if task type is `CoverBySnapshot`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaProcessTaskCoverBySnapshotResult || null}
         */
        this.CoverBySnapshotTask = null;

        /**
         * Query result of adaptive bitrate streaming, which is valid if task type is `AdaptiveDynamicStreaming`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaProcessTaskAdaptiveDynamicStreamingResult || null}
         */
        this.AdaptiveDynamicStreamingTask = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.TranscodeTask) {
            let obj = new MediaProcessTaskTranscodeResult();
            obj.deserialize(params.TranscodeTask)
            this.TranscodeTask = obj;
        }

        if (params.AnimatedGraphicTask) {
            let obj = new MediaProcessTaskAnimatedGraphicResult();
            obj.deserialize(params.AnimatedGraphicTask)
            this.AnimatedGraphicTask = obj;
        }

        if (params.SnapshotByTimeOffsetTask) {
            let obj = new MediaProcessTaskSnapshotByTimeOffsetResult();
            obj.deserialize(params.SnapshotByTimeOffsetTask)
            this.SnapshotByTimeOffsetTask = obj;
        }

        if (params.SampleSnapshotTask) {
            let obj = new MediaProcessTaskSampleSnapshotResult();
            obj.deserialize(params.SampleSnapshotTask)
            this.SampleSnapshotTask = obj;
        }

        if (params.ImageSpriteTask) {
            let obj = new MediaProcessTaskImageSpriteResult();
            obj.deserialize(params.ImageSpriteTask)
            this.ImageSpriteTask = obj;
        }

        if (params.CoverBySnapshotTask) {
            let obj = new MediaProcessTaskCoverBySnapshotResult();
            obj.deserialize(params.CoverBySnapshotTask)
            this.CoverBySnapshotTask = obj;
        }

        if (params.AdaptiveDynamicStreamingTask) {
            let obj = new MediaProcessTaskAdaptiveDynamicStreamingResult();
            obj.deserialize(params.AdaptiveDynamicStreamingTask)
            this.AdaptiveDynamicStreamingTask = obj;
        }

    }
}

/**
 * DeleteWordSamples response structure.
 * @class
 */
class DeleteWordSamplesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * 
 * @class
 */
class MediaCastEvent extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {string || null}
         */
        this.CastId = null;

        /**
         * 
         * @type {string || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CastId = 'CastId' in params ? params.CastId : null;
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * Heuristic cache configuration
 * @class
 */
class HeuristicCache extends  AbstractModel {
    constructor(){
        super();

        /**
         * Heuristic cache configuration switch, the values u200bu200bare: 
<li>on: on; </li>
<li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Custom heuristic cache time configuration.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {HeuristicCacheConfig || null}
         */
        this.CacheConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

        if (params.CacheConfig) {
            let obj = new HeuristicCacheConfig();
            obj.deserialize(params.CacheConfig)
            this.CacheConfig = obj;
        }

    }
}

/**
 * DeleteProcedureTemplate request structure.
 * @class
 */
class DeleteProcedureTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task flow name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Watermark parameter type of video processing task
 * @class
 */
class WatermarkInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Watermarking template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Text content, which contains up to 100 characters. Set this parameter only when the watermark type is text.
VOD does not support adding text watermarks on screenshots.
         * @type {string || null}
         */
        this.TextContent = null;

        /**
         * SVG content, which contains up to 2,000,000 characters. Set this parameter only when the watermark type is SVG.
VOD does not support adding SVG watermarks on screenshots.
         * @type {string || null}
         */
        this.SvgContent = null;

        /**
         * Start time offset of a watermark in seconds. If this parameter is left blank or 0 is entered, the watermark will appear upon the first video frame.
<li>If this parameter is left blank or 0 is entered, the watermark will appear upon the first video frame;</li>
<li>If this value is greater than 0 (e.g., n), the watermark will appear at second n after the first video frame;</li>
<li>If this value is smaller than 0 (e.g., -n), the watermark will appear at second n before the last video frame.</li>
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of a watermark in seconds.
<li>If this parameter is left blank or 0 is entered, the watermark will exist till the last video frame;</li>
<li>If this value is greater than 0 (e.g., n), the watermark will exist till second n;</li>
<li>If this value is smaller than 0 (e.g., -n), the watermark will exist till second n before the last video frame.</li>
         * @type {number || null}
         */
        this.EndTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.TextContent = 'TextContent' in params ? params.TextContent : null;
        this.SvgContent = 'SvgContent' in params ? params.SvgContent : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

    }
}

/**
 * AI-based sample management - keyword input information.
 * @class
 */
class AiSampleWordInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Keyword. Length limit: 20 characters.
         * @type {string || null}
         */
        this.Keyword = null;

        /**
         * Keyword tag
<li>Array length limit: 20 tags;</li>
<li>Tag length limit: 128 characters.</li>
         * @type {Array.<string> || null}
         */
        this.Tags = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Keyword = 'Keyword' in params ? params.Keyword : null;
        this.Tags = 'Tags' in params ? params.Tags : null;

    }
}

/**
 * Adaptive bitrate streaming information
 * @class
 */
class AdaptiveDynamicStreamingInfoItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Adaptive bitrate streaming specification.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The packaging format. Valid values:
<li>`HLS`</li>
<li>`DASH`</li>
         * @type {string || null}
         */
        this.Package = null;

        /**
         * Encryption type.
         * @type {string || null}
         */
        this.DrmType = null;

        /**
         * Playback address.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * File size (bytes)
<li>If the file is an HLS file, the value of this parameter is the sum of the size of the M3U8 and TS files.</li>
<li>If the file is a DASH file, the value of this parameter is the sum of the size of the MPD and segment files.</li>
<li><font color=red>Note</font>: For adaptive bitrate streaming files generated before 2022-01-10T16:00:00Z, the value of this parameter is `0`.</li>
         * @type {number || null}
         */
        this.Size = null;

        /**
         * Digital watermark type. Optional values:
<li>Trace means traceability watermark processing; </li>
<li>CopyRight means copyright watermark processing; </li>
<li>None means no digital watermark processing. </li>
         * @type {string || null}
         */
        this.DigitalWatermarkType = null;

        /**
         * The information of the streams.
         * @type {Array.<MediaSubStreamInfoItem> || null}
         */
        this.SubStreamSet = null;

        /**
         * Copyright Information.
         * @type {string || null}
         */
        this.CopyRightWatermarkText = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Package = 'Package' in params ? params.Package : null;
        this.DrmType = 'DrmType' in params ? params.DrmType : null;
        this.Url = 'Url' in params ? params.Url : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.DigitalWatermarkType = 'DigitalWatermarkType' in params ? params.DigitalWatermarkType : null;

        if (params.SubStreamSet) {
            this.SubStreamSet = new Array();
            for (let z in params.SubStreamSet) {
                let obj = new MediaSubStreamInfoItem();
                obj.deserialize(params.SubStreamSet[z]);
                this.SubStreamSet.push(obj);
            }
        }
        this.CopyRightWatermarkText = 'CopyRightWatermarkText' in params ? params.CopyRightWatermarkText : null;

    }
}

/**
 * The information of the live stream to clip.
 * @class
 */
class LiveRealTimeClipStreamInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The type of live stream to clip. Valid values:
<li>Original (<b>default</b>)</li>
<li>Transcoding</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The transcoding template ID.
<b>This is required if `Type` is `Transcoding`.</b>
         * @type {number || null}
         */
        this.TemplateId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.TemplateId = 'TemplateId' in params ? params.TemplateId : null;

    }
}

/**
 * Control parameter of prohibited information detection in text task
 * @class
 */
class ProhibitedOcrReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of prohibited information detection in text task. Valid values:
<li>ON: enables prohibited information detection in text task;</li>
<li>OFF: disables prohibited information detection in text task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * DeleteClass response structure.
 * @class
 */
class DeleteClassResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyTranscodeTemplate response structure.
 * @class
 */
class ModifyTranscodeTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * VOD media file metadata
 * @class
 */
class MediaMetaData extends  AbstractModel {
    constructor(){
        super();

        /**
         * Size of uploaded media file in bytes (which is the sum of size of m3u8 and ts files if the video is in HLS format).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Size = null;

        /**
         * Container, such as m4a and mp4.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Sum of the average bitrate of a video stream and that of an audio stream in bps.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Maximum value of the height of a video stream in px.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Maximum value of the width of a video stream in px.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Video duration in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * Selected angle during video recording in degrees.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Rotate = null;

        /**
         * Video stream information.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaVideoStreamItem> || null}
         */
        this.VideoStreamSet = null;

        /**
         * Audio stream information.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaAudioStreamItem> || null}
         */
        this.AudioStreamSet = null;

        /**
         * Video duration in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.VideoDuration = null;

        /**
         * Audio duration in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.AudioDuration = null;

        /**
         * The MD5 hash of the file.
<li><font color=red>Note</font>: To get the MD5 hash of a file, call the `DescribeFileAttributes` API. The information will be returned after the task is completed.</li>
         * @type {string || null}
         */
        this.Md5 = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Size = 'Size' in params ? params.Size : null;
        this.Container = 'Container' in params ? params.Container : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Duration = 'Duration' in params ? params.Duration : null;
        this.Rotate = 'Rotate' in params ? params.Rotate : null;

        if (params.VideoStreamSet) {
            this.VideoStreamSet = new Array();
            for (let z in params.VideoStreamSet) {
                let obj = new MediaVideoStreamItem();
                obj.deserialize(params.VideoStreamSet[z]);
                this.VideoStreamSet.push(obj);
            }
        }

        if (params.AudioStreamSet) {
            this.AudioStreamSet = new Array();
            for (let z in params.AudioStreamSet) {
                let obj = new MediaAudioStreamItem();
                obj.deserialize(params.AudioStreamSet[z]);
                this.AudioStreamSet.push(obj);
            }
        }
        this.VideoDuration = 'VideoDuration' in params ? params.VideoDuration : null;
        this.AudioDuration = 'AudioDuration' in params ? params.AudioDuration : null;
        this.Md5 = 'Md5' in params ? params.Md5 : null;

    }
}

/**
 * Information of sampled screenshot of VOD file
 * @class
 */
class MediaSampleSnapshotInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information set of sampled screenshots with the specified specifications. Each element represents a set of sampled screenshots with the same specification.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaSampleSnapshotItem> || null}
         */
        this.SampleSnapshotSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SampleSnapshotSet) {
            this.SampleSnapshotSet = new Array();
            for (let z in params.SampleSnapshotSet) {
                let obj = new MediaSampleSnapshotItem();
                obj.deserialize(params.SampleSnapshotSet[z]);
                this.SampleSnapshotSet.push(obj);
            }
        }

    }
}

/**
 * InspectMediaQuality response structure.
 * @class
 */
class InspectMediaQualityResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media quality inspection task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteRebuildMediaTemplate request structure.
 * @class
 */
class DeleteRebuildMediaTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rebuild Media Template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * CreateDomainVerifyRecord request structure.
 * @class
 */
class CreateDomainVerifyRecordRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Need to access the VOD acceleration domain name.
         * @type {string || null}
         */
        this.Domain = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2024, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domain = 'Domain' in params ? params.Domain : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * VOD file information
 * @class
 */
class MediaInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Basic information, such as video name, category, playback address, and cover image.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaBasicInfo || null}
         */
        this.BasicInfo = null;

        /**
         * Metadata, such as size, duration, video stream information, and audio stream information.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * Result information of transcoding, such as address, specification, bitrate, and resolution of the videos in various bitrates generated by transcoding a video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaTranscodeInfo || null}
         */
        this.TranscodeInfo = null;

        /**
         * Result information of animated image generating, i.e., relevant information of an animated image (such as .gif) generated from a video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaAnimatedGraphicsInfo || null}
         */
        this.AnimatedGraphicsInfo = null;

        /**
         * Sampled screenshot information, i.e., relevant information of a sampled screenshot generated from a video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaSampleSnapshotInfo || null}
         */
        this.SampleSnapshotInfo = null;

        /**
         * Image sprite information, i.e., relevant information of image sprite generated from video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaImageSpriteInfo || null}
         */
        this.ImageSpriteInfo = null;

        /**
         * Time point screenshot information, i.e., information of each time point screenshot generated from a video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaSnapshotByTimeOffsetInfo || null}
         */
        this.SnapshotByTimeOffsetInfo = null;

        /**
         * Timestamp information, i.e., information of each timestamp set for a video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaKeyFrameDescInfo || null}
         */
        this.KeyFrameDescInfo = null;

        /**
         * Adaptive bitrate streaming information, such as specification, encryption type, and container format.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaAdaptiveDynamicStreamingInfo || null}
         */
        this.AdaptiveDynamicStreamingInfo = null;

        /**
         * WeChat Mini Program audit information.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {MediaMiniProgramReviewInfo || null}
         */
        this.MiniProgramReviewInfo = null;

        /**
         * Subtitle information
Note: this field may return `null`, indicating that no valid value is obtained.
         * @type {MediaSubtitleInfo || null}
         */
        this.SubtitleInfo = null;

        /**
         * Unique ID of media file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Moderation details.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {FileReviewInfo || null}
         */
        this.ReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.BasicInfo) {
            let obj = new MediaBasicInfo();
            obj.deserialize(params.BasicInfo)
            this.BasicInfo = obj;
        }

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }

        if (params.TranscodeInfo) {
            let obj = new MediaTranscodeInfo();
            obj.deserialize(params.TranscodeInfo)
            this.TranscodeInfo = obj;
        }

        if (params.AnimatedGraphicsInfo) {
            let obj = new MediaAnimatedGraphicsInfo();
            obj.deserialize(params.AnimatedGraphicsInfo)
            this.AnimatedGraphicsInfo = obj;
        }

        if (params.SampleSnapshotInfo) {
            let obj = new MediaSampleSnapshotInfo();
            obj.deserialize(params.SampleSnapshotInfo)
            this.SampleSnapshotInfo = obj;
        }

        if (params.ImageSpriteInfo) {
            let obj = new MediaImageSpriteInfo();
            obj.deserialize(params.ImageSpriteInfo)
            this.ImageSpriteInfo = obj;
        }

        if (params.SnapshotByTimeOffsetInfo) {
            let obj = new MediaSnapshotByTimeOffsetInfo();
            obj.deserialize(params.SnapshotByTimeOffsetInfo)
            this.SnapshotByTimeOffsetInfo = obj;
        }

        if (params.KeyFrameDescInfo) {
            let obj = new MediaKeyFrameDescInfo();
            obj.deserialize(params.KeyFrameDescInfo)
            this.KeyFrameDescInfo = obj;
        }

        if (params.AdaptiveDynamicStreamingInfo) {
            let obj = new MediaAdaptiveDynamicStreamingInfo();
            obj.deserialize(params.AdaptiveDynamicStreamingInfo)
            this.AdaptiveDynamicStreamingInfo = obj;
        }

        if (params.MiniProgramReviewInfo) {
            let obj = new MediaMiniProgramReviewInfo();
            obj.deserialize(params.MiniProgramReviewInfo)
            this.MiniProgramReviewInfo = obj;
        }

        if (params.SubtitleInfo) {
            let obj = new MediaSubtitleInfo();
            obj.deserialize(params.SubtitleInfo)
            this.SubtitleInfo = obj;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.ReviewInfo) {
            let obj = new FileReviewInfo();
            obj.deserialize(params.ReviewInfo)
            this.ReviewInfo = obj;
        }

    }
}

/**
 * Video stream configuration parameter
 * @class
 */
class VideoTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * The video codec. Valid values:
<li>libx264: H.264</li>
<li>libx265: H.265</li>
<li>av1: AOMedia Video 1</li>
<li>H.266: H.266</li>
<font color=red>Notes:</font>
<li>The AOMedia Video 1 and H.266 codecs can only be used for MP4 files.</li>
<li> Only CRF is supported for H.266 currently.</li>
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * Video frame rate in Hz. Value range: [0,100].
If the value is 0, the frame rate will be the same as that of the source video.
         * @type {number || null}
         */
        this.Fps = null;

        /**
         * Bitrate of video stream in Kbps. Value range: 0 and [128, 35,000].
If the value is 0, the bitrate of the video will be the same as that of the source video.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * The maximum video width (or long side) in pixels. Value range: 0 and [128, 8192].
<li>If both `Width` and `Height` are 0, the output resolution will be the same as that of the source video.</li>
<li>If `Width` is 0 and `Height` is not, the video width will be proportionally scaled.</li>
<li>If `Width` is not 0 and `Height` is, the video height will be proportionally scaled.</li>
<li>If neither `Width` nor `Height` is 0, the specified width and height will be used.</li>
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The maximum video height (or short side) in pixels. Value range: 0 and [128, 8192].
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Fill type. "Fill" refers to the way of processing a screenshot when its aspect ratio is different from that of the source video. Valid values:
<li>stretch: stretches video image frame by frame to fill the screen. The video image may become "squashed" or "stretched" after transcoding.</li>
<li>black: fills the uncovered area with black color, without changing the image's aspect ratio.</li>
<li>white: fills the uncovered area with white color, without changing the image's aspect ratio.</li>
<li>gauss: applies Gaussian blur to the uncovered area, without changing the image's aspect ratio.</li>
         * @type {string || null}
         */
        this.FillType = null;

        /**
         * The video constant rate factor (CRF). Value range: 1-51. `0` means to disable this parameter.

<font color=red>Notes:</font>
<li>If this parameter is specified, CRF encoding will be used and the bitrate parameter will be ignored.</li>
<li>If `Codec` is `H.266`, this parameter is required (`28` is recommended).</li>
<li>We don’t recommend using this parameter unless you have special requirements.</li>
         * @type {number || null}
         */
        this.Vcrf = null;

        /**
         * I-frame interval in frames. Valid values: 0 and 1-100000.
When this parameter is set to 0 or left empty, `Gop` will be automatically set.
         * @type {number || null}
         */
        this.Gop = null;

        /**
         * Whether to output an HDR (high dynamic range) video if the source video is HDR. Valid values:
<li>ON: If the source video is HDR, output an HDR video; if not, output an SDR (standard dynamic range) video.</li>
<li>OFF: Output an SDR video regardless of whether the source video is HDR.</li>
         * @type {string || null}
         */
        this.PreserveHDRSwitch = null;

        /**
         * The codec tag. This parameter is valid only if the H.265 codec is used. Valid values:
<li>hvc1</li>
<li>hev1</li>
Default value: hvc1.
         * @type {string || null}
         */
        this.CodecTag = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Fps = 'Fps' in params ? params.Fps : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.FillType = 'FillType' in params ? params.FillType : null;
        this.Vcrf = 'Vcrf' in params ? params.Vcrf : null;
        this.Gop = 'Gop' in params ? params.Gop : null;
        this.PreserveHDRSwitch = 'PreserveHDRSwitch' in params ? params.PreserveHDRSwitch : null;
        this.CodecTag = 'CodecTag' in params ? params.CodecTag : null;

    }
}

/**
 * CreateContentReviewTemplate request structure.
 * @class
 */
class CreateContentReviewTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to allow the recognition result to enter the intelligent recognition platform (for human recognition).
<li>ON: yes</li>
<li>OFF: no</li>
         * @type {string || null}
         */
        this.ReviewWallSwitch = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of an intelligent content recognition template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Description of an intelligent content recognition template. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Control parameter for porn information.
         * @type {PornConfigureInfo || null}
         */
        this.PornConfigure = null;

        /**
         * Control parameter for terrorism information.
         * @type {TerrorismConfigureInfo || null}
         */
        this.TerrorismConfigure = null;

        /**
         * Control parameter for politically sensitive information.
         * @type {PoliticalConfigureInfo || null}
         */
        this.PoliticalConfigure = null;

        /**
         * Control parameter of prohibited information detection. Prohibited information includes:
<li>Abusive;</li>
<li>Drug-related.</li>
         * @type {ProhibitedConfigureInfo || null}
         */
        this.ProhibitedConfigure = null;

        /**
         * Control parameter for custom intelligent content recognition.
         * @type {UserDefineConfigureInfo || null}
         */
        this.UserDefineConfigure = null;

        /**
         * Frame capturing interval in seconds. If this parameter is left empty, 1 second will be used by default. Minimum value: 0.5 seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ReviewWallSwitch = 'ReviewWallSwitch' in params ? params.ReviewWallSwitch : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.PornConfigure) {
            let obj = new PornConfigureInfo();
            obj.deserialize(params.PornConfigure)
            this.PornConfigure = obj;
        }

        if (params.TerrorismConfigure) {
            let obj = new TerrorismConfigureInfo();
            obj.deserialize(params.TerrorismConfigure)
            this.TerrorismConfigure = obj;
        }

        if (params.PoliticalConfigure) {
            let obj = new PoliticalConfigureInfo();
            obj.deserialize(params.PoliticalConfigure)
            this.PoliticalConfigure = obj;
        }

        if (params.ProhibitedConfigure) {
            let obj = new ProhibitedConfigureInfo();
            obj.deserialize(params.ProhibitedConfigure)
            this.ProhibitedConfigure = obj;
        }

        if (params.UserDefineConfigure) {
            let obj = new UserDefineConfigureInfo();
            obj.deserialize(params.UserDefineConfigure)
            this.UserDefineConfigure = obj;
        }
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;

    }
}

/**
 * DescribeContentReviewTemplates request structure.
 * @class
 */
class DescribeContentReviewTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique IDs for filters of an intelligent content recognition template. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * CreateComplexAdaptiveDynamicStreamingTask response structure.
 * @class
 */
class CreateComplexAdaptiveDynamicStreamingTaskResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Input parameter type of adaptive bitrate streaming
 * @class
 */
class AdaptiveDynamicStreamingTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Adaptive bitrate streaming template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * List of up to 10 image or text watermarks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WatermarkInput> || null}
         */
        this.WatermarkSet = null;

        /**
         * Digital watermark.
         * @type {TraceWatermarkInput || null}
         */
        this.TraceWatermark = null;

        /**
         * CopyRight Watermark.
         * @type {CopyRightWatermarkInput || null}
         */
        this.CopyRightWatermark = null;

        /**
         * List of subtitle IDs (maximum: 16)
         * @type {Array.<string> || null}
         */
        this.SubtitleSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

        if (params.WatermarkSet) {
            this.WatermarkSet = new Array();
            for (let z in params.WatermarkSet) {
                let obj = new WatermarkInput();
                obj.deserialize(params.WatermarkSet[z]);
                this.WatermarkSet.push(obj);
            }
        }

        if (params.TraceWatermark) {
            let obj = new TraceWatermarkInput();
            obj.deserialize(params.TraceWatermark)
            this.TraceWatermark = obj;
        }

        if (params.CopyRightWatermark) {
            let obj = new CopyRightWatermarkInput();
            obj.deserialize(params.CopyRightWatermark)
            this.CopyRightWatermark = obj;
        }
        this.SubtitleSet = 'SubtitleSet' in params ? params.SubtitleSet : null;

    }
}

/**
 * DescribeImageSpriteTemplates response structure.
 * @class
 */
class DescribeImageSpriteTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of image sprite generating template details.
         * @type {Array.<ImageSpriteTemplate> || null}
         */
        this.ImageSpriteTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.ImageSpriteTemplateSet) {
            this.ImageSpriteTemplateSet = new Array();
            for (let z in params.ImageSpriteTemplateSet) {
                let obj = new ImageSpriteTemplate();
                obj.deserialize(params.ImageSpriteTemplateSet[z]);
                this.ImageSpriteTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * InspectMediaQuality request structure.
 * @class
 */
class InspectMediaQualityRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file ID, i.e., the globally unique ID of a file in VOD assigned by the VOD backend after successful upload. This field can be obtained through the [video upload completion event notification](https://intl.cloud.tencent.com/document/product/266/7830?from_cn_redirect=1) or [VOD Console](https://console.cloud.tencent.com/vod/media).
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Media quality inspect template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The priority of the task, the higher the numeric value, the higher the priority. The range is from -10 to 10, and not filled represents 0.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * The source context which is used to pass through the user request information. After `Procedure` is specified, the task flow status change callback will return the value of this field. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * Used to identify duplicate requests. After you send a request, if any request with the same `SessionId` has already been sent in the last three days (72 hours), an error message will be returned. `SessionId` contains up to 50 characters. If this parameter is not carried or is an empty string, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Retain field, using when special purpose.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * Transition operation
 * @class
 */
class TransitionOperation extends  AbstractModel {
    constructor(){
        super();

        /**
         * Transition type, the values u200bu200bare:
<ul>
<li>Image transition operation, used for transition processing between two video clip images:
<ul>
<li>ImageFadeInFadeOut: image fade in and fade out. </li>
<li>BowTieHorizontal: horizontal bow tie. </li>
<li>BowTieVertical: vertical bow tie. </li>
<li>ButterflyWaveScrawler: Shake. </li>
<li>Cannabisleaf: maple leaf. </li>
<li>Circle: Arc retraction. </li>
<li>CircleCrop: Circles gather together. </li>
<li>Circleopen: ellipse gathering. </li>
<li>Crosswarp: Horizontal warping. </li>
<li>Cube: Cube. </li>
<li>DoomScreenTransition: Curtain. </li>
<li>Doorway: Porch. </li>
<li>Dreamy: Wave. </li>
<li>DreamyZoom: Horizontal zoom. </li>
<li>FilmBurn: Fire Burning Cloud. </li>
<li>GlitchMemories: Glitch. </li>
<li>Heart: heart shape. </li>
<li>InvertedPageCurl: Page turning. </li>
<li>Luma: Corrosion. </li>
<li>Mosaic: Nine-square grid. </li>
<li>Pinwheel: Windmill. </li>
<li>PolarFunction: elliptical diffusion. </li>
<li>PolkaDotsCurtain: Arc diffusion. </li>
<li>Radial: radar scanning </li>
<li>RotateScaleFade: up and down. </li>
<li>Squeeze: gather up and down. </li>
<li>Swap: zoom in and switch. </li>
<li>Swirl: spiral. </li>
<li>UndulatingBurnOutSwirl: Water spreading. </li>
<li>Windowblinds: blinds. </li>
<li>WipeDown: Wrap downward. </li>
<li>WipeLeft: Wrap to the left. </li>
<li>WipeRight: Wrap to the right. </li>
<li>WipeUp: Wrap up. </li>
<li>ZoomInCircles: Water ripples. </li>
</ul>
</li>
<li>Audio transition operation, used for transition processing between two audio clips:
<ul>
<li>AudioFadeInFadeOut : The sound fades in and out. </li>
</ul>
</li>
</ul>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Just In Time transcoding watermark template configuration.
 * @class
 */
class WatermarkConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable watermark. Possible values:
<li>ON: means enabling watermark;</li>
<li>OFF: means turning off watermark. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Watermark image Base64 encoded string. Supports jpeg, png image formats.
         * @type {string || null}
         */
        this.ImageContent = null;

        /**
         * The width of the watermark. 
<li>The string ends with %, indicating that the watermark Width is a percentage of the video width, such as 10% indicating that the Width is 10% of the video width;</li>
         * @type {string || null}
         */
        this.Width = null;

        /**
         * The height of the watermark. 
<li>The string ends with %, indicating that the watermark Height is a percentage of the video height, for example, 10% means that the Height is 10% of the video height;</li>
         * @type {string || null}
         */
        this.Height = null;

        /**
         * The horizontal position of the watermark origin from the video image coordinate origin. The string ends with %, indicating that the watermark XPos specifies a percentage of the video width, such as 10% indicating that the XPos is 10% of the video width.
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * The vertical position of the watermark origin from the video image coordinate origin. When the string ends with %, it means that the watermark YPos specifies a percentage of the video height. For example, 10% means that YPos is 10% of the video height.
         * @type {string || null}
         */
        this.YPos = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.ImageContent = 'ImageContent' in params ? params.ImageContent : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;

    }
}

/**
 * Input type of intelligent frame-specific tagging task
 * @class
 */
class AiAnalysisTaskFrameTagInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intelligent frame-specific video tagging template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * List of frame-specific tag segments
 * @class
 */
class MediaAiAnalysisFrameTagSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of frame-specific tag.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of frame-specific tag.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * List of tags in time period.
         * @type {Array.<MediaAiAnalysisFrameTagItem> || null}
         */
        this.TagSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

        if (params.TagSet) {
            this.TagSet = new Array();
            for (let z in params.TagSet) {
                let obj = new MediaAiAnalysisFrameTagItem();
                obj.deserialize(params.TagSet[z]);
                this.TagSet.push(obj);
            }
        }

    }
}

/**
 * Speech keyword recognition result.
 * @class
 */
class AiRecognitionTaskAsrWordsResultItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Speech keyword.
         * @type {string || null}
         */
        this.Word = null;

        /**
         * List of time segments that contain the speech keyword.
         * @type {Array.<AiRecognitionTaskAsrWordsSegmentItem> || null}
         */
        this.SegmentSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Word = 'Word' in params ? params.Word : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new AiRecognitionTaskAsrWordsSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }

    }
}

/**
 * CreateQualityInspectTemplate response structure.
 * @class
 */
class CreateQualityInspectTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media quality inspect template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The output parameters of an audio/video remastering task.
 * @class
 */
class RebuildMediaTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The file type, such as MP4 and FLV.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * The playback URL of the output file.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * The file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The filename. This parameter can contain up to 64 characters, and will be generated by the system if it is left empty.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * The ID of the file’s category. You can use the [CreateClass](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API to create a category and get the category ID.
<li>The default value is `0`, which means the “Other” category.</li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The expiration time of the output file, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=). The file will be deleted after the specified expiration time. By default, the file will never expire.
         * @type {string || null}
         */
        this.ExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

    }
}

/**
 * Remaster result file output
 * @class
 */
class EnhanceMediaQualityOutputConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Output file name, up to 64 characters. The system will specify the file name by default
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * Category ID, used for media classification management, can be obtained by [creating a category](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) interface, create a category, get the category ID.
<li>Default value: 0, which means other categories.</li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The expiration time of the output file, the file will be deleted after this time, the default is never to expire, the format is in accordance with the ISO 8601 standard, see [ISO date format description](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I)。
         * @type {string || null}
         */
        this.ExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

    }
}

/**
 * Domain name HTTPS acceleration configuration. This is disabled by default.
 * @class
 */
class Https extends  AbstractModel {
    constructor(){
        super();

        /**
         * https configuration switch, value: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * http2 configuration switch, value: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Http2 = null;

        /**
         * Server certificate configuration information
         * @type {CDNCertInfo || null}
         */
        this.CertInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Http2 = 'Http2' in params ? params.Http2 : null;

        if (params.CertInfo) {
            let obj = new CDNCertInfo();
            obj.deserialize(params.CertInfo)
            this.CertInfo = obj;
        }

    }
}

/**
 * RebuildMedia request structure.
 * @class
 */
class RebuildMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The start offset (seconds). If you do not specify this, the segment will start from the beginning of the video.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * The end offset (seconds). If you do not specify this, the segment will end at the end of the video.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * The video quality remastering parameters.
         * @type {RepairInfo || null}
         */
        this.RepairInfo = null;

        /**
         * The smart frame interpolation parameters.
         * @type {VideoFrameInterpolationInfo || null}
         */
        this.VideoFrameInterpolationInfo = null;

        /**
         * The super resolution parameters.
         * @type {SuperResolutionInfo || null}
         */
        this.SuperResolutionInfo = null;

        /**
         * The high dynamic range (HDR) parameters.
         * @type {HDRInfo || null}
         */
        this.HDRInfo = null;

        /**
         * The image noise removal parameters.
         * @type {VideoDenoiseInfo || null}
         */
        this.VideoDenoiseInfo = null;

        /**
         * The noise removal parameters.
         * @type {AudioDenoiseInfo || null}
         */
        this.AudioDenoiseInfo = null;

        /**
         * The color enhancement parameters.
         * @type {ColorEnhanceInfo || null}
         */
        this.ColorInfo = null;

        /**
         * The detail enhancement parameters.
         * @type {SharpEnhanceInfo || null}
         */
        this.SharpInfo = null;

        /**
         * The face enhancement parameters.
         * @type {FaceEnhanceInfo || null}
         */
        this.FaceInfo = null;

        /**
         * The low-light enhancement parameters.
         * @type {LowLightEnhanceInfo || null}
         */
        this.LowLightInfo = null;

        /**
         * The banding removal parameters.
         * @type {ScratchRepairInfo || null}
         */
        this.ScratchRepairInfo = null;

        /**
         * The artifact removal (smoothing) parameters.
         * @type {ArtifactRepairInfo || null}
         */
        this.ArtifactRepairInfo = null;

        /**
         * The output parameters of the file.
         * @type {RebuildMediaTargetInfo || null}
         */
        this.TargetInfo = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last three days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The task priority, which can be a value from -10 to 10. The higher the value, the higher the priority. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * A reserved parameter.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

        if (params.RepairInfo) {
            let obj = new RepairInfo();
            obj.deserialize(params.RepairInfo)
            this.RepairInfo = obj;
        }

        if (params.VideoFrameInterpolationInfo) {
            let obj = new VideoFrameInterpolationInfo();
            obj.deserialize(params.VideoFrameInterpolationInfo)
            this.VideoFrameInterpolationInfo = obj;
        }

        if (params.SuperResolutionInfo) {
            let obj = new SuperResolutionInfo();
            obj.deserialize(params.SuperResolutionInfo)
            this.SuperResolutionInfo = obj;
        }

        if (params.HDRInfo) {
            let obj = new HDRInfo();
            obj.deserialize(params.HDRInfo)
            this.HDRInfo = obj;
        }

        if (params.VideoDenoiseInfo) {
            let obj = new VideoDenoiseInfo();
            obj.deserialize(params.VideoDenoiseInfo)
            this.VideoDenoiseInfo = obj;
        }

        if (params.AudioDenoiseInfo) {
            let obj = new AudioDenoiseInfo();
            obj.deserialize(params.AudioDenoiseInfo)
            this.AudioDenoiseInfo = obj;
        }

        if (params.ColorInfo) {
            let obj = new ColorEnhanceInfo();
            obj.deserialize(params.ColorInfo)
            this.ColorInfo = obj;
        }

        if (params.SharpInfo) {
            let obj = new SharpEnhanceInfo();
            obj.deserialize(params.SharpInfo)
            this.SharpInfo = obj;
        }

        if (params.FaceInfo) {
            let obj = new FaceEnhanceInfo();
            obj.deserialize(params.FaceInfo)
            this.FaceInfo = obj;
        }

        if (params.LowLightInfo) {
            let obj = new LowLightEnhanceInfo();
            obj.deserialize(params.LowLightInfo)
            this.LowLightInfo = obj;
        }

        if (params.ScratchRepairInfo) {
            let obj = new ScratchRepairInfo();
            obj.deserialize(params.ScratchRepairInfo)
            this.ScratchRepairInfo = obj;
        }

        if (params.ArtifactRepairInfo) {
            let obj = new ArtifactRepairInfo();
            obj.deserialize(params.ArtifactRepairInfo)
            this.ArtifactRepairInfo = obj;
        }

        if (params.TargetInfo) {
            let obj = new RebuildMediaTargetInfo();
            obj.deserialize(params.TargetInfo)
            this.TargetInfo = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * DescribeTaskDetail response structure.
 * @class
 */
class DescribeTaskDetailResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task type. Valid values:
<li>`Procedure`: Video processing</li>
<li>`EditMedia`: Video editing</li>
<li>`SplitMedia`: Video splitting</li>
<li>`ComposeMedia`: Media file production</li>
<li>`WechatPublish`: Weixin publishing</li>
<li>`WechatMiniProgramPublish`: Publishing videos on Weixin Mini Program</li>
<li>`PullUpload`: Pulling media files for upload</li>
<li>`FastClipMedia`: Quick clipping</li>
<li>`RemoveWatermarkTask`: Watermark removal</li>
<li>`DescribeFileAttributesTask`: Getting file attributes</li>
<li> `ReviewAudioVideo`: Moderation</li>
<li>`ExtractTraceWatermark`: Digital watermark extraction</li>
<li>`QualityEnhance`: Enhance audio/video</li>
<li>`ComplexAdaptiveDynamicStreaming`: Complex adaptive bitrate streaming processing task</li>
         * @type {string || null}
         */
        this.TaskType = null;

        /**
         * Task status. Valid values:
<li>WAITING: waiting;</li>
<li>PROCESSING: processing;</li>
<li>FINISH: completed.</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Creation time of task in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Start time of task execution in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * End time of task execution in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.FinishTime = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ProcedureTask || null}
         */
        this.ProcedureTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {EditMediaTask || null}
         */
        this.EditMediaTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {WechatPublishTask || null}
         */
        this.WechatPublishTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ComposeMediaTask || null}
         */
        this.ComposeMediaTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {SplitMediaTask || null}
         */
        this.SplitMediaTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {WechatMiniProgramPublishTask || null}
         */
        this.WechatMiniProgramPublishTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {PullUploadTask || null}
         */
        this.PullUploadTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {TranscodeTask2017 || null}
         */
        this.TranscodeTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ConcatTask2017 || null}
         */
        this.ConcatTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ClipTask2017 || null}
         */
        this.ClipTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {CreateImageSpriteTask2017 || null}
         */
        this.CreateImageSpriteTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {SnapshotByTimeOffsetTask2017 || null}
         */
        this.SnapshotByTimeOffsetTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {RemoveWatermarkTask || null}
         */
        this.RemoveWatermarkTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {RebuildMediaTask || null}
         */
        this.RebuildMediaTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ExtractTraceWatermarkTask || null}
         */
        this.ExtractTraceWatermarkTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ExtractCopyRightWatermarkTask || null}
         */
        this.ExtractCopyRightWatermarkTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ReviewAudioVideoTask || null}
         */
        this.ReviewAudioVideoTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ReduceMediaBitrateTask || null}
         */
        this.ReduceMediaBitrateTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {DescribeFileAttributesTask || null}
         */
        this.DescribeFileAttributesTask = null;

        /**
         * 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {QualityInspectTask || null}
         */
        this.QualityInspectTask = null;

        /**
         * Media Quality Enhance task information. This field has a value only when TaskType is QualityEnhance.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {QualityEnhanceTask || null}
         */
        this.QualityEnhanceTask = null;

        /**
         * Complex adaptive bitrate streaming processing task information. This field has a value only when TaskType is ComplexAdaptiveDynamicStreaming. 
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ComplexAdaptiveDynamicStreamingTask || null}
         */
        this.ComplexAdaptiveDynamicStreamingTask = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskType = 'TaskType' in params ? params.TaskType : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

        if (params.ProcedureTask) {
            let obj = new ProcedureTask();
            obj.deserialize(params.ProcedureTask)
            this.ProcedureTask = obj;
        }

        if (params.EditMediaTask) {
            let obj = new EditMediaTask();
            obj.deserialize(params.EditMediaTask)
            this.EditMediaTask = obj;
        }

        if (params.WechatPublishTask) {
            let obj = new WechatPublishTask();
            obj.deserialize(params.WechatPublishTask)
            this.WechatPublishTask = obj;
        }

        if (params.ComposeMediaTask) {
            let obj = new ComposeMediaTask();
            obj.deserialize(params.ComposeMediaTask)
            this.ComposeMediaTask = obj;
        }

        if (params.SplitMediaTask) {
            let obj = new SplitMediaTask();
            obj.deserialize(params.SplitMediaTask)
            this.SplitMediaTask = obj;
        }

        if (params.WechatMiniProgramPublishTask) {
            let obj = new WechatMiniProgramPublishTask();
            obj.deserialize(params.WechatMiniProgramPublishTask)
            this.WechatMiniProgramPublishTask = obj;
        }

        if (params.PullUploadTask) {
            let obj = new PullUploadTask();
            obj.deserialize(params.PullUploadTask)
            this.PullUploadTask = obj;
        }

        if (params.TranscodeTask) {
            let obj = new TranscodeTask2017();
            obj.deserialize(params.TranscodeTask)
            this.TranscodeTask = obj;
        }

        if (params.ConcatTask) {
            let obj = new ConcatTask2017();
            obj.deserialize(params.ConcatTask)
            this.ConcatTask = obj;
        }

        if (params.ClipTask) {
            let obj = new ClipTask2017();
            obj.deserialize(params.ClipTask)
            this.ClipTask = obj;
        }

        if (params.CreateImageSpriteTask) {
            let obj = new CreateImageSpriteTask2017();
            obj.deserialize(params.CreateImageSpriteTask)
            this.CreateImageSpriteTask = obj;
        }

        if (params.SnapshotByTimeOffsetTask) {
            let obj = new SnapshotByTimeOffsetTask2017();
            obj.deserialize(params.SnapshotByTimeOffsetTask)
            this.SnapshotByTimeOffsetTask = obj;
        }

        if (params.RemoveWatermarkTask) {
            let obj = new RemoveWatermarkTask();
            obj.deserialize(params.RemoveWatermarkTask)
            this.RemoveWatermarkTask = obj;
        }

        if (params.RebuildMediaTask) {
            let obj = new RebuildMediaTask();
            obj.deserialize(params.RebuildMediaTask)
            this.RebuildMediaTask = obj;
        }

        if (params.ExtractTraceWatermarkTask) {
            let obj = new ExtractTraceWatermarkTask();
            obj.deserialize(params.ExtractTraceWatermarkTask)
            this.ExtractTraceWatermarkTask = obj;
        }

        if (params.ExtractCopyRightWatermarkTask) {
            let obj = new ExtractCopyRightWatermarkTask();
            obj.deserialize(params.ExtractCopyRightWatermarkTask)
            this.ExtractCopyRightWatermarkTask = obj;
        }

        if (params.ReviewAudioVideoTask) {
            let obj = new ReviewAudioVideoTask();
            obj.deserialize(params.ReviewAudioVideoTask)
            this.ReviewAudioVideoTask = obj;
        }

        if (params.ReduceMediaBitrateTask) {
            let obj = new ReduceMediaBitrateTask();
            obj.deserialize(params.ReduceMediaBitrateTask)
            this.ReduceMediaBitrateTask = obj;
        }

        if (params.DescribeFileAttributesTask) {
            let obj = new DescribeFileAttributesTask();
            obj.deserialize(params.DescribeFileAttributesTask)
            this.DescribeFileAttributesTask = obj;
        }

        if (params.QualityInspectTask) {
            let obj = new QualityInspectTask();
            obj.deserialize(params.QualityInspectTask)
            this.QualityInspectTask = obj;
        }

        if (params.QualityEnhanceTask) {
            let obj = new QualityEnhanceTask();
            obj.deserialize(params.QualityEnhanceTask)
            this.QualityEnhanceTask = obj;
        }

        if (params.ComplexAdaptiveDynamicStreamingTask) {
            let obj = new ComplexAdaptiveDynamicStreamingTask();
            obj.deserialize(params.ComplexAdaptiveDynamicStreamingTask)
            this.ComplexAdaptiveDynamicStreamingTask = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Video timestamp information
 * @class
 */
class MediaKeyFrameDescInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information array of video timestamps.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaKeyFrameDescItem> || null}
         */
        this.KeyFrameDescSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.KeyFrameDescSet) {
            this.KeyFrameDescSet = new Array();
            for (let z in params.KeyFrameDescSet) {
                let obj = new MediaKeyFrameDescItem();
                obj.deserialize(params.KeyFrameDescSet[z]);
                this.KeyFrameDescSet.push(obj);
            }
        }

    }
}

/**
 * DeleteImageSpriteTemplate request structure.
 * @class
 */
class DeleteImageSpriteTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an image sprite generating template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * CreateClass request structure.
 * @class
 */
class CreateClassRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parent category ID. For a first-level category, enter `-1`.
         * @type {number || null}
         */
        this.ParentId = null;

        /**
         * Category name. Length limit: 1-64 characters.
         * @type {string || null}
         */
        this.ClassName = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ParentId = 'ParentId' in params ? params.ParentId : null;
        this.ClassName = 'ClassName' in params ? params.ClassName : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * AI-based sample management - face information failed to be processed.
 * @class
 */
class AiSampleFailFaceInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * It corresponds to incorrect image subscripts in the `FaceContents` input parameter, starting from 0.
         * @type {number || null}
         */
        this.Index = null;

        /**
         * Error code. Valid values:
<li>0: success;</li>
<li>Other values: failure.</li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Index = 'Index' in params ? params.Index : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

    }
}

/**
 * Parameters for custom facial recognition
 * @class
 */
class UserDefineFaceReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable custom facial recognition. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for custom facial recognition. Results containing the specified labels are returned. If no labels are specified, all results are returned. To filter by labels, specify the labels when adding custom facial libraries.
Up to 10 labels are allowed, each containing no more than 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * ModifyRoundPlay response structure.
 * @class
 */
class ModifyRoundPlayResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateProcedureTemplate response structure.
 * @class
 */
class CreateProcedureTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Back to the source 301/302 status code automatically follows the configuration, the default is off
 * @class
 */
class FollowRedirect extends  AbstractModel {
    constructor(){
        super();

        /**
         * Back-to-origin follow configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * RebuildMedia response structure.
 * @class
 */
class RebuildMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID of the Enhance Media. You can use this ID to query the status of the EnhanceMedia task.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * HTTPS configuration information of the domain name
 * @class
 */
class DomainHTTPSConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Time when the certificate expires
<li>The time is in [ISO 8601 date format](https://intl.cloud.tencent.com/document/product/266/11732).</li>
         * @type {string || null}
         */
        this.CertExpireTime = null;

        /**
         * Certificate ID in Tencent Cloud SSL product.
         * @type {string || null}
         */
        this.CloudCertId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.CertExpireTime = 'CertExpireTime' in params ? params.CertExpireTime : null;
        this.CloudCertId = 'CloudCertId' in params ? params.CloudCertId : null;

    }
}

/**
 * DescribeMediaProcessUsageData response structure.
 * @class
 */
class DescribeMediaProcessUsageDataResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Overview of video processing statistics, which displays the overview and details of queried tasks.
         * @type {Array.<TaskStatData> || null}
         */
        this.MediaProcessDataSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.MediaProcessDataSet) {
            this.MediaProcessDataSet = new Array();
            for (let z in params.MediaProcessDataSet) {
                let obj = new TaskStatData();
                obj.deserialize(params.MediaProcessDataSet[z]);
                this.MediaProcessDataSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSuperPlayerConfigs request structure.
 * @class
 */
class DescribeSuperPlayerConfigsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Player configuration name filter. Array length limit: 100.
         * @type {Array.<string> || null}
         */
        this.Names = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Player configuration type filter. Valid values:
<li>Preset: preset configuration;</li>
<li>Custom: custom configuration.</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Names = 'Names' in params ? params.Names : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * The result of a bitrate reduction task.
 * @class
 */
class ReduceMediaBitrateMediaProcessTaskResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task type. Valid values:
<li>Transcode</li>
<li>AdaptiveDynamicStreaming</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The result of a transcoding task. This parameter is valid if `Type` is `Transcode`.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ReduceMediaBitrateTranscodeResult || null}
         */
        this.TranscodeTask = null;

        /**
         * The result of an adaptive bitrate task. This parameter is valid if `Type` is `AdaptiveDynamicStreaming`.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ReduceMediaBitrateAdaptiveDynamicStreamingResult || null}
         */
        this.AdaptiveDynamicStreamingTask = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.TranscodeTask) {
            let obj = new ReduceMediaBitrateTranscodeResult();
            obj.deserialize(params.TranscodeTask)
            this.TranscodeTask = obj;
        }

        if (params.AdaptiveDynamicStreamingTask) {
            let obj = new ReduceMediaBitrateAdaptiveDynamicStreamingResult();
            obj.deserialize(params.AdaptiveDynamicStreamingTask)
            this.AdaptiveDynamicStreamingTask = obj;
        }

    }
}

/**
 * Input of full text recognition.
 * @class
 */
class AiRecognitionTaskOcrFullTextResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Full text recognition template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Information of video splitting output files.
 * @class
 */
class SplitMediaOutputConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of an output file. This parameter can contain up to 64 characters, and will be generated by the system if it is left empty.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * Output file format. Valid values: mp4 (default), hls.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Category ID, which is used to categorize the media file for management. You can use [CreateClass](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API to create a category and get the category ID.
<li>Default value: 0, which means other categories.</li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Expiration time of an output file. After passing the expiration time, the file will be deleted. There is no expiration time set for a file by default. The time is in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.ExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

    }
}

/**
 * CreateVodDomain response structure.
 * @class
 */
class CreateVodDomainResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyVodDomainAccelerateConfig response structure.
 * @class
 */
class ModifyVodDomainAccelerateConfigResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Input of video splitting.
 * @class
 */
class AiRecognitionTaskSegmentResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video splitting template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Access protocol forced redirect configuration. This is disabled by default.
 * @class
 */
class ForceRedirect extends  AbstractModel {
    constructor(){
        super();

        /**
         * Access forced jump configuration switch, value: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Access forced jump type: <li>http: forced http jump</li> <li>https: forced https jump</li>
         * @type {string || null}
         */
        this.RedirectType = null;

        /**
         * Status code returned for forced redirect Supports 301, 302.
         * @type {number || null}
         */
        this.RedirectStatusCode = null;

        /**
         * Whether to return the newly added header during force redirection.
         * @type {string || null}
         */
        this.CarryHeaders = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.RedirectType = 'RedirectType' in params ? params.RedirectType : null;
        this.RedirectStatusCode = 'RedirectStatusCode' in params ? params.RedirectStatusCode : null;
        this.CarryHeaders = 'CarryHeaders' in params ? params.CarryHeaders : null;

    }
}

/**
 * ModifyHeadTailTemplate request structure.
 * @class
 */
class ModifyHeadTailTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * HeadTail template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Template name, length limit is 64 characters. Not passing means not modifying.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description, limited to 256 characters. Passing nothing means no modification, passing empty means clearing it.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Title candidate list, fill in the FileId of the video. When transcoding, the title closest to the aspect ratio of the feature film will be automatically selected (when the aspect ratio is the same, the front candidate will take precedence). Supports up to 5 candidate titles. Not passing it means no modification, passing an empty array means clearing it.
         * @type {Array.<string> || null}
         */
        this.HeadCandidateSet = null;

        /**
         * Ending candidate list, fill in the FileId of the video. When transcoding, the ending with the aspect ratio closest to the feature film will be automatically selected (when the aspect ratio is the same, the front candidate will take precedence). Supports up to 5 candidate titles. Not passing it means no modification, passing an empty array means clearing it.
         * @type {Array.<string> || null}
         */
        this.TailCandidateSet = null;

        /**
         * Padding method. When the video stream configuration width and height parameters are inconsistent with the aspect ratio of the original video, the transcoding processing method is "padding". Optional filling method:
<li> stretch: stretch, stretch each frame to fill the entire screen, which may cause the transcoded video to be "squashed" or "stretched";</li> 
<li> gauss: Gaussian blur, keep the video aspect ratio unchanged, use Gaussian blur for the remaining edges; </li>
<li> white: leave blank, keep the video aspect ratio unchanged, use the remaining edges for the edge Use white filling; </li>
<li> black: Leave black, keep the video aspect ratio unchanged, and fill the remaining edges with black. </li>
The default value is not to be modified.
         * @type {string || null}
         */
        this.FillType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.HeadCandidateSet = 'HeadCandidateSet' in params ? params.HeadCandidateSet : null;
        this.TailCandidateSet = 'TailCandidateSet' in params ? params.TailCandidateSet : null;
        this.FillType = 'FillType' in params ? params.FillType : null;

    }
}

/**
 * DescribeTasks response structure.
 * @class
 */
class DescribeTasksResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task overview list.
         * @type {Array.<TaskSimpleInfo> || null}
         */
        this.TaskSet = null;

        /**
         * Scrolling identifier. If a request does not return all the data entries, this field indicates the ID of the next entry. If this field is empty, there is no more data.
         * @type {string || null}
         */
        this.ScrollToken = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.TaskSet) {
            this.TaskSet = new Array();
            for (let z in params.TaskSet) {
                let obj = new TaskSimpleInfo();
                obj.deserialize(params.TaskSet[z]);
                this.TaskSet.push(obj);
            }
        }
        this.ScrollToken = 'ScrollToken' in params ? params.ScrollToken : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeSubAppIds request structure.
 * @class
 */
class DescribeSubAppIdsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Subapplication name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Tag information. You can query the list of subapplications with specified tags.
         * @type {Array.<ResourceTag> || null}
         */
        this.Tags = null;

        /**
         * Page number offset from the beginning of paginated queries. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Maximum return results of pulling paginated queries. Default: 200; maximum: 200.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;

        if (params.Tags) {
            this.Tags = new Array();
            for (let z in params.Tags) {
                let obj = new ResourceTag();
                obj.deserialize(params.Tags[z]);
                this.Tags.push(obj);
            }
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Face recognition input.
 * @class
 */
class AiRecognitionTaskFaceResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Face recognition template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * The parameters for the output file of a remaster task.
 * @class
 */
class RebuildMediaOutputConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * The filename. This parameter can contain up to 64 characters, and will be generated by the system if it is left empty.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * The ID of the file's category. You can use the [CreateClass](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API to create a category and get the category ID.
<li>The default value is `0`, which means the "Other" category.</li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The expiration time of the output file, in [ISO date format](https://www.tencentcloud.com/document/product/266/11732?lang=en&pg=). The file will be deleted after the specified expiration time. By default, the file will never expire.
         * @type {string || null}
         */
        this.ExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

    }
}

/**
 * Output for intelligent recognition of politically sensitive content
 * @class
 */
class AiReviewPoliticalTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence score for the detected politically sensitive content. Value range: 0-100
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the detected politically sensitive content
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * Labels for the detected politically sensitive content. The relationship between the values of this parameter and those of the `LabelSet` parameter in [PoliticalImgReviewTemplateInfo](https://intl.cloud.tencent.com/document/api/266/31773?from_cn_redirect=1#PoliticalImgReviewTemplateInfo) is as follows:
violation_photo:
<li>`violation_photo`: banned images</li>
Other values (politician/entertainment/sport/entrepreneur/scholar/celebrity/military):
<li>`politician`: politically sensitive people</li>
         * @type {string || null}
         */
        this.Label = null;

        /**
         * List of video segments that contain detected politically sensitive content
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewPoliticalSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain detected politically sensitive content. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain politically sensitive content, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.Label = 'Label' in params ? params.Label : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewPoliticalSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * Result for intelligent recognition of politically sensitive content
 * @class
 */
class AiReviewTaskPoliticalResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for intelligent recognition of politically sensitive content
         * @type {AiReviewPoliticalTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for intelligent recognition of politically sensitive content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewPoliticalTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a moderation task (politically sensitive content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewPoliticalTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewPoliticalTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * ModifySubAppIdStatus response structure.
 * @class
 */
class ModifySubAppIdStatusResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ReviewImage response structure.
 * @class
 */
class ReviewImageResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The image moderation result. <font color=red>Note: This parameter is no longer used. Please use `MediaReviewResult` instead.</font>
         * @type {Array.<ContentReviewResult> || null}
         */
        this.ReviewResultSet = null;

        /**
         * The image moderation result.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ReviewImageResult || null}
         */
        this.MediaReviewResult = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ReviewResultSet) {
            this.ReviewResultSet = new Array();
            for (let z in params.ReviewResultSet) {
                let obj = new ContentReviewResult();
                obj.deserialize(params.ReviewResultSet[z]);
                this.ReviewResultSet.push(obj);
            }
        }

        if (params.MediaReviewResult) {
            let obj = new ReviewImageResult();
            obj.deserialize(params.MediaReviewResult)
            this.MediaReviewResult = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeStorageRegions response structure.
 * @class
 */
class DescribeStorageRegionsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The information of the storage regions.
         * @type {Array.<StorageRegionInfo> || null}
         */
        this.StorageRegionInfos = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.StorageRegionInfos) {
            this.StorageRegionInfos = new Array();
            for (let z in params.StorageRegionInfos) {
                let obj = new StorageRegionInfo();
                obj.deserialize(params.StorageRegionInfos[z]);
                this.StorageRegionInfos.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Details of a sampled screencapturing template
 * @class
 */
class SampleSnapshotTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a sampled screencapturing template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Template type. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Name of a sampled screencapturing template.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Maximum value of the width (or long side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Image format.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Sampled screencapturing type.
         * @type {string || null}
         */
        this.SampleType = null;

        /**
         * Sampling interval.
         * @type {number || null}
         */
        this.SampleInterval = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * The fill mode, or the way of processing a screenshot when the configured aspect ratio is different from that of the source video. Valid values:
<li>stretch: Stretch the image frame by frame to fill the entire screen. The video image may become "squashed" or "stretched" after transcoding.</li>
<li>black: Keep the image's original aspect ratio and fill the blank space with black bars.</li>
<li>white: Keep the image’s original aspect ratio and fill the blank space with white bars.</li>
<li>gauss: Keep the image’s original aspect ratio and apply Gaussian blur to the blank space.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.SampleType = 'SampleType' in params ? params.SampleType : null;
        this.SampleInterval = 'SampleInterval' in params ? params.SampleInterval : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FillType = 'FillType' in params ? params.FillType : null;

    }
}

/**
 * ModifySnapshotByTimeOffsetTemplate request structure.
 * @class
 */
class ModifySnapshotByTimeOffsetTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a specified time point screencapturing template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of a time point screencapturing template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Maximum value of the width (or long side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Image format. Valid values: jpg, png.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Fill type. "Fill" refers to the way of processing a screenshot when its aspect ratio is different from that of the source video. The following fill types are supported:
<li> stretch: stretch. The screenshot will be stretched frame by frame to match the aspect ratio of the source video, which may make the screenshot "shorter" or "longer";</li>
<li>black: fill with black. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with black color blocks.</li>
<li>white: fill with white. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with white color blocks.</li>
<li>gauss: fill with Gaussian blur. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with Gaussian blur.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.FillType = 'FillType' in params ? params.FillType : null;

    }
}

/**
 * Video processing task information
 * @class
 */
class ProcedureTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video processing task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task flow status. Valid values:
<li>PROCESSING: processing;</li>
<li>FINISH: completed.</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Disused. Please use `ErrCode` of each specific task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Disused. Please use `Message` of each specific task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Media file ID.
<li>If the task flow is initiated by [ProcessMedia](https://cloud.tencent.com/document/product/266/33427), this field means the `FileId` in [MediaInfo](https://cloud.tencent.com/document/product/266/31773#MediaInfo);</li>
<li>If the task flow is initiated by [ProcessMediaByUrl](https://cloud.tencent.com/document/product/266/33426), this field means the `Id` in [MediaInputInfo](https://cloud.tencent.com/document/product/266/31773#MediaInputInfo).</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Media filename
<li>If the task flow is initiated by [ProcessMedia](https://cloud.tencent.com/document/product/266/33427), this field means the `BasicInfo.Name` in [MediaInfo](https://cloud.tencent.com/document/product/266/31773#MediaInfo);</li>
<li>If the task flow is initiated by [ProcessMediaByUrl](https://cloud.tencent.com/document/product/266/33426), this field means the `Name` in [MediaInputInfo](https://cloud.tencent.com/document/product/266/31773#MediaInputInfo).</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Media file address
<li>If the task flow is initiated by [ProcessMedia](https://cloud.tencent.com/document/product/266/33427), this field means the `BasicInfo.MediaUrl` in [MediaInfo](https://cloud.tencent.com/document/product/266/31773#MediaInfo);</li>
<li>If the task flow is initiated by [ProcessMediaByUrl](https://cloud.tencent.com/document/product/266/33426), this field means the `Url` in [MediaInputInfo](https://cloud.tencent.com/document/product/266/31773#MediaInputInfo).</li>
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * Source video metadata.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * Execution status and result of video processing task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaProcessTaskResult> || null}
         */
        this.MediaProcessResultSet = null;

        /**
         * Status and result of an intelligent recognition task
         * @type {Array.<AiContentReviewResult> || null}
         */
        this.AiContentReviewResultSet = null;

        /**
         * Execution status and result of video content analysis task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AiAnalysisResult> || null}
         */
        this.AiAnalysisResultSet = null;

        /**
         * Execution status and result of video content recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AiRecognitionResult> || null}
         */
        this.AiRecognitionResultSet = null;

        /**
         * Task flow priority. Value range: [-10, 10].
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * Notification mode for change in task flow status.
<li>Finish: an event notification will be initiated only after the task flow is completely executed;</li>
<li>Change: an event notification will be initiated as soon as the status of a subtask in the task flow changes; </li>
<li>None: no callback for the task flow will be accepted.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.TasksNotifyMode = null;

        /**
         * The source context which is used to pass through the user request information. The task flow status change callback will return the value of this field. It can contain up to 1,000 characters.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The ID used for deduplication. If there was a request with the same ID in the last seven days, the current request will return an error. The ID can contain up to 50 characters. If this parameter is left empty or a blank string is entered, no deduplication will be performed.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The operator. Valid values:
<li>`SYSTEM`: The task is triggered by the system.</li>
         * @type {string || null}
         */
        this.Operator = null;

        /**
         * The operation type. Valid values:
<li>`TSC`: TSC-based smart bitrate reduction</li>
         * @type {string || null}
         */
        this.OperationType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }

        if (params.MediaProcessResultSet) {
            this.MediaProcessResultSet = new Array();
            for (let z in params.MediaProcessResultSet) {
                let obj = new MediaProcessTaskResult();
                obj.deserialize(params.MediaProcessResultSet[z]);
                this.MediaProcessResultSet.push(obj);
            }
        }

        if (params.AiContentReviewResultSet) {
            this.AiContentReviewResultSet = new Array();
            for (let z in params.AiContentReviewResultSet) {
                let obj = new AiContentReviewResult();
                obj.deserialize(params.AiContentReviewResultSet[z]);
                this.AiContentReviewResultSet.push(obj);
            }
        }

        if (params.AiAnalysisResultSet) {
            this.AiAnalysisResultSet = new Array();
            for (let z in params.AiAnalysisResultSet) {
                let obj = new AiAnalysisResult();
                obj.deserialize(params.AiAnalysisResultSet[z]);
                this.AiAnalysisResultSet.push(obj);
            }
        }

        if (params.AiRecognitionResultSet) {
            this.AiRecognitionResultSet = new Array();
            for (let z in params.AiRecognitionResultSet) {
                let obj = new AiRecognitionResult();
                obj.deserialize(params.AiRecognitionResultSet[z]);
                this.AiRecognitionResultSet.push(obj);
            }
        }
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.TasksNotifyMode = 'TasksNotifyMode' in params ? params.TasksNotifyMode : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.Operator = 'Operator' in params ? params.Operator : null;
        this.OperationType = 'OperationType' in params ? params.OperationType : null;

    }
}

/**
 * ExtractTraceWatermark request structure.
 * @class
 */
class ExtractTraceWatermarkRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The URL of the media on which digital watermark extraction is to be performed.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * The ID of the file specified by `Url`.
<li><font color=red>Note</font>: This parameter is required.</li>
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The source context, which is used to pass through user request information. The `ExtractTraceWatermarkComplete` callback and the `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last three days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The task priority, which can be a value from -10 to 10. The higher the value, the higher the priority. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * A reserved parameter.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * CDN Domain Config
 * @class
 */
class CDNDomainConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name acceleration areas: <li>mainland: acceleration within China; </li> <li>overseas: acceleration outside China; </li> <li>global: global acceleration. </li>
         * @type {string || null}
         */
        this.Area = null;

        /**
         * Origin Server Configuration
         * @type {Origin || null}
         */
        this.Origin = null;

        /**
         * IP blocklist/allowlist configuration. This is disabled by default.
         * @type {IpFilter || null}
         */
        this.IpFilter = null;

        /**
         * UserAgent:blacklist/whitelist configuration.
         * @type {UserAgentFilter || null}
         */
        this.UserAgentFilter = null;

        /**
         * Back to the source 301/302 status code automatically follows the configuration, the default is off
         * @type {FollowRedirect || null}
         */
        this.FollowRedirect = null;

        /**
         * Custom request header configuration. This is disabled by default.
         * @type {RequestHeader || null}
         */
        this.RequestHeader = null;

        /**
         * Custom response header configuration. This is disabled by default.
         * @type {ResponseHeader || null}
         */
        this.ResponseHeader = null;

        /**
         * Node cache expiration time configuration.
         * @type {Cache || null}
         */
        this.Cache = null;

        /**
         * Domain name HTTPS acceleration configuration. This is disabled by default.
         * @type {Https || null}
         */
        this.Https = null;

        /**
         * Timestamp hotlink protection configuration.
         * @type {Authentication || null}
         */
        this.Authentication = null;

        /**
         * Access protocol forced redirect configuration. This is disabled by default.
         * @type {ForceRedirect || null}
         */
        this.ForceRedirect = null;

        /**
         * Referer blacklist/whitelist configuration. This is disabled by default.
         * @type {Referer || null}
         */
        this.Referer = null;

        /**
         * Browser cache rule configuration, which is used to set the default value of MaxAge and is disabled by default.
         * @type {MaxAge || null}
         */
        this.MaxAge = null;

        /**
         * IPv6 access configuration.
         * @type {Ipv6Access || null}
         */
        this.Ipv6Access = null;

        /**
         * QUIC configuration item.
         * @type {Quic || null}
         */
        this.Quic = null;

        /**
         * Origin access authentication for S3 bucket.
         * @type {AwsPrivateAccess || null}
         */
        this.AwsPrivateAccess = null;

        /**
         * Access authentication configuration for OSS origin.
         * @type {OssPrivateAccess || null}
         */
        this.OssPrivateAccess = null;

        /**
         * Access authentication for Huawei Cloud OBS origin
         * @type {HwPrivateAccess || null}
         */
        this.HwPrivateAccess = null;

        /**
         * Origin-pull authentication for other origins.
         * @type {OthersPrivateAccess || null}
         */
        this.OthersPrivateAccess = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Area = 'Area' in params ? params.Area : null;

        if (params.Origin) {
            let obj = new Origin();
            obj.deserialize(params.Origin)
            this.Origin = obj;
        }

        if (params.IpFilter) {
            let obj = new IpFilter();
            obj.deserialize(params.IpFilter)
            this.IpFilter = obj;
        }

        if (params.UserAgentFilter) {
            let obj = new UserAgentFilter();
            obj.deserialize(params.UserAgentFilter)
            this.UserAgentFilter = obj;
        }

        if (params.FollowRedirect) {
            let obj = new FollowRedirect();
            obj.deserialize(params.FollowRedirect)
            this.FollowRedirect = obj;
        }

        if (params.RequestHeader) {
            let obj = new RequestHeader();
            obj.deserialize(params.RequestHeader)
            this.RequestHeader = obj;
        }

        if (params.ResponseHeader) {
            let obj = new ResponseHeader();
            obj.deserialize(params.ResponseHeader)
            this.ResponseHeader = obj;
        }

        if (params.Cache) {
            let obj = new Cache();
            obj.deserialize(params.Cache)
            this.Cache = obj;
        }

        if (params.Https) {
            let obj = new Https();
            obj.deserialize(params.Https)
            this.Https = obj;
        }

        if (params.Authentication) {
            let obj = new Authentication();
            obj.deserialize(params.Authentication)
            this.Authentication = obj;
        }

        if (params.ForceRedirect) {
            let obj = new ForceRedirect();
            obj.deserialize(params.ForceRedirect)
            this.ForceRedirect = obj;
        }

        if (params.Referer) {
            let obj = new Referer();
            obj.deserialize(params.Referer)
            this.Referer = obj;
        }

        if (params.MaxAge) {
            let obj = new MaxAge();
            obj.deserialize(params.MaxAge)
            this.MaxAge = obj;
        }

        if (params.Ipv6Access) {
            let obj = new Ipv6Access();
            obj.deserialize(params.Ipv6Access)
            this.Ipv6Access = obj;
        }

        if (params.Quic) {
            let obj = new Quic();
            obj.deserialize(params.Quic)
            this.Quic = obj;
        }

        if (params.AwsPrivateAccess) {
            let obj = new AwsPrivateAccess();
            obj.deserialize(params.AwsPrivateAccess)
            this.AwsPrivateAccess = obj;
        }

        if (params.OssPrivateAccess) {
            let obj = new OssPrivateAccess();
            obj.deserialize(params.OssPrivateAccess)
            this.OssPrivateAccess = obj;
        }

        if (params.HwPrivateAccess) {
            let obj = new HwPrivateAccess();
            obj.deserialize(params.HwPrivateAccess)
            this.HwPrivateAccess = obj;
        }

        if (params.OthersPrivateAccess) {
            let obj = new OthersPrivateAccess();
            obj.deserialize(params.OthersPrivateAccess)
            this.OthersPrivateAccess = obj;
        }

    }
}

/**
 * Task overview information
 * @class
 */
class TaskSimpleInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task status. Valid values: `WAITING` (waiting), `PROCESSING` (processing), `FINISH` (completed)
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Video ID
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The task type. Valid values:
<li>`Procedure`: Video processing</li>
<li>`EditMedia`: Video editing</li>
<li>`ReduceMediaBitrate`: Bitrate reduction</li>
<li>`WechatDistribute`: Publishing to Weixin</li>
<li> `ReviewAudioVideo`: Moderation</li>
Task types for v2017:
<li>`Transcode`: Transcoding</li>
<li>`SnapshotByTimeOffset`: Screencapturing</li>
<li>`Concat`: Video splicing</li>
<li>`Clip`: Video clipping</li>
<li>`ImageSprites`: Image sprite generating</li>
         * @type {string || null}
         */
        this.TaskType = null;

        /**
         * Creation time of task in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Start time of task execution in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). If the task has not been started yet, this field will be empty.
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * End time of task in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I). If the task has not been completed yet, this field will be empty.
         * @type {string || null}
         */
        this.FinishTime = null;

        /**
         * ID used for deduplication if there was a request with the same ID in the last seven days.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Source context, which is used to pass through the user request information.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.TaskType = 'TaskType' in params ? params.TaskType : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * The information of a moderation task.
 * @class
 */
class ReviewAudioVideoTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The task status. Valid values:
<li>PROCESSING</li>
<li>FINISH</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The error code. An empty string indicates the task is successful; other values indicate that the task failed. For details, see [Video processing error codes](https://intl.cloud.tencent.com/document/product/266/39145?lang=en&pg=#video-processing).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * The error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The input of a moderation task.
Note: This field may return `null`, indicating that no valid values can be obtained.
         * @type {ReviewAudioVideoTaskInput || null}
         */
        this.Input = null;

        /**
         * The output of a moderation task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ReviewAudioVideoTaskOutput || null}
         */
        this.Output = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last seven days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ReviewAudioVideoComplete` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new ReviewAudioVideoTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new ReviewAudioVideoTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * DescribeSnapshotByTimeOffsetTemplates response structure.
 * @class
 */
class DescribeSnapshotByTimeOffsetTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of time point screencapturing template details.
         * @type {Array.<SnapshotByTimeOffsetTemplate> || null}
         */
        this.SnapshotByTimeOffsetTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.SnapshotByTimeOffsetTemplateSet) {
            this.SnapshotByTimeOffsetTemplateSet = new Array();
            for (let z in params.SnapshotByTimeOffsetTemplateSet) {
                let obj = new SnapshotByTimeOffsetTemplate();
                obj.deserialize(params.SnapshotByTimeOffsetTemplateSet[z]);
                this.SnapshotByTimeOffsetTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The QUIC configuration of a domain.
 * @class
 */
class DomainQUICConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * The QUIC status. Valid values:
<li>`Enabled`</li>
<li>`Disabled`</li>
         * @type {string || null}
         */
        this.Status = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;

    }
}

/**
 * SetDrmKeyProviderInfo request structure.
 * @class
 */
class SetDrmKeyProviderInfoRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The DRM key information provided by SDMC.
         * @type {SDMCDrmKeyProviderInfo || null}
         */
        this.SDMCInfo = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.SDMCInfo) {
            let obj = new SDMCDrmKeyProviderInfo();
            obj.deserialize(params.SDMCInfo)
            this.SDMCInfo = obj;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Details of a specified time point screencapturing template
 * @class
 */
class SnapshotByTimeOffsetTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a specified time point screencapturing template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Template type. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Name of a specified time point screencapturing template.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Maximum value of the width (or long side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Image format.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Creation time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Last modified time of template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

        /**
         * The fill mode, or the way of processing a screenshot when the configured aspect ratio is different from that of the source video. Valid values:
<li>stretch: Stretch the image frame by frame to fill the entire screen. The video image may become "squashed" or "stretched" after transcoding.</li>
<li>black: Keep the image's original aspect ratio and fill the blank space with black bars.</li>
<li>white: Keep the image’s original aspect ratio and fill the blank space with white bars.</li>
<li>gauss: Keep the image’s original aspect ratio and apply Gaussian blur to the blank space.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;
        this.FillType = 'FillType' in params ? params.FillType : null;

    }
}

/**
 * DeleteSnapshotByTimeOffsetTemplate response structure.
 * @class
 */
class DeleteSnapshotByTimeOffsetTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameter of prohibited information detection in text task
 * @class
 */
class ProhibitedOcrReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of prohibited information detection in text task. Valid values:
<li>ON: enables prohibited information detection in text task;</li>
<li>OFF: disables prohibited information detection in text task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * DescribeVodDomains request structure.
 * @class
 */
class DescribeVodDomainsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name list. When this field is left blank, all domain name information will be listed by default. The limitations of this field are as follows:
<li>The maximum number of domain names is 20. </li>
         * @type {Array.<string> || null}
         */
        this.Domains = null;

        /**
         * Maximum results to return for pulling paginated queries. Default value: 20
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Page number offset from the beginning of paginated queries. Default value: 0
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Domains = 'Domains' in params ? params.Domains : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DescribeTasks request structure.
 * @class
 */
class DescribeTasksRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Filter: Task status. Valid values: WAITING (waiting), PROCESSING (processing), FINISH (completed).
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Filter: file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Filter: task creation time.
         * @type {TimeRange || null}
         */
        this.CreateTime = null;

        /**
         * Filter: task end time.
         * @type {TimeRange || null}
         */
        this.FinishTime = null;

        /**
         * Sort field. Valid values:
<li>`CreateTime`: task creation time</li>
<li>`FinishTime`: task end time</li>
         * @type {SortBy || null}
         */
        this.Sort = null;

        /**
         * Number of entries to be returned. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * Scrolling identifier which is used for pulling in batches. If a single request cannot pull all the data entries, the API will return `ScrollToken`, and if the next request carries it, the next pull will start from the next entry.
         * @type {string || null}
         */
        this.ScrollToken = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.CreateTime) {
            let obj = new TimeRange();
            obj.deserialize(params.CreateTime)
            this.CreateTime = obj;
        }

        if (params.FinishTime) {
            let obj = new TimeRange();
            obj.deserialize(params.FinishTime)
            this.FinishTime = obj;
        }

        if (params.Sort) {
            let obj = new SortBy();
            obj.deserialize(params.Sort)
            this.Sort = obj;
        }
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.ScrollToken = 'ScrollToken' in params ? params.ScrollToken : null;

    }
}

/**
 * DescribeReviewDetails response structure.
 * @class
 */
class DescribeReviewDetailsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Times of initiating intelligent content recognition tasks.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Duration of intelligent recognition content.
         * @type {number || null}
         */
        this.TotalDuration = null;

        /**
         * Data of intelligent recognition content duration. One piece of data is collected every day.
         * @type {Array.<StatDataItem> || null}
         */
        this.Data = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.TotalDuration = 'TotalDuration' in params ? params.TotalDuration : null;

        if (params.Data) {
            this.Data = new Array();
            for (let z in params.Data) {
                let obj = new StatDataItem();
                obj.deserialize(params.Data[z]);
                this.Data.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateTranscodeTemplate response structure.
 * @class
 */
class CreateTranscodeTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of transcoding template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CDN domain config for update
 * @class
 */
class CDNDomainConfigForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain name acceleration areas: <li>mainland: acceleration within China; </li> <li>overseas: acceleration outside China; </li> <li>global: global acceleration. </li>
         * @type {string || null}
         */
        this.Area = null;

        /**
         * Origin Server Configuration.
         * @type {Origin || null}
         */
        this.Origin = null;

        /**
         * IP blocklist/allowlist configuration. This is disabled by default.
         * @type {IpFilter || null}
         */
        this.IpFilter = null;

        /**
         * UserAgent:blacklist/whitelist configuration.
         * @type {UserAgentFilter || null}
         */
        this.UserAgentFilter = null;

        /**
         * Back to the source 301/302 status code automatically follows the configuration, the default is off
         * @type {FollowRedirect || null}
         */
        this.FollowRedirect = null;

        /**
         * Custom request header configuration. This is disabled by default.
         * @type {RequestHeader || null}
         */
        this.RequestHeader = null;

        /**
         * Custom response header configuration. This is disabled by default.
         * @type {ResponseHeader || null}
         */
        this.ResponseHeader = null;

        /**
         * Node cache expiration time configuration.
         * @type {Cache || null}
         */
        this.Cache = null;

        /**
         * Domain name HTTPS acceleration configuration. This is disabled by default.
         * @type {Https || null}
         */
        this.Https = null;

        /**
         * Timestamp hotlink protection configuration.
         * @type {Authentication || null}
         */
        this.Authentication = null;

        /**
         * Access protocol forced redirect configuration. This is disabled by default.
         * @type {ForceRedirect || null}
         */
        this.ForceRedirect = null;

        /**
         * Referer blacklist/whitelist configuration. This is disabled by default.
         * @type {Referer || null}
         */
        this.Referer = null;

        /**
         * Browser cache rule configuration, which is used to set the default value of MaxAge and is disabled by default.
         * @type {MaxAge || null}
         */
        this.MaxAge = null;

        /**
         * IPv6 access configuration.
         * @type {Ipv6Access || null}
         */
        this.Ipv6Access = null;

        /**
         * QUIC configuration item.
         * @type {Quic || null}
         */
        this.Quic = null;

        /**
         * Origin access authentication for S3 bucket.
         * @type {AwsPrivateAccess || null}
         */
        this.AwsPrivateAccess = null;

        /**
         * Access authentication configuration for OSS origin.
         * @type {OssPrivateAccess || null}
         */
        this.OssPrivateAccess = null;

        /**
         * Access authentication for Huawei Cloud OBS origin
         * @type {HwPrivateAccess || null}
         */
        this.HwPrivateAccess = null;

        /**
         * Origin-pull authentication for other origins.
         * @type {OthersPrivateAccess || null}
         */
        this.OthersPrivateAccess = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Area = 'Area' in params ? params.Area : null;

        if (params.Origin) {
            let obj = new Origin();
            obj.deserialize(params.Origin)
            this.Origin = obj;
        }

        if (params.IpFilter) {
            let obj = new IpFilter();
            obj.deserialize(params.IpFilter)
            this.IpFilter = obj;
        }

        if (params.UserAgentFilter) {
            let obj = new UserAgentFilter();
            obj.deserialize(params.UserAgentFilter)
            this.UserAgentFilter = obj;
        }

        if (params.FollowRedirect) {
            let obj = new FollowRedirect();
            obj.deserialize(params.FollowRedirect)
            this.FollowRedirect = obj;
        }

        if (params.RequestHeader) {
            let obj = new RequestHeader();
            obj.deserialize(params.RequestHeader)
            this.RequestHeader = obj;
        }

        if (params.ResponseHeader) {
            let obj = new ResponseHeader();
            obj.deserialize(params.ResponseHeader)
            this.ResponseHeader = obj;
        }

        if (params.Cache) {
            let obj = new Cache();
            obj.deserialize(params.Cache)
            this.Cache = obj;
        }

        if (params.Https) {
            let obj = new Https();
            obj.deserialize(params.Https)
            this.Https = obj;
        }

        if (params.Authentication) {
            let obj = new Authentication();
            obj.deserialize(params.Authentication)
            this.Authentication = obj;
        }

        if (params.ForceRedirect) {
            let obj = new ForceRedirect();
            obj.deserialize(params.ForceRedirect)
            this.ForceRedirect = obj;
        }

        if (params.Referer) {
            let obj = new Referer();
            obj.deserialize(params.Referer)
            this.Referer = obj;
        }

        if (params.MaxAge) {
            let obj = new MaxAge();
            obj.deserialize(params.MaxAge)
            this.MaxAge = obj;
        }

        if (params.Ipv6Access) {
            let obj = new Ipv6Access();
            obj.deserialize(params.Ipv6Access)
            this.Ipv6Access = obj;
        }

        if (params.Quic) {
            let obj = new Quic();
            obj.deserialize(params.Quic)
            this.Quic = obj;
        }

        if (params.AwsPrivateAccess) {
            let obj = new AwsPrivateAccess();
            obj.deserialize(params.AwsPrivateAccess)
            this.AwsPrivateAccess = obj;
        }

        if (params.OssPrivateAccess) {
            let obj = new OssPrivateAccess();
            obj.deserialize(params.OssPrivateAccess)
            this.OssPrivateAccess = obj;
        }

        if (params.HwPrivateAccess) {
            let obj = new HwPrivateAccess();
            obj.deserialize(params.HwPrivateAccess)
            this.HwPrivateAccess = obj;
        }

        if (params.OthersPrivateAccess) {
            let obj = new OthersPrivateAccess();
            obj.deserialize(params.OthersPrivateAccess)
            this.OthersPrivateAccess = obj;
        }

    }
}

/**
 * Input of speech keyword recognition.
 * @class
 */
class AiRecognitionTaskAsrWordsResultInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Speech keyword recognition template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * Screencapturing output information (v2017)
 * @class
 */
class SnapshotByTimeOffset2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Error code
<li>0: success;</li>
<li>Other values: failure.</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Specific time point of screenshot in milliseconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.TimeOffset = null;

        /**
         * Address of output screenshot file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Url = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.TimeOffset = 'TimeOffset' in params ? params.TimeOffset : null;
        this.Url = 'Url' in params ? params.Url : null;

    }
}

/**
 * CreateAIAnalysisTemplate request structure.
 * @class
 */
class CreateAIAnalysisTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Video content analysis template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Video content analysis template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Control parameter of intelligent categorization task.
         * @type {ClassificationConfigureInfo || null}
         */
        this.ClassificationConfigure = null;

        /**
         * Control parameter of intelligent tagging task.
         * @type {TagConfigureInfo || null}
         */
        this.TagConfigure = null;

        /**
         * Control parameter of intelligent cover generating task.
         * @type {CoverConfigureInfo || null}
         */
        this.CoverConfigure = null;

        /**
         * Control parameter of intelligent frame-specific tagging task.
         * @type {FrameTagConfigureInfo || null}
         */
        this.FrameTagConfigure = null;

        /**
         * Control parameter of an intelligent highlight generating task.
         * @type {HighlightsConfigureInfo || null}
         */
        this.HighlightConfigure = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.ClassificationConfigure) {
            let obj = new ClassificationConfigureInfo();
            obj.deserialize(params.ClassificationConfigure)
            this.ClassificationConfigure = obj;
        }

        if (params.TagConfigure) {
            let obj = new TagConfigureInfo();
            obj.deserialize(params.TagConfigure)
            this.TagConfigure = obj;
        }

        if (params.CoverConfigure) {
            let obj = new CoverConfigureInfo();
            obj.deserialize(params.CoverConfigure)
            this.CoverConfigure = obj;
        }

        if (params.FrameTagConfigure) {
            let obj = new FrameTagConfigureInfo();
            obj.deserialize(params.FrameTagConfigure)
            this.FrameTagConfigure = obj;
        }

        if (params.HighlightConfigure) {
            let obj = new HighlightsConfigureInfo();
            obj.deserialize(params.HighlightConfigure)
            this.HighlightConfigure = obj;
        }

    }
}

/**
 * Input parameters for intelligent recognition of terrorism content
 * @class
 */
class AiReviewTerrorismTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of the template for recognition of terrorism content
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * QUIC configuration item
 * @class
 */
class Quic extends  AbstractModel {
    constructor(){
        super();

        /**
         * Quic function configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Input parameters related to the adaptive bitrate streaming template.
 * @class
 */
class ComplexAdaptiveDynamicStreamingTaskStreamPara extends  AbstractModel {
    constructor(){
        super();

        /**
         * Adaptive bitrate streaming template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * RebuildMediaByTemplate response structure.
 * @class
 */
class RebuildMediaByTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID of the rebuild, through which the status of the rebuild task can be queried.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information of audio stream in VOD file
 * @class
 */
class MediaAudioStreamItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Bitrate of audio stream in bps.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Sample rate of audio stream in Hz.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.SamplingRate = null;

        /**
         * Audio stream encoder, such as aac.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Codec = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.SamplingRate = 'SamplingRate' in params ? params.SamplingRate : null;
        this.Codec = 'Codec' in params ? params.Codec : null;

    }
}

/**
 * EnhanceMediaByTemplate request structure.
 * @class
 */
class EnhanceMediaByTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * File ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Enhance Media Template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Starting offset time, unit: seconds, leaving it blank means intercepting from the beginning of the video.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End offset time, unit: seconds, leaving it blank means intercepting to the end of the video.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * File configuration after Enhance.
         * @type {RebuildMediaOutputConfig || null}
         */
        this.OutputConfig = null;

        /**
         * The identification code used for deduplication. If there is a request for the same identification code within three days, this request will return an error. The maximum length is 50 characters, without or with an empty string to indicate no deduplication.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Source context, used to transparently transmit user request information. The task flow status change callback will return the value of this field, which can be up to 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The priority of the task. The larger the value, the higher the priority. The value range is -10 to 10. If left blank, it means 0.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * Reserved fields, used for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

        if (params.OutputConfig) {
            let obj = new RebuildMediaOutputConfig();
            obj.deserialize(params.OutputConfig)
            this.OutputConfig = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * Subapplication information.
 * @class
 */
class SubAppIdInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Subapplication ID.
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The subapplication name.
         * @type {string || null}
         */
        this.SubAppIdName = null;

        /**
         * Subapplication overview.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Subapplication creation time of task in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Subapplication status. Valid values:
<li>On: enabled</li>
<li>Off: disabled</li>
<li>Destroying: terminating</li>
<li>Destroyed: terminated</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The subapplication name. This parameter is not recommended. Please use `SubAppIdName` instead.
         * @type {string || null}
         */
        this.Name = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.SubAppIdName = 'SubAppIdName' in params ? params.SubAppIdName : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.Name = 'Name' in params ? params.Name : null;

    }
}

/**
 * DescribeAllClass response structure.
 * @class
 */
class DescribeAllClassResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Category information set
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaClassInfo> || null}
         */
        this.ClassInfoSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ClassInfoSet) {
            this.ClassInfoSet = new Array();
            for (let z in params.ClassInfoSet) {
                let obj = new MediaClassInfo();
                obj.deserialize(params.ClassInfoSet[z]);
                this.ClassInfoSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyImageSpriteTemplate request structure.
 * @class
 */
class ModifyImageSpriteTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an image sprite generating template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of an image sprite generating template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Subimage width of an image sprite in px. Value range: [128, 4,096].
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Subimage height of an image sprite in px. Value range: [128, 4,096].
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Sampling type. Valid values:
<li>Percent: by percent.</li>
<li>Time: by time interval.</li>
         * @type {string || null}
         */
        this.SampleType = null;

        /**
         * Sampling interval.
<li>If `SampleType` is `Percent`, sampling will be performed at an interval of the specified percentage.</li>
<li>If `SampleType` is `Time`, sampling will be performed at the specified time interval in seconds.</li>
         * @type {number || null}
         */
        this.SampleInterval = null;

        /**
         * Subimage row count of an image sprite.
         * @type {number || null}
         */
        this.RowCount = null;

        /**
         * Subimage column count of an image sprite.
         * @type {number || null}
         */
        this.ColumnCount = null;

        /**
         * Fill type. "Fill" refers to the way of processing a screenshot when its aspect ratio is different from that of the source video. The following fill types are supported:
<li> stretch: stretch. The screenshot will be stretched frame by frame to match the aspect ratio of the source video, which may make the screenshot "shorter" or "longer";</li>
<li>black: fill with black. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with black color blocks.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * The image format. Valid values:
<li> jpg</li>
<li> png</li>
<li> webp</li>
         * @type {string || null}
         */
        this.Format = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.SampleType = 'SampleType' in params ? params.SampleType : null;
        this.SampleInterval = 'SampleInterval' in params ? params.SampleInterval : null;
        this.RowCount = 'RowCount' in params ? params.RowCount : null;
        this.ColumnCount = 'ColumnCount' in params ? params.ColumnCount : null;
        this.FillType = 'FillType' in params ? params.FillType : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Format = 'Format' in params ? params.Format : null;

    }
}

/**
 * Referer blacklist/whitelist configuration. This is disabled by default.
 * @class
 */
class Referer extends  AbstractModel {
    constructor(){
        super();

        /**
         * referer Blacklist and whitelist configuration switch, value: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Referer blacklist/whitelist configuration rule
         * @type {Array.<RefererRule> || null}
         */
        this.RefererRules = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

        if (params.RefererRules) {
            this.RefererRules = new Array();
            for (let z in params.RefererRules) {
                let obj = new RefererRule();
                obj.deserialize(params.RefererRules[z]);
                this.RefererRules.push(obj);
            }
        }

    }
}

/**
 * Input parameters for OCR-based recognition of banned content
 * @class
 */
class AiReviewProhibitedOcrTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Prohibited information detection template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * DeleteWatermarkTemplate request structure.
 * @class
 */
class DeleteWatermarkTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of watermarking template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DeleteVodDomain response structure.
 * @class
 */
class DeleteVodDomainResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Video stream editing information
 * @class
 */
class EditMediaStreamInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * ID of recorded stream
         * @type {string || null}
         */
        this.StreamId = null;

        /**
         * Start time of stream clipping in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time of stream clipping in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.EndTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StreamId = 'StreamId' in params ? params.StreamId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;

    }
}

/**
 * Heuristic cache configuration
 * @class
 */
class HeuristicCacheConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * Heuristic custom time cache configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.HeuristicCacheTimeSwitch = null;

        /**
         * Unit: seconds.
         * @type {number || null}
         */
        this.HeuristicCacheTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.HeuristicCacheTimeSwitch = 'HeuristicCacheTimeSwitch' in params ? params.HeuristicCacheTimeSwitch : null;
        this.HeuristicCacheTime = 'HeuristicCacheTime' in params ? params.HeuristicCacheTime : null;

    }
}

/**
 * DescribeWordSamples request structure.
 * @class
 */
class DescribeWordSamplesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * <b>Keyword usage. Valid values:</b>
1. Recognition.Ocr: OCR-based content recognition
2. Recognition.Asr: ASR-based content recognition
3. Review.Ocr: OCR-based inappropriate information recognition
4. Review.Asr: ASR-based inappropriate information recognition
<b>Valid values can also be:</b>
5. Recognition: ASR- and OCR-based content recognition; equivalent to 1+2
6. Review: ASR- and OCR-based inappropriate information recognition; equivalent to 3+4
You can select multiple elements, which are connected by OR logic. If a use case contains any element in this parameter, the keyword sample will be used.
         * @type {Array.<string> || null}
         */
        this.Usages = null;

        /**
         * Keyword filter. Array length limit: 100 words.
         * @type {Array.<string> || null}
         */
        this.Keywords = null;

        /**
         * Tag filter. Array length limit: 20 words.
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 100. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Usages = 'Usages' in params ? params.Usages : null;
        this.Keywords = 'Keywords' in params ? params.Keywords : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Image cropping details.
 * @class
 */
class ImageCenterCut extends  AbstractModel {
    constructor(){
        super();

        /**
         * The cropping type. Valid values:
<li>Circle: Cropping to circle. `Radius` specifies the radius of the output image.</li>
<li>Rectangle: Cropping to rectangle. `Width` and `Height` specify the width and height of the output image.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The width (pixels) of the output image. This parameter is valid if `Type` is `Rectangle`.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The height (pixels) of the output image. This parameter is valid if `Type` is `Rectangle`.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * The radius of the output image. This parameter is valid if `Type` is `Circle`.
         * @type {number || null}
         */
        this.Radius = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Radius = 'Radius' in params ? params.Radius : null;

    }
}

/**
 * ModifyAIAnalysisTemplate request structure.
 * @class
 */
class ModifyAIAnalysisTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of video content analysis template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Video content analysis template name. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Video content analysis template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Control parameter of intelligent categorization task.
         * @type {ClassificationConfigureInfoForUpdate || null}
         */
        this.ClassificationConfigure = null;

        /**
         * Control parameter of intelligent tagging task.
         * @type {TagConfigureInfoForUpdate || null}
         */
        this.TagConfigure = null;

        /**
         * Control parameter of intelligent cover generating task.
         * @type {CoverConfigureInfoForUpdate || null}
         */
        this.CoverConfigure = null;

        /**
         * Control parameter of intelligent frame-specific tagging task.
         * @type {FrameTagConfigureInfoForUpdate || null}
         */
        this.FrameTagConfigure = null;

        /**
         * Control parameter of an intelligent highlight generating task.
         * @type {HighlightsConfigureInfoForUpdate || null}
         */
        this.HighlightConfigure = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.ClassificationConfigure) {
            let obj = new ClassificationConfigureInfoForUpdate();
            obj.deserialize(params.ClassificationConfigure)
            this.ClassificationConfigure = obj;
        }

        if (params.TagConfigure) {
            let obj = new TagConfigureInfoForUpdate();
            obj.deserialize(params.TagConfigure)
            this.TagConfigure = obj;
        }

        if (params.CoverConfigure) {
            let obj = new CoverConfigureInfoForUpdate();
            obj.deserialize(params.CoverConfigure)
            this.CoverConfigure = obj;
        }

        if (params.FrameTagConfigure) {
            let obj = new FrameTagConfigureInfoForUpdate();
            obj.deserialize(params.FrameTagConfigure)
            this.FrameTagConfigure = obj;
        }

        if (params.HighlightConfigure) {
            let obj = new HighlightsConfigureInfoForUpdate();
            obj.deserialize(params.HighlightConfigure)
            this.HighlightConfigure = obj;
        }

    }
}

/**
 * CommitUpload response structure.
 * @class
 */
class CommitUploadResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of media file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The media playback URL.
         * @type {string || null}
         */
        this.MediaUrl = null;

        /**
         * The thumbnail URL.
         * @type {string || null}
         */
        this.CoverUrl = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.MediaUrl = 'MediaUrl' in params ? params.MediaUrl : null;
        this.CoverUrl = 'CoverUrl' in params ? params.CoverUrl : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * MaxAge rules configuration
 * @class
 */
class MaxAgeRule extends  AbstractModel {
    constructor(){
        super();

        /**
         * Rule type: <li>all: valid for all files;</li> <li>file: valid for specified file suffix;</li> <li>directory: valid for specified path;</li> <li>path: specified absolute The path takes effect. </li>
         * @type {string || null}
         */
        this.MaxAgeType = null;

        /**
         * Matching content under the corresponding type of MaxAgeType: <li>Fill in * when all is used; </li> <li> Fill in suffix name when file is used, such as jpg, txt; </li> <li> Fill in path when directory is used, such as /xxx/ test/;</li> <li>Fill in the absolute path when path is specified, such as /xxx/test.html. </li> <b>Note: all rules cannot be deleted. They follow the origin site by default and can be modified. </b>
         * @type {Array.<string> || null}
         */
        this.MaxAgeContents = null;

        /**
         * MaxAge time setting, unit second; <b>Note: The time is 0, which means no caching. </b>
         * @type {number || null}
         */
        this.MaxAgeTime = null;

        /**
         * Whether to follow the origin server. Valid values: on and off. If it's on, MaxAgeTime is ignored.
         * @type {string || null}
         */
        this.FollowOrigin = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.MaxAgeType = 'MaxAgeType' in params ? params.MaxAgeType : null;
        this.MaxAgeContents = 'MaxAgeContents' in params ? params.MaxAgeContents : null;
        this.MaxAgeTime = 'MaxAgeTime' in params ? params.MaxAgeTime : null;
        this.FollowOrigin = 'FollowOrigin' in params ? params.FollowOrigin : null;

    }
}

/**
 * Extract copyright watermark task input
 * @class
 */
class ExtractCopyRightWatermarkTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The media URL from which the watermark needs to be extracted.
         * @type {string || null}
         */
        this.Url = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;

    }
}

/**
 * Control parameters of voice translation recognition task.
 * @class
 */
class AsrTranslateConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Voice translation task switch, optional values:
<li>ON: switch on;</li>
<li>OFF: switch off.</li><font color=red>Note:</font> The task results of voice translation include asr full text recognition result. To avoid duplicate charges, simultaneous activation of voice translation and asr full text recognition features is prohibited.

         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Media source language. When the Switch is ON, this parameter is mandatory. Value range:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`ja`: Japanese;</li>
<li>`ko`: Korean;</li>
<li>`vi`: Vietnamese;</li>
<li>`ms`: Malay;</li>
<li>`th`: Thai;</li>
<li>`pt`: Portuguese;</li>
<li>`tr`: Turkish;</li>
<li>`ar`: Arabic;</li>
<li>`es`: Spanish;</li>
<li>`hi`: Hindi;</li>
<li>`fr`: French.</li>
         * @type {string || null}
         */
        this.SrcLanguage = null;

        /**
         * Translation target language. When the Switch is ON, this parameter is mandatory.
When SrcLanguage is zh (Chinese), the value range:
<li>`en`: English;</li>
<li>`ja`: Japanese;</li>
<li>`ko`: Korean;</li>
<li>`fr`: French;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese;</li>
<li>`vi`: Vietnamese;</li>
<li>`id`: Indonesian;</li>
<li>`th`: Thai;</li>
<li>`ms`: Malay.</li>

When SrcLanguage is en (English), the value range:
<li>`zh`: Chinese;</li>
<li>`ja`: Japanese;</li>
<li>`ko`: Korean;</li>
<li>`fr`: French;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese;</li>
<li>`vi`: Vietnamese;</li>
<li>`id`: Indonesian;</li>
<li>`th`: Thai;</li>
<li>`ms`: Malay;</li>
<li>`ar`: Arabic;</li>
<li>`hi`: Hindi.</li>

When SrcLanguage is ja (Japanese), the valid options are:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`ko`: Korean.</li>

When SrcLanguage is ko (Korean), the valid options are:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`ja`: Japanese.</li>

When SrcLanguage is vi (Vietnamese), ms (Malay), or th (Thai), the valid options are:
<li>`zh`: Chinese;</li>
<li>`en`: English.</li>

When SrcLanguage is pt (Portuguese), the valid options are:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`fr`: French;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian.</li>

When SrcLanguage is tr (Turkish), the value range is:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`fr`: French;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese.</li>

When SrcLanguage is es (Spanish), the value range is:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`fr`: French;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese.</li>

When SrcLanguage is ar (Arabic) or hi (Hindi), the value range is:
<li>`en`: English.</li>

When SrcLanguage is fr (French), the value range is:
<li>`zh`: Chinese;</li>
<li>`en`: English;</li>
<li>`es`: Spanish;</li>
<li>`it`: Italian;</li>
<li>`de`: German;</li>
<li>`tr`: Turkish;</li>
<li>`ru`: Russian;</li>
<li>`pt`: Portuguese.</li>
         * @type {string || null}
         */
        this.DstLanguage = null;

        /**
         * Generated subtitle file format list. If not filled or an empty array is provided, no subtitle file will be generated. Optional values:
<li>vtt: generate WebVTT subtitle file;</li>
<li>srt: generate SRT subtitle files.</li><font color=red>Note:</font> VOD media assets only support adding vtt subtitles. Therefore, VOD will add generated subtitles to media assets only when SubtitleFormats includes vtt.
         * @type {Array.<string> || null}
         */
        this.SubtitleFormats = null;

        /**
         * Specify subtitle name, length limit: 64 characters. This value will be displayed by the player. If not provided, VOD will automatically generate it.
         * @type {string || null}
         */
        this.SubtitleName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.SrcLanguage = 'SrcLanguage' in params ? params.SrcLanguage : null;
        this.DstLanguage = 'DstLanguage' in params ? params.DstLanguage : null;
        this.SubtitleFormats = 'SubtitleFormats' in params ? params.SubtitleFormats : null;
        this.SubtitleName = 'SubtitleName' in params ? params.SubtitleName : null;

    }
}

/**
 * DescribeSampleSnapshotTemplates response structure.
 * @class
 */
class DescribeSampleSnapshotTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of sampled screencapturing template details.
         * @type {Array.<SampleSnapshotTemplate> || null}
         */
        this.SampleSnapshotTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.SampleSnapshotTemplateSet) {
            this.SampleSnapshotTemplateSet = new Array();
            for (let z in params.SampleSnapshotTemplateSet) {
                let obj = new SampleSnapshotTemplate();
                obj.deserialize(params.SampleSnapshotTemplateSet[z]);
                this.SampleSnapshotTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Timestamp anti-hotlinking mode D configuration; The access URL format of timestamp anti-hotlinking mode D is: http://DomainName/FileName?sign=md5hash&t=timestamp; where timestamp is a decimal or hexadecimal UNIX timestamp; md5hash: MD5 (custom key + file path + timestamp).
 * @class
 */
class AuthenticationTypeD extends  AbstractModel {
    constructor(){
        super();

        /**
         * The key to calculate the signature; only uppercase and lowercase letters and numbers are allowed, with a length of 6~32 characters.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * Signature expiration time setting; the unit is seconds, and the maximum value can be set to 630720000.
         * @type {number || null}
         */
        this.ExpireTime = null;

        /**
         * File extension list settings for authentication/non-authentication; if the character * is included, it means all files.
         * @type {Array.<string> || null}
         */
        this.FileExtensions = null;

        /**
         * whitelist: whitelist, indicating that all types except the FileExtensions list will be authenticated; blacklist: blacklist, indicating that only the types in FileExtensions will be authenticated.
         * @type {string || null}
         */
        this.FilterType = null;

        /**
         * Signature parameter name setting; only uppercase and lowercase letters, numbers or underscores are allowed, the length is 1~100 characters, and it cannot start with a number.
         * @type {string || null}
         */
        this.SignParam = null;

        /**
         * Timestamp parameter name setting; only uppercase and lowercase letters, numbers or underscores are allowed, the length is 1~100 characters, and it cannot start with a number.
         * @type {string || null}
         */
        this.TimeParam = null;

        /**
         * Timestamp base setting: <li>dec: decimal</li> <li>hex: hexadecimal</li>
         * @type {string || null}
         */
        this.TimeFormat = null;

        /**
         * Alternate key for calculating signature; only uppercase and lowercase letters and numbers are allowed, length 6~32 characters.
         * @type {string || null}
         */
        this.BackupSecretKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.FileExtensions = 'FileExtensions' in params ? params.FileExtensions : null;
        this.FilterType = 'FilterType' in params ? params.FilterType : null;
        this.SignParam = 'SignParam' in params ? params.SignParam : null;
        this.TimeParam = 'TimeParam' in params ? params.TimeParam : null;
        this.TimeFormat = 'TimeFormat' in params ? params.TimeFormat : null;
        this.BackupSecretKey = 'BackupSecretKey' in params ? params.BackupSecretKey : null;

    }
}

/**
 * Timestamp anti-hotlinking mode C configuration; The access URL format of timestamp anti-hotlinking mode C is: http://DomainName/md5hash/timestamp/FileName; where timestamp is a hexadecimal UNIX timestamp; md5hash: MD5 (custom password key + file path + timestamp).
 * @class
 */
class AuthenticationTypeC extends  AbstractModel {
    constructor(){
        super();

        /**
         * The key to calculate the signature; only uppercase and lowercase letters and numbers are allowed, with a length of 6~32 characters.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * Signature expiration time setting; the unit is seconds, and the maximum value can be set to 630720000.
         * @type {number || null}
         */
        this.ExpireTime = null;

        /**
         * File extension list settings for authentication/non-authentication; if the character * is included, it means all files.
         * @type {Array.<string> || null}
         */
        this.FileExtensions = null;

        /**
         * whitelist: whitelist, indicating that all types except the FileExtensions list will be authenticated; blacklist: blacklist, indicating that only the types in FileExtensions will be authenticated.
         * @type {string || null}
         */
        this.FilterType = null;

        /**
         * Timestamp base setting: <li>dec: decimal</li> <li>hex: hexadecimal</li>
         * @type {string || null}
         */
        this.TimeFormat = null;

        /**
         * Alternate key for calculating signature; only uppercase and lowercase letters and numbers are allowed, length 6~32 characters.
         * @type {string || null}
         */
        this.BackupSecretKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.FileExtensions = 'FileExtensions' in params ? params.FileExtensions : null;
        this.FilterType = 'FilterType' in params ? params.FilterType : null;
        this.TimeFormat = 'TimeFormat' in params ? params.TimeFormat : null;
        this.BackupSecretKey = 'BackupSecretKey' in params ? params.BackupSecretKey : null;

    }
}

/**
 * Timestamp hotlink protection mode B configuration
 * @class
 */
class AuthenticationTypeB extends  AbstractModel {
    constructor(){
        super();

        /**
         * The key to calculate the signature; only uppercase and lowercase letters and numbers are allowed, with a length of 6~32 characters.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * Signature expiration time setting; the unit is seconds, and the maximum value can be set to 630720000.
         * @type {number || null}
         */
        this.ExpireTime = null;

        /**
         * File extension list settings for authentication/non-authentication; if the character * is included, it means all files.
         * @type {Array.<string> || null}
         */
        this.FileExtensions = null;

        /**
         * whitelist: whitelist, indicating that all types except the FileExtensions list will be authenticated; blacklist: blacklist, indicating that only the types in FileExtensions will be authenticated.
         * @type {string || null}
         */
        this.FilterType = null;

        /**
         * Alternate key for calculating signature; only uppercase and lowercase letters and numbers are allowed, length 6~32 characters.
         * @type {string || null}
         */
        this.BackupSecretKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.FileExtensions = 'FileExtensions' in params ? params.FileExtensions : null;
        this.FilterType = 'FilterType' in params ? params.FilterType : null;
        this.BackupSecretKey = 'BackupSecretKey' in params ? params.BackupSecretKey : null;

    }
}

/**
 * Configuration of timestamp anti-hotlinking mode A; The access URL format of timestamp anti-hotlinking mode A is: http://DomainName/Filename?sign=timestamp-rand-uid-md5hash; where timestamp is a decimal UNIX timestamp; rand is a random character String, consisting of 0 ~ 100 uppercase and lowercase letters and numbers; uid is 0; md5hash: MD5 (file path-timestamp-rand-uid-custom key).
 * @class
 */
class AuthenticationTypeA extends  AbstractModel {
    constructor(){
        super();

        /**
         * The key to calculate the signature; only uppercase and lowercase letters and numbers are allowed, with a length of 6~32 characters.
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * Signature parameter name setting; only uppercase and lowercase letters, numbers or underscores are allowed, the length is 1~100 characters, and it cannot start with a number.
         * @type {string || null}
         */
        this.SignParam = null;

        /**
         * Signature expiration time setting; the unit is seconds, and the maximum value can be set to 630720000.
         * @type {number || null}
         */
        this.ExpireTime = null;

        /**
         * File extension list settings for authentication/non-authentication; if the character * is included, it means all files.
         * @type {Array.<string> || null}
         */
        this.FileExtensions = null;

        /**
         * whitelist: whitelist, indicating that all types except the FileExtensions list will be authenticated; blacklist: blacklist, indicating that only the types in FileExtensions will be authenticated.
         * @type {string || null}
         */
        this.FilterType = null;

        /**
         * Alternate key for calculating signature; only uppercase and lowercase letters and numbers are allowed, length 6~32 characters.
         * @type {string || null}
         */
        this.BackupSecretKey = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.SignParam = 'SignParam' in params ? params.SignParam : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.FileExtensions = 'FileExtensions' in params ? params.FileExtensions : null;
        this.FilterType = 'FilterType' in params ? params.FilterType : null;
        this.BackupSecretKey = 'BackupSecretKey' in params ? params.BackupSecretKey : null;

    }
}

/**
 * Intelligent recognition result
 * @class
 */
class AiContentReviewResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task type. Valid values:
<li>`Porn`: porn information recognition in images</li>
<li>`Terrorism`: terrorism information recognition in images</li>
<li>`Political`: politically sensitive information recognition in images</li>
<li>`Porn.Asr`: ASR-based porn information recognition in speech</li>
<li>`Porn.Ocr`: OCR-based porn information recognition in text</li>
<li>`Political.Asr`: ASR-based politically sensitive information recognition in speech</li>
<li>`Political.Ocr`: OCR-based politically sensitive information recognition in text</li>
<li>`Terrorism.Ocr`: OCR-based terrorism information recognition in text</li>
<li>`Prohibited.Asr`: ASR-based prohibited information recognition in speech</li>
<li>`Prohibited.Ocr`: OCR-based prohibited information recognition in text</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Result for intelligent recognition of pornographic content in images. This parameter is valid when `Type` is `Porn`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskPornResult || null}
         */
        this.PornTask = null;

        /**
         * Result for intelligent recognition of terrorism content in images. This parameter is valid when `Type` is `Terrorism`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskTerrorismResult || null}
         */
        this.TerrorismTask = null;

        /**
         * Result for intelligent recognition of politically sensitive content in images. This parameter is valid when `Type` is `Political`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskPoliticalResult || null}
         */
        this.PoliticalTask = null;

        /**
         * Result for ASR-based recognition of pornographic content. This parameter is valid when `Type` is `Porn.Asr`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskPornAsrResult || null}
         */
        this.PornAsrTask = null;

        /**
         * Result for OCR-based recognition of pornographic content. This parameter is valid when `Type` is `Porn.Ocr`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskPornOcrResult || null}
         */
        this.PornOcrTask = null;

        /**
         * Result for ASR-based recognition of politically sensitive content. This parameter is valid when `Type` is `Political.Asr`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskPoliticalAsrResult || null}
         */
        this.PoliticalAsrTask = null;

        /**
         * Result for OCR-based recognition of politically sensitive content. This parameter is valid when `Type` is `Political.Ocr`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskPoliticalOcrResult || null}
         */
        this.PoliticalOcrTask = null;

        /**
         * Result for OCR-based recognition of terrorism content. This parameter is valid when `Type` is `Terrorism.Ocr`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskTerrorismOcrResult || null}
         */
        this.TerrorismOcrTask = null;

        /**
         * Result for OCR-based recognition of banned content. This parameter is valid when `Type` is `Prohibited.Ocr`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskProhibitedOcrResult || null}
         */
        this.ProhibitedOcrTask = null;

        /**
         * Result for ASR-based recognition of banned content. This parameter is valid when `Type` is `Prohibited.Asr`.
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewTaskProhibitedAsrResult || null}
         */
        this.ProhibitedAsrTask = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.PornTask) {
            let obj = new AiReviewTaskPornResult();
            obj.deserialize(params.PornTask)
            this.PornTask = obj;
        }

        if (params.TerrorismTask) {
            let obj = new AiReviewTaskTerrorismResult();
            obj.deserialize(params.TerrorismTask)
            this.TerrorismTask = obj;
        }

        if (params.PoliticalTask) {
            let obj = new AiReviewTaskPoliticalResult();
            obj.deserialize(params.PoliticalTask)
            this.PoliticalTask = obj;
        }

        if (params.PornAsrTask) {
            let obj = new AiReviewTaskPornAsrResult();
            obj.deserialize(params.PornAsrTask)
            this.PornAsrTask = obj;
        }

        if (params.PornOcrTask) {
            let obj = new AiReviewTaskPornOcrResult();
            obj.deserialize(params.PornOcrTask)
            this.PornOcrTask = obj;
        }

        if (params.PoliticalAsrTask) {
            let obj = new AiReviewTaskPoliticalAsrResult();
            obj.deserialize(params.PoliticalAsrTask)
            this.PoliticalAsrTask = obj;
        }

        if (params.PoliticalOcrTask) {
            let obj = new AiReviewTaskPoliticalOcrResult();
            obj.deserialize(params.PoliticalOcrTask)
            this.PoliticalOcrTask = obj;
        }

        if (params.TerrorismOcrTask) {
            let obj = new AiReviewTaskTerrorismOcrResult();
            obj.deserialize(params.TerrorismOcrTask)
            this.TerrorismOcrTask = obj;
        }

        if (params.ProhibitedOcrTask) {
            let obj = new AiReviewTaskProhibitedOcrResult();
            obj.deserialize(params.ProhibitedOcrTask)
            this.ProhibitedOcrTask = obj;
        }

        if (params.ProhibitedAsrTask) {
            let obj = new AiReviewTaskProhibitedAsrResult();
            obj.deserialize(params.ProhibitedAsrTask)
            this.ProhibitedAsrTask = obj;
        }

    }
}

/**
 * The information of a bitrate reduction task.
 * @class
 */
class ReduceMediaBitrateTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The task flow status. Valid values:
<li>PROCESSING</li>
<li>FINISH</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The ID of the media file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The name of the media file.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * The address of the media file.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * The metadata of the source video.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * The execution status and result of the bitrate reduction task.
         * @type {Array.<ReduceMediaBitrateMediaProcessTaskResult> || null}
         */
        this.MediaProcessResultSet = null;

        /**
         * The task priority, which can be a value from -10 to 10.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * The notification mode for the change of task status. Valid values:
<li>Finish: Send a notification after the task is completed.</li>
<li>None: Do not send status change notifications for this task.</li>
         * @type {string || null}
         */
        this.TasksNotifyMode = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last seven days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }

        if (params.MediaProcessResultSet) {
            this.MediaProcessResultSet = new Array();
            for (let z in params.MediaProcessResultSet) {
                let obj = new ReduceMediaBitrateMediaProcessTaskResult();
                obj.deserialize(params.MediaProcessResultSet[z]);
                this.MediaProcessResultSet.push(obj);
            }
        }
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.TasksNotifyMode = 'TasksNotifyMode' in params ? params.TasksNotifyMode : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;

    }
}

/**
 * Parameters for recognition of terrorism content in images
 * @class
 */
class TerrorismImgReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable recognition of terrorism content in images. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for recognition of terrorism content in images. Results containing the specified labels are returned. If no labels are specified, all results are returned. Valid values:
<li>`guns`: weapons and guns</li>
<li>`crowd`: crowd</li>
<li>`bloody`: bloody scenes</li>
<li>`police`: police force</li>
<li>`banners`: terrorism flags</li>
<li>`militant`: militants</li>
<li>`explosion`: explosions and fires</li>
<li>`terrorists`: terrorists</li>
<li>`scenario`: terrorism images</li>
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `90` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `80` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * ApplyUpload response structure.
 * @class
 */
class ApplyUploadResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Storage bucket, which is used as the `bucket_name` in the URL of the upload API.
         * @type {string || null}
         */
        this.StorageBucket = null;

        /**
         * Storage region, which is used as the `Region` in the `Host` of the upload API.
         * @type {string || null}
         */
        this.StorageRegion = null;

        /**
         * VOD session, which is used to confirm the `VodSessionKey` parameter of the upload API.
         * @type {string || null}
         */
        this.VodSessionKey = null;

        /**
         * Media storage path, which is used as the `Key` of the stored media of the upload API.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MediaStoragePath = null;

        /**
         * Cover storage path, which is used as the `Key` of the stored cover of the upload API.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.CoverStoragePath = null;

        /**
         * Temporary credential, which is used for authentication of the upload API.
         * @type {TempCertificate || null}
         */
        this.TempCertificate = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StorageBucket = 'StorageBucket' in params ? params.StorageBucket : null;
        this.StorageRegion = 'StorageRegion' in params ? params.StorageRegion : null;
        this.VodSessionKey = 'VodSessionKey' in params ? params.VodSessionKey : null;
        this.MediaStoragePath = 'MediaStoragePath' in params ? params.MediaStoragePath : null;
        this.CoverStoragePath = 'CoverStoragePath' in params ? params.CoverStoragePath : null;

        if (params.TempCertificate) {
            let obj = new TempCertificate();
            obj.deserialize(params.TempCertificate)
            this.TempCertificate = obj;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ReviewAudioVideo response structure.
 * @class
 */
class ReviewAudioVideoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteClass request structure.
 * @class
 */
class DeleteClassRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Category ID
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DescribeTranscodeTemplates request structure.
 * @class
 */
class DescribeTranscodeTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique ID filter of transcoding templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Template type filter. Valid values:
<li>Preset: preset template;</li>
<li>Custom: custom template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Container filter. Valid values:
<li>Video: video container that can contain both video stream and audio stream;</li>
<li>PureAudio: audio container that can contain only audio stream.</li>
         * @type {string || null}
         */
        this.ContainerType = null;

        /**
         * TESHD filter, which is used to filter common transcoding or ultra-fast HD transcoding templates. Valid values:
<li>Common: Common transcoding template;</li>
<li>TEHD: TESHD template.</li>
         * @type {string || null}
         */
        this.TEHDType = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.ContainerType = 'ContainerType' in params ? params.ContainerType : null;
        this.TEHDType = 'TEHDType' in params ? params.TEHDType : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Output for media quality enhance task
 * @class
 */
class QualityEnhanceTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * File types such as mp4, flv, etc.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Media file playback address.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * Media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Output file name, up to 64 characters. By default, the generated file name is specified by the system.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * Classification ID is used to classify media. You can create a classification through the [Create Classification](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) interface to obtain the classification ID. 
<li>Default value: 0, indicating other categories. </li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * The expiration time of the output file. The file will be deleted after this time. The default is permanent and not expired. The format is expressed in accordance with the ISO 8601 standard. For details, see [ISO Date Format Description](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.ExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

    }
}

/**
 * The details of a moderation template.
 * @class
 */
class ReviewTemplate extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique ID of the moderation template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * The template type. Valid values:
<li>Preset</li>
<li>Custom</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The violation labels used.
         * @type {Array.<string> || null}
         */
        this.Labels = null;

        /**
         * The template creation time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * The last updated time of the template in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Labels = 'Labels' in params ? params.Labels : null;
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * DescribeCurrentPlaylist request structure.
 * @class
 */
class DescribeCurrentPlaylistRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <B>VOD [subapplication](https://intl.cloud.tencent.com/document/product/266/14574?from_cn_redirect=1) id.</b>.
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The unique identifier of the playlist.
         * @type {string || null}
         */
        this.RoundPlayId = null;

        /**
         * The length of the returned playlist. maximum is 10, default value is 5.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.RoundPlayId = 'RoundPlayId' in params ? params.RoundPlayId : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Parameters for custom ASR-based recognition
 * @class
 */
class UserDefineAsrTextReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable custom ASR-based recognition. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for custom ASR-based recognition. Results containing the specified labels are returned. If no labels are specified, all results are returned. To filter by labels, specify the labels when adding keywords for custom ASR-based recognition.
Up to 10 labels are allowed, each containing no more than 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * DescribeCDNDomains response structure.
 * @class
 */
class DescribeCDNDomainsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Domain information list.
         * @type {Array.<CDNDomainInfo> || null}
         */
        this.DomainSet = null;

        /**
         * The total number of CDN domains under the current application.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.DomainSet) {
            this.DomainSet = new Array();
            for (let z in params.DomainSet) {
                let obj = new CDNDomainInfo();
                obj.deserialize(params.DomainSet[z]);
                this.DomainSet.push(obj);
            }
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Information of video stream in VOD file
 * @class
 */
class MediaVideoStreamItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Bitrate of video stream in bps.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Height of video stream in px.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Width of video stream in px.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Video stream encoder, such as h264.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Codec = null;

        /**
         * Frame rate in Hz.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Fps = null;

        /**
         * The codec tag. This parameter is valid only if `Codec` is `hevc`.
         * @type {string || null}
         */
        this.CodecTag = null;

        /**
         * Dynamic range information.
<li><font color=red>Note</font>: This parameter is valid for transcoding files generated after 2023-01-10T00:00:00Z.</li>
         * @type {DynamicRangeInfo || null}
         */
        this.DynamicRangeInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Codec = 'Codec' in params ? params.Codec : null;
        this.Fps = 'Fps' in params ? params.Fps : null;
        this.CodecTag = 'CodecTag' in params ? params.CodecTag : null;

        if (params.DynamicRangeInfo) {
            let obj = new DynamicRangeInfo();
            obj.deserialize(params.DynamicRangeInfo)
            this.DynamicRangeInfo = obj;
        }

    }
}

/**
 * CreateRebuildMediaTemplate request structure.
 * @class
 */
class CreateRebuildMediaTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The output container format. Valid values: `mp4`, `flv`, `hls`.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The remaster template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * The template description.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * The video remaster parameters.
         * @type {RebuildVideoInfo || null}
         */
        this.RebuildVideoInfo = null;

        /**
         * The audio remaster parameters.
         * @type {RebuildAudioInfo || null}
         */
        this.RebuildAudioInfo = null;

        /**
         * The output video parameters.
         * @type {RebuildMediaTargetVideoStream || null}
         */
        this.TargetVideoInfo = null;

        /**
         * The output audio parameters.
         * @type {RebuildMediaTargetAudioStream || null}
         */
        this.TargetAudioInfo = null;

        /**
         * Whether to remove video data. Valid values:
<li>`0`: No</li>
<li>`1`: Yes</li>
Default value: 0.
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data. Valid values:
<li>`0`: No</li>
<li>`1`: Yes</li>
Default value: 0.
         * @type {string || null}
         */
        this.RemoveAudio = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Container = 'Container' in params ? params.Container : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

        if (params.RebuildVideoInfo) {
            let obj = new RebuildVideoInfo();
            obj.deserialize(params.RebuildVideoInfo)
            this.RebuildVideoInfo = obj;
        }

        if (params.RebuildAudioInfo) {
            let obj = new RebuildAudioInfo();
            obj.deserialize(params.RebuildAudioInfo)
            this.RebuildAudioInfo = obj;
        }

        if (params.TargetVideoInfo) {
            let obj = new RebuildMediaTargetVideoStream();
            obj.deserialize(params.TargetVideoInfo)
            this.TargetVideoInfo = obj;
        }

        if (params.TargetAudioInfo) {
            let obj = new RebuildMediaTargetAudioStream();
            obj.deserialize(params.TargetAudioInfo)
            this.TargetAudioInfo = obj;
        }
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

    }
}

/**
 * An image operation.
 * @class
 */
class ImageOperation extends  AbstractModel {
    constructor(){
        super();

        /**
         * Image processing type. Optional types are:
<li>Scale: image thumbnail processing;</li>
<li>CenterCut: image cropping processing;</li>
<li>Blur: image blur processing. </li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The scaling details. This parameter is valid only if `Type` is `Scale`.
         * @type {ImageScale || null}
         */
        this.Scale = null;

        /**
         * The cropping details. This parameter is valid only if `Type` is `CenterCut`.
         * @type {ImageCenterCut || null}
         */
        this.CenterCut = null;

        /**
         * Image blurring. This parameter is valid only if `Type` is `Blur`.
         * @type {ImageBlur || null}
         */
        this.Blur = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.Scale) {
            let obj = new ImageScale();
            obj.deserialize(params.Scale)
            this.Scale = obj;
        }

        if (params.CenterCut) {
            let obj = new ImageCenterCut();
            obj.deserialize(params.CenterCut)
            this.CenterCut = obj;
        }

        if (params.Blur) {
            let obj = new ImageBlur();
            obj.deserialize(params.Blur)
            this.Blur = obj;
        }

    }
}

/**
 * The stream information of adaptive bitrate streaming.
 * @class
 */
class MediaSubStreamInfoItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * The stream type. Valid values:
<li>`audio`: Audio only</li>
<li>`video`: Video (may include audio)</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The video width (px) if `Type` is `video`.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The video height (px) if `Type` is `video`.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * The file size (bytes).
<font color=red>Note:</font>For adaptive bitrate streaming files generated before 2023-02-09T16:00:00Z, the value of this parameter is `0`.
         * @type {number || null}
         */
        this.Size = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Size = 'Size' in params ? params.Size : null;

    }
}

/**
 * Control parameters for detecting video mosaic.
 * @class
 */
class MosaicConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video mosaic inspection switch, optional values:
<li>ON: enabled;</li>
<li>OFF: disabled.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * DescribeWatermarkTemplates response structure.
 * @class
 */
class DescribeWatermarkTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of watermarking template details.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WatermarkTemplate> || null}
         */
        this.WatermarkTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.WatermarkTemplateSet) {
            this.WatermarkTemplateSet = new Array();
            for (let z in params.WatermarkTemplateSet) {
                let obj = new WatermarkTemplate();
                obj.deserialize(params.WatermarkTemplateSet[z]);
                this.WatermarkTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeRoundPlays response structure.
 * @class
 */
class DescribeRoundPlaysResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The total number of carousel broadcast playlists that meet the filter criteria. deprecated. for batch inquiries, please use the scrolltoken parameter.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The details of the playlist.
         * @type {Array.<RoundPlayInfo> || null}
         */
        this.RoundPlaySet = null;

        /**
         * Scrolling identifier. if a request does not return all the data entries, this field indicates the id of the next entry. if this field is empty, there is no more data.
         * @type {string || null}
         */
        this.ScrollToken = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.RoundPlaySet) {
            this.RoundPlaySet = new Array();
            for (let z in params.RoundPlaySet) {
                let obj = new RoundPlayInfo();
                obj.deserialize(params.RoundPlaySet[z]);
                this.RoundPlaySet.push(obj);
            }
        }
        this.ScrollToken = 'ScrollToken' in params ? params.ScrollToken : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Operation such as image rotation and flipping
 * @class
 */
class ImageTransform extends  AbstractModel {
    constructor(){
        super();

        /**
         * Type. Valid values:
<li> Rotate: image rotation.</li>
<li> Flip: image flipping.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Rotation angle of image with its center point as origin. Value range: 0-360. This parameter is valid if `Type` is `Rotate`.
         * @type {number || null}
         */
        this.RotateAngle = null;

        /**
         * Image flipping action. Valid values:
<li>Horizental: horizontal flipping, i.e., horizontally mirrored.</li>
<li>Vertical: vertical flipping, i.e., vertically mirrored.</li>
This is valid if `Type` is `Flip`.
         * @type {string || null}
         */
        this.Flip = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.RotateAngle = 'RotateAngle' in params ? params.RotateAngle : null;
        this.Flip = 'Flip' in params ? params.Flip : null;

    }
}

/**
 * CreateAnimatedGraphicsTemplate request structure.
 * @class
 */
class CreateAnimatedGraphicsTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video frame rate in Hz. Value range: [1, 30].
         * @type {number || null}
         */
        this.Fps = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Maximum value of the width (or long side) of an animated image in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of an animated image in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Animated image format. Valid values: gif; webp. Default value: gif.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Image quality. Value range: [1, 100]. Default value: 75.
         * @type {number || null}
         */
        this.Quality = null;

        /**
         * Name of an animated image generating template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Fps = 'Fps' in params ? params.Fps : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Quality = 'Quality' in params ? params.Quality : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;

    }
}

/**
 * Control parameter of intelligent frame-specific tagging task
 * @class
 */
class FrameTagConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of intelligent frame-specific tagging task. Valid values:
<li>ON: enables intelligent frame-specific tagging task;</li>
<li>OFF: disables intelligent frame-specific tagging task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Frame capturing interval in seconds. If this parameter is left empty, 1 second will be used by default. Minimum value: 0.5 seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;

    }
}

/**
 * RemoveWatermark request structure.
 * @class
 */
class RemoveWatermarkRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The ID of the media file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last seven days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The priority of a task flow. The higher the value, the higher the priority. Value range: [-10, 10]. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * This parameter is invalid now.
         * @type {string || null}
         */
        this.TasksNotifyMode = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.TasksNotifyMode = 'TasksNotifyMode' in params ? params.TasksNotifyMode : null;

    }
}

/**
 * ExecuteFunction request structure.
 * @class
 */
class ExecuteFunctionRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Name of called backend API.
         * @type {string || null}
         */
        this.FunctionName = null;

        /**
         * API parameter. For specific parameter format, negotiate with the backend before calling.
         * @type {string || null}
         */
        this.FunctionArg = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The source context which is used to pass through the user request information. The task flow status change callback will return the value of this field. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The ID used for deduplication. If there was a request with the same ID in the last seven days, the current request will return an error. The ID can contain up to 50 characters. If this parameter is left empty or a blank string is entered, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Reserved field for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FunctionName = 'FunctionName' in params ? params.FunctionName : null;
        this.FunctionArg = 'FunctionArg' in params ? params.FunctionArg : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * The information of an audio/video remastering task.
 * @class
 */
class RebuildMediaTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The task flow status. Valid values:
<li>`PROCESSING`</li>
<li>`FINISH`</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * The error code. `0` indicates the task is successful. Other values indicate that the task failed.
<li>`40000`: Invalid input parameter.</li>
<li>`60000`: Source file error (e.g., video data is corrupted).</li>
<li>`70000`: Internal server error. Please try again.</li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * The error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The error code. An empty string indicates the task is successful; other values indicate that the task failed. For details, see [Video processing error codes](https://intl.cloud.tencent.com/document/product/266/39145?lang=en&pg=#video-processing).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * The task progress. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The input parameters of the audio/video remastering task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RebuildMediaTaskInput || null}
         */
        this.Input = null;

        /**
         * The output parameters of the audio/video remastering task.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RebuildMediaTaskOutput || null}
         */
        this.Output = null;

        /**
         * The metadata of the output file.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last seven days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

        if (params.Input) {
            let obj = new RebuildMediaTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new RebuildMediaTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * ConfirmEvents response structure.
 * @class
 */
class ConfirmEventsResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyPersonSample response structure.
 * @class
 */
class ModifyPersonSampleResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Information of a sample.
         * @type {AiSamplePerson || null}
         */
        this.Person = null;

        /**
         * Information of samples that failed the verification by facial feature positioning.
Note: this field may return `null`, indicating that no valid values can be obtained.
         * @type {Array.<AiSampleFailFaceInfo> || null}
         */
        this.FailFaceInfoSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.Person) {
            let obj = new AiSamplePerson();
            obj.deserialize(params.Person)
            this.Person = obj;
        }

        if (params.FailFaceInfoSet) {
            this.FailFaceInfoSet = new Array();
            for (let z in params.FailFaceInfoSet) {
                let obj = new AiSampleFailFaceInfo();
                obj.deserialize(params.FailFaceInfoSet[z]);
                this.FailFaceInfoSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Video segment information of video track.
 * @class
 */
class VideoTrackItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Source of media material for video segment, which can be:
<li>ID of VOD media files</li>
<li>Download URL of other media files.</li>
Note: when a download URL of other media files is used as the material source and access control (such as hotlink protection) is enabled, the URL needs to carry access control parameters (such as hotlink protection signature).
         * @type {string || null}
         */
        this.SourceMedia = null;

        /**
         * Start time of video segment in material file in seconds. Default value: 0.
         * @type {number || null}
         */
        this.SourceMediaStartTime = null;

        /**
         * Video segment duration in seconds. By default, the length of the video material will be used, which means that the entire material will be captured. If the source file is an image, `Duration` needs to be greater than 0.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * The target video duration, in seconds.
<li>If `TargetDuration` is empty or `0`, the target duration is the same as `Duration`.</li>
<li>If `TargetDuration` is a value greater than 0, the playback speed will be changed to make the final video duration the same as the value of `TargetDuration`.</li>
         * @type {number || null}
         */
        this.TargetDuration = null;

        /**
         * Video origin position. Valid values:
<li> Center: the origin of coordinates is the center position, such as the center of canvas.</li>
Default value: Center.
         * @type {string || null}
         */
        this.CoordinateOrigin = null;

        /**
         * The horizontal position of the origin of the video segment relative to the origin of the canvas. % and px formats are supported:
<li>If the string ends in %, the `XPos` of the video segment will be at the position of the specified percentage of the canvas width; for example, `10%` means that `XPos` is 10% of the canvas width.</li>
<li>If the string ends in px, the `XPos` of the video segment will be in px; for example, `100px` means that `XPos` is 100 px.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.XPos = null;

        /**
         * The vertical position of the origin of the video segment relative to the origin of the canvas. % and px formats are supported:
<li>If the string ends in %, the `YPos` of the video segment will be at the position of the specified percentage of the canvas height; for example, `10%` means that `YPos` is 10% of the canvas height.</li>
<li>If the string ends in px, the `YPos` of the video segment will be in px; for example, `100px` means that `YPos` is 100 px.</li>
Default value: 0 px.
         * @type {string || null}
         */
        this.YPos = null;

        /**
         * Video segment width. % and px formats are supported:
<li>If the string ends in %, the `Width` of the video segment will be the specified percentage of the canvas width; for example, `10%` means that `Width` is 10% of the canvas width.</li>
<li>If the string ends in px, the `Width` of the video segment will be in px; for example, `100px` means that `Width` is 100 px.</li>
<li>If both `Width` and `Height` are empty, then they will be the `Width` and `Height` of the video material, respectively.</li>
<li>If `Width` is empty, but `Height` is not empty, `Width` will be proportionally scaled.</li>
<li>If `Width` is not empty, but `Height` is empty, `Height` will be proportionally scaled.</li>
         * @type {string || null}
         */
        this.Width = null;

        /**
         * Video segment height. % and px formats are supported:
<li>If the string ends in %, the `Height` of the video segment will be the specified percentage of the canvas height; for example, `10%` means that `Height` is 10% of the canvas height;
</li><li>If the string ends in px, the `Height` of the video segment will be in px; for example, `100px` means that `Height` is 100 px.</li>
<li>If both `Width` and `Height` are empty, then they will be the `Width` and `Height` of the video material, respectively.</li>
<li>If `Width` is empty, but `Height` is not empty, `Width` will be proportionally scaled.</li>
<li>If `Width` is not empty, but `Height` is empty, `Height` will be proportionally scaled.</li>
         * @type {string || null}
         */
        this.Height = null;

        /**
         * Operation on audio such as muting.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<AudioTransform> || null}
         */
        this.AudioOperations = null;

        /**
         * Operation on video image such as image rotation.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<ImageTransform> || null}
         */
        this.ImageOperations = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SourceMedia = 'SourceMedia' in params ? params.SourceMedia : null;
        this.SourceMediaStartTime = 'SourceMediaStartTime' in params ? params.SourceMediaStartTime : null;
        this.Duration = 'Duration' in params ? params.Duration : null;
        this.TargetDuration = 'TargetDuration' in params ? params.TargetDuration : null;
        this.CoordinateOrigin = 'CoordinateOrigin' in params ? params.CoordinateOrigin : null;
        this.XPos = 'XPos' in params ? params.XPos : null;
        this.YPos = 'YPos' in params ? params.YPos : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;

        if (params.AudioOperations) {
            this.AudioOperations = new Array();
            for (let z in params.AudioOperations) {
                let obj = new AudioTransform();
                obj.deserialize(params.AudioOperations[z]);
                this.AudioOperations.push(obj);
            }
        }

        if (params.ImageOperations) {
            this.ImageOperations = new Array();
            for (let z in params.ImageOperations) {
                let obj = new ImageTransform();
                obj.deserialize(params.ImageOperations[z]);
                this.ImageOperations.push(obj);
            }
        }

    }
}

/**
 * Image noise removal configuration.
 * @class
 */
class VideoDenoiseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable image noise removal. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The image noise removal type. This parameter is valid only if `Switch` is `ON`. Valid values:
<li>`weak`</li>
<li>`strong`</li>
Default value: `weak`.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * DescribeLicenseUsageData request structure.
 * @class
 */
class DescribeLicenseUsageDataRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The start date for the query in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * The end date for the query in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format). The end date must be later than the start date.
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * The license type, which is DRM by default. Valid values:
<li> DRM</li>
         * @type {string || null}
         */
        this.LicenseType = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.LicenseType = 'LicenseType' in params ? params.LicenseType : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DeleteTranscodeTemplate response structure.
 * @class
 */
class DeleteTranscodeTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Transcoding information
 * @class
 */
class MediaTranscodeItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Address of output video file.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Url = null;

        /**
         * For transcoding specification ID, see [Transcoding Parameter Template](https://intl.cloud.tencent.com/document/product/266/33476?from_cn_redirect=1). 
<font color=red>Note: A value of 0 represents the original file. </font>
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Sum of the average bitrate of a video stream and that of an audio stream in bps.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Bitrate = null;

        /**
         * Maximum value of the height of a video stream in px.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Maximum value of the width of a video stream in px.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * The file size (bytes).
<li>If the file is an HLS file, the value of this parameter is the sum of the size of the M3U8 and TS files.</li>
         * @type {number || null}
         */
        this.Size = null;

        /**
         * Video duration in seconds.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * MD5 value of video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Md5 = null;

        /**
         * Container, such as m4a and mp4.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Video stream information.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaVideoStreamItem> || null}
         */
        this.VideoStreamSet = null;

        /**
         * Audio stream information.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaAudioStreamItem> || null}
         */
        this.AudioStreamSet = null;

        /**
         * The watermark type. Valid values:
<li>Trace: Digital watermark</li>
<li>None: Regular watermark</li>
         * @type {string || null}
         */
        this.DigitalWatermarkType = null;

        /**
         * 
         * @type {string || null}
         */
        this.CopyRightWatermarkText = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Url = 'Url' in params ? params.Url : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Bitrate = 'Bitrate' in params ? params.Bitrate : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Size = 'Size' in params ? params.Size : null;
        this.Duration = 'Duration' in params ? params.Duration : null;
        this.Md5 = 'Md5' in params ? params.Md5 : null;
        this.Container = 'Container' in params ? params.Container : null;

        if (params.VideoStreamSet) {
            this.VideoStreamSet = new Array();
            for (let z in params.VideoStreamSet) {
                let obj = new MediaVideoStreamItem();
                obj.deserialize(params.VideoStreamSet[z]);
                this.VideoStreamSet.push(obj);
            }
        }

        if (params.AudioStreamSet) {
            this.AudioStreamSet = new Array();
            for (let z in params.AudioStreamSet) {
                let obj = new MediaAudioStreamItem();
                obj.deserialize(params.AudioStreamSet[z]);
                this.AudioStreamSet.push(obj);
            }
        }
        this.DigitalWatermarkType = 'DigitalWatermarkType' in params ? params.DigitalWatermarkType : null;
        this.CopyRightWatermarkText = 'CopyRightWatermarkText' in params ? params.CopyRightWatermarkText : null;

    }
}

/**
 * DescribePersonSamples response structure.
 * @class
 */
class DescribePersonSamplesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Figure information.
         * @type {Array.<AiSamplePerson> || null}
         */
        this.PersonSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.PersonSet) {
            this.PersonSet = new Array();
            for (let z in params.PersonSet) {
                let obj = new AiSamplePerson();
                obj.deserialize(params.PersonSet[z]);
                this.PersonSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Extract copyright watermark output information
 * @class
 */
class ExtractCopyRightWatermarkTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Copyright information
         * @type {string || null}
         */
        this.Text = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Text = 'Text' in params ? params.Text : null;

    }
}

/**
 * Input information of a video splitting task.
 * @class
 */
class SplitMediaTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Offset of the video splitting start time in seconds.
<li>If this parameter is left empty or set to 0, the transcoded video will start at the same time as the original video.</li>
<li>If this parameter is set to a positive number (n for example), the transcoded video will start at the nth second of the original video.</li>
<li>If this parameter is set to a negative number (-n for example), the transcoded video will start at the nth second before the end of the original video.</li>
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * Offset of the video splitting end time in seconds.
<li>If this parameter is left empty or set to 0, the transcoded video will end at the same time as the original video.</li>
<li>If this parameter is set to a positive number (n for example), the transcoded video will end at the nth second of the original video.</li>
<li>If this parameter is set to a negative number (-n for example), the transcoded video will end at the nth second before the end of the original video.</li>
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * [Task flow template](https://intl.cloud.tencent.com/document/product/266/33931?lang=en&pg=) name, which should be entered if you want to perform a task flow on the generated new video.
         * @type {string || null}
         */
        this.ProcedureName = null;

        /**
         * Output information of a video splitting task.
         * @type {SplitMediaOutputConfig || null}
         */
        this.OutputConfig = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.ProcedureName = 'ProcedureName' in params ? params.ProcedureName : null;

        if (params.OutputConfig) {
            let obj = new SplitMediaOutputConfig();
            obj.deserialize(params.OutputConfig)
            this.OutputConfig = obj;
        }

    }
}

/**
 * Parameters for recognition of pornographic content
 * @class
 */
class PornConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameters for recognition of pornographic content in images
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {PornImgReviewTemplateInfo || null}
         */
        this.ImgReviewInfo = null;

        /**
         * Parameters for ASR-based recognition of pornographic content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {PornAsrReviewTemplateInfo || null}
         */
        this.AsrReviewInfo = null;

        /**
         * Parameters for OCR-based recognition of pornographic content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {PornOcrReviewTemplateInfo || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ImgReviewInfo) {
            let obj = new PornImgReviewTemplateInfo();
            obj.deserialize(params.ImgReviewInfo)
            this.ImgReviewInfo = obj;
        }

        if (params.AsrReviewInfo) {
            let obj = new PornAsrReviewTemplateInfo();
            obj.deserialize(params.AsrReviewInfo)
            this.AsrReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new PornOcrReviewTemplateInfo();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * Object recognition result segment.
 * @class
 */
class AiRecognitionTaskObjectSeqmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time offset of recognized segment in seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of recognition segment in seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Confidence of recognized segment. Value range: 0-100.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Zone coordinates of recognition result. The array contains four elements: [x1,y1,x2,y2], i.e., the horizontal and vertical coordinates of the top-left and bottom-right corners.
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;

    }
}

/**
 * SplitMedia response structure.
 * @class
 */
class SplitMediaResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID of video splitting. You can use this ID to query the status of the splitting task (task type is SplitMedia).
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * RestoreMedia request structure.
 * @class
 */
class RestoreMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file unique identifier list, maximum length: 100.
         * @type {Array.<string> || null}
         */
        this.FileIds = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The accessible duration of the unfrozen temporary media files must be greater than 0, and the unit is "days".
         * @type {number || null}
         */
        this.RestoreDay = null;

        /**
         * The retrieval mode. If the current storage class is ARCHIVE, the valid values for this parameter are as follows:
<li>Expedited: The files are made available in five minutes.</li>
<li>Standard: The files are made available in five hours.</li>
<li>Bulk: The files are made available in 12 hours.</li>
If the current storage class is DEEP ARCHIVE, the valid values for this parameter are as follows:
<li>Standard: The files are made available in 24 hours.</li>
<li>Bulk: The files are made available in 48 hours.</li>
         * @type {string || null}
         */
        this.RestoreTier = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileIds = 'FileIds' in params ? params.FileIds : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.RestoreDay = 'RestoreDay' in params ? params.RestoreDay : null;
        this.RestoreTier = 'RestoreTier' in params ? params.RestoreTier : null;

    }
}

/**
 * PullEvents request structure.
 * @class
 */
class PullEventsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Reserved field for special purposes.
         * @type {string || null}
         */
        this.ExtInfo = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Object recognition result.
 * @class
 */
class AiRecognitionTaskObjectResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of object recognition task.
         * @type {AiRecognitionTaskObjectResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of object recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskObjectResultOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an object recognition task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the object recognition task started execution, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the object recognition task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskObjectResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskObjectResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * DescribeAIAnalysisTemplates response structure.
 * @class
 */
class DescribeAIAnalysisTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of video content analysis template details.
         * @type {Array.<AIAnalysisTemplateItem> || null}
         */
        this.AIAnalysisTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.AIAnalysisTemplateSet) {
            this.AIAnalysisTemplateSet = new Array();
            for (let z in params.AIAnalysisTemplateSet) {
                let obj = new AIAnalysisTemplateItem();
                obj.deserialize(params.AIAnalysisTemplateSet[z]);
                this.AIAnalysisTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * CreateSnapshotByTimeOffsetTemplate request structure.
 * @class
 */
class CreateSnapshotByTimeOffsetTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of a time point screencapturing template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Maximum value of the width (or long side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Image format. Valid values: jpg, png. Default value: jpg.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Fill type. "Fill" refers to the way of processing a screenshot when its aspect ratio is different from that of the source video. The following fill types are supported:
<li> stretch: stretch. The screenshot will be stretched frame by frame to match the aspect ratio of the source video, which may make the screenshot "shorter" or "longer";</li>
<li>black: fill with black. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with black color blocks.</li>
<li>white: fill with white. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with white color blocks.</li>
<li>gauss: fill with Gaussian blur. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with Gaussian blur.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.FillType = 'FillType' in params ? params.FillType : null;

    }
}

/**
 * DescribeQualityInspectTemplates response structure.
 * @class
 */
class DescribeQualityInspectTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Comply with the filter conditions, the total number of records.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Media quality inspect template details list.
         * @type {Array.<QualityInspectTemplateItem> || null}
         */
        this.QualityInspectTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.QualityInspectTemplateSet) {
            this.QualityInspectTemplateSet = new Array();
            for (let z in params.QualityInspectTemplateSet) {
                let obj = new QualityInspectTemplateItem();
                obj.deserialize(params.QualityInspectTemplateSet[z]);
                this.QualityInspectTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameters for custom facial recognition
 * @class
 */
class UserDefineFaceReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable custom facial recognition. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for custom facial recognition. Results containing the specified labels are returned. If no labels are specified, all results are returned. To filter by labels, specify the labels when adding custom facial libraries.
Up to 10 labels are allowed, each containing no more than 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `97` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `95` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Speech keyword recognition result.
 * @class
 */
class AiRecognitionTaskAsrWordsResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of speech keyword recognition task.
         * @type {AiRecognitionTaskAsrWordsResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of speech keyword recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskAsrWordsResultOutput || null}
         */
        this.Output = null;

        /**
         * The progress of a speech keyword recognition task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the speech keyword recognition task started, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the speech keyword recognition task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskAsrWordsResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskAsrWordsResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * CreateSubAppId request structure.
 * @class
 */
class CreateSubAppIdRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Subapplication name. Length limit: 40 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Subapplication overview. Length limit: 300 characters.
         * @type {string || null}
         */
        this.Description = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Name = 'Name' in params ? params.Name : null;
        this.Description = 'Description' in params ? params.Description : null;

    }
}

/**
 * DescribeProcedureTemplates response structure.
 * @class
 */
class DescribeProcedureTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of task flow template details.
         * @type {Array.<ProcedureTemplate> || null}
         */
        this.ProcedureTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.ProcedureTemplateSet) {
            this.ProcedureTemplateSet = new Array();
            for (let z in params.ProcedureTemplateSet) {
                let obj = new ProcedureTemplate();
                obj.deserialize(params.ProcedureTemplateSet[z]);
                this.ProcedureTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * SearchMedia request structure.
 * @class
 */
class SearchMediaRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * File ID set. Any element in the set can be matched.
<li>Array length limit: 10.</li>
<li>ID length limit: 40 characters.</li>
         * @type {Array.<string> || null}
         */
        this.FileIds = null;

        /**
         * The file names to use for fuzzy search, which are sorted by relevance in descending order.
<li>Name length limit: 100 characters.</li>
<li>Array length limit: 10</li>
         * @type {Array.<string> || null}
         */
        this.Names = null;

        /**
         * The file name prefixes to search.
<li>Prefix length limit: 100 characters.</li>
<li>Array length limit: 10.</li>
         * @type {Array.<string> || null}
         */
        this.NamePrefixes = null;

        /**
         * File description set. Media file descriptions are fuzzily matched. The higher the match rate, the higher-ranked the result.
<li>Length limit for a single description: 100 characters</li>
<li>Array length limit: 10</li>
         * @type {Array.<string> || null}
         */
        this.Descriptions = null;

        /**
         * Category ID set. The categories of the specified IDs and all subcategories in the set are matched.
<li>Array length limit: 10.</li>
         * @type {Array.<number> || null}
         */
        this.ClassIds = null;

        /**
         * The tags to search. A file is considered a match if it has any of the tags specified.
<li>Tag length limit: 32 characters.</li>
<li>Array length limit: 16.</li>
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * File type. Any element in the set can be matched.
<li>Video: video file</li>
<li>Audio: audio file</li>
<li>Image: image file</li>
         * @type {Array.<string> || null}
         */
        this.Categories = null;

        /**
         * Media file source set. For valid values, please see [SourceType](https://intl.cloud.tencent.com/document/product/266/31773?from_cn_redirect=1#MediaSourceData).
<li>Array length limit: 10.</li>
         * @type {Array.<string> || null}
         */
        this.SourceTypes = null;

        /**
         * The live stream code array. A media file will be returned if it matches any element in the array.
<li>Array length limit: 10</li>
         * @type {Array.<string> || null}
         */
        this.StreamIds = null;

        /**
         * Matches files created within the time period.
<li>Includes specified start and end points in time.</li>
         * @type {TimeRange || null}
         */
        this.CreateTime = null;

        /**
         * Files whose expiration time points are within the specified time range will be returned. Expired files will not be returned.
<li>The files whose expiration time points are on the start or end time of the specified range will also be returned.</li>
         * @type {TimeRange || null}
         */
        this.ExpireTime = null;

        /**
         * Regions where media files are stored, such as `ap-chongqing`. For more regions, see [Storage Regions](https://intl.cloud.tencent.com/document/product/266/9760?from_cn_redirect=1#.E5.B7.B2.E6.94.AF.E6.8C.81.E5.9C.B0.E5.9F.9F.E5.88.97.E8.A1.A8).
<li>Length limit for a single region: 20 characters</li>
<li>Array length limit: 20</li>
         * @type {Array.<string> || null}
         */
        this.StorageRegions = null;

        /**
         * An array of storage classes. Valid values:
<li>STANDARD</li>
<li>STANDARD_IA</li>
<li>ARCHIVE</li>
<li>DEEP_ARCHIVE</li>
         * @type {Array.<string> || null}
         */
        this.StorageClasses = null;

        /**
         * The file formats.
<li>Array length limit: 10</li>
         * @type {Array.<string> || null}
         */
        this.MediaTypes = null;

        /**
         * The file statuses.
<li>`Normal`</li>
<li>`SystemForbidden` (blocked by VOD)</li>
<li>`Forbidden` (blocked by you)</li>
         * @type {Array.<string> || null}
         */
        this.Status = null;

        /**
         * The types of moderation result.
<li>`pass`</li>
<li>`review` (the content may be non-compliant and needs to be reviewed)</li>
<li>`block` (the content is non-compliant and should be blocked)</li>
<li>`notModerated` (the file hasn't been moderated yet)</li>
         * @type {Array.<string> || null}
         */
        this.ReviewResults = null;

        /**
         * The TRTC application IDs. Any file that matches one of the application IDs will be returned.
<li>Array length limit: 10</li>
         * @type {Array.<number> || null}
         */
        this.TrtcSdkAppIds = null;

        /**
         * The TRTC room IDs. Any file that matches one of the room IDs will be returned.
<li>Element length limit: 64 characters.</li>
<li>Array length limit: 10.</li>
         * @type {Array.<string> || null}
         */
        this.TrtcRoomIds = null;

        /**
         * Specifies information entry that needs to be returned for all media files. Multiple entries can be specified simultaneously. N starts from 0. If this field is left empty, all information entries will be returned by default. Valid values:
<li>basicInfo (basic video information).</li>
<li>metaData (video metadata).</li>
<li>transcodeInfo (result information of video transcoding).</li>
<li>animatedGraphicsInfo (result information of animated image generating task).</li>
<li>imageSpriteInfo (image sprite information).</li>
<li>snapshotByTimeOffsetInfo (point-in-time screenshot information).</li>
<li>sampleSnapshotInfo (sampled screenshot information).</li>
<li>keyFrameDescInfo (timestamp information).</li>
<li>adaptiveDynamicStreamingInfo (information of adaptive bitrate streaming).</li>
<li>miniProgramReviewInfo (WeChat Mini Program audit information).</li>
         * @type {Array.<string> || null}
         */
        this.Filters = null;

        /**
         * Sorting order.
<li>Valid value of `Sort.Field`: CreateTime.</li>
<li>If `Text`, `Names`, or `Descriptions` is not empty, the `Sort.Field` field will not take effect, and the search results will be sorted by match rate.</li>
         * @type {SortBy || null}
         */
        this.Sort = null;

        /**
         * <div id="p_offset">Start offset of a paged return. Default value: 0. Entries from No. "Offset" to No. "Offset + Limit - 1" will be returned.
<li>Value range: "Offset + Limit" cannot be more than 5,000. (For more information, please see <a href="#maxResultsDesc">Limit on the Number of Results Returned by API</a>)</li></div>
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * <div id="p_limit">Number of entries returned by a paged query. Default value: 10. Entries from No. "Offset" to No. "Offset + Limit - 1" will be returned.
<li>Value range: "Offset + Limit" cannot be more than 5,000. (For more information, please see <a href="#maxResultsDesc">Limit on the Number of Results Returned by API</a>)</li></div>
         * @type {number || null}
         */
        this.Limit = null;

        /**
         * (This is not recommended. `Names`, `NamePrefixes`, or `Descriptions` should be used instead)
Search text, which fuzzily matches the media file name or description. The more matching items and the higher the match rate, the higher-ranked the result. It can contain up to 64 characters.
         * @type {string || null}
         */
        this.Text = null;

        /**
         * (This is not recommended. `SourceTypes` should be used instead)
Media file source. For valid values, please see [SourceType](https://intl.cloud.tencent.com/document/product/266/31773?from_cn_redirect=1#MediaSourceData).
         * @type {string || null}
         */
        this.SourceType = null;

        /**
         * (Not recommended. Consider using `StreamIds` instead.)
The live stream code.
         * @type {string || null}
         */
        this.StreamId = null;

        /**
         * (This is not recommended. `CreateTime` should be used instead)
Start time in the creation time range.
<li>After or at the start time.</li>
<li>If `CreateTime.After` also exists, it will be used first.</li>
<li>In ISO 8601 format. For more information, please see [ISO Date Format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).</li>
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * (This is not recommended. `CreateTime` should be used instead)
End time in the creation time range.
<li>Before the end time.</li>
<li>If `CreateTime.Before` also exists, it will be used first.</li>
<li>In ISO 8601 format. For more information, please see [ISO Date Format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).</li>
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * This parameter is invalid now.
         * @type {Array.<string> || null}
         */
        this.Vids = null;

        /**
         * This parameter is invalid now.
         * @type {string || null}
         */
        this.Vid = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.FileIds = 'FileIds' in params ? params.FileIds : null;
        this.Names = 'Names' in params ? params.Names : null;
        this.NamePrefixes = 'NamePrefixes' in params ? params.NamePrefixes : null;
        this.Descriptions = 'Descriptions' in params ? params.Descriptions : null;
        this.ClassIds = 'ClassIds' in params ? params.ClassIds : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.Categories = 'Categories' in params ? params.Categories : null;
        this.SourceTypes = 'SourceTypes' in params ? params.SourceTypes : null;
        this.StreamIds = 'StreamIds' in params ? params.StreamIds : null;

        if (params.CreateTime) {
            let obj = new TimeRange();
            obj.deserialize(params.CreateTime)
            this.CreateTime = obj;
        }

        if (params.ExpireTime) {
            let obj = new TimeRange();
            obj.deserialize(params.ExpireTime)
            this.ExpireTime = obj;
        }
        this.StorageRegions = 'StorageRegions' in params ? params.StorageRegions : null;
        this.StorageClasses = 'StorageClasses' in params ? params.StorageClasses : null;
        this.MediaTypes = 'MediaTypes' in params ? params.MediaTypes : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ReviewResults = 'ReviewResults' in params ? params.ReviewResults : null;
        this.TrtcSdkAppIds = 'TrtcSdkAppIds' in params ? params.TrtcSdkAppIds : null;
        this.TrtcRoomIds = 'TrtcRoomIds' in params ? params.TrtcRoomIds : null;
        this.Filters = 'Filters' in params ? params.Filters : null;

        if (params.Sort) {
            let obj = new SortBy();
            obj.deserialize(params.Sort)
            this.Sort = obj;
        }
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;
        this.Text = 'Text' in params ? params.Text : null;
        this.SourceType = 'SourceType' in params ? params.SourceType : null;
        this.StreamId = 'StreamId' in params ? params.StreamId : null;
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.Vids = 'Vids' in params ? params.Vids : null;
        this.Vid = 'Vid' in params ? params.Vid : null;

    }
}

/**
 * Dynamic range information.
 * @class
 */
class DynamicRangeInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The dynamic range information. Valid values:
<li>`SDR`: Standard Dynamic Range</li>
<li>`HDR`: High Dynamic Range</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The HDR type. This parameter is valid only if `Type` is `HDR`. Valid values:
<li>`hdr10`</li>
<li>`hlg`</li>
         * @type {string || null}
         */
        this.HDRType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.HDRType = 'HDRType' in params ? params.HDRType : null;

    }
}

/**
 * CreateSampleSnapshotTemplate request structure.
 * @class
 */
class CreateSampleSnapshotTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Sampled screencapturing type. Valid values:
<li>Percent: by percent.</li>
<li>Time: by time interval.</li>
         * @type {string || null}
         */
        this.SampleType = null;

        /**
         * Sampling interval.
<li>If `SampleType` is `Percent`, sampling will be performed at an interval of the specified percentage.</li>
<li>If `SampleType` is `Time`, sampling will be performed at the specified time interval in seconds.</li>
         * @type {number || null}
         */
        this.SampleInterval = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Name of a sampled screencapturing template. Length limit: 64 characters.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Maximum value of the width (or long side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Width = null;

        /**
         * Maximum value of the height (or short side) of a screenshot in px. Value range: 0 and [128, 4,096].
<li>If both `Width` and `Height` are 0, the resolution will be the same as that of the source video;</li>
<li>If `Width` is 0, but `Height` is not 0, `Width` will be proportionally scaled;</li>
<li>If `Width` is not 0, but `Height` is 0, `Height` will be proportionally scaled;</li>
<li>If both `Width` and `Height` are not 0, the custom resolution will be used.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Height = null;

        /**
         * Resolution adaption. Valid values:
<li>open: enabled. In this case, `Width` represents the long side of a video, while `Height` the short side;</li>
<li>close: disabled. In this case, `Width` represents the width of a video, while `Height` the height.</li>
Default value: open.
         * @type {string || null}
         */
        this.ResolutionAdaptive = null;

        /**
         * Image format. Valid values: jpg, png. Default value: jpg.
         * @type {string || null}
         */
        this.Format = null;

        /**
         * Template description. Length limit: 256 characters.
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Fill type. "Fill" refers to the way of processing a screenshot when its aspect ratio is different from that of the source video. The following fill types are supported:
<li> stretch: stretch. The screenshot will be stretched frame by frame to match the aspect ratio of the source video, which may make the screenshot "shorter" or "longer";</li>
<li>black: fill with black. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with black color blocks.</li>
<li>white: fill with white. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with white color blocks.</li>
<li>gauss: fill with Gaussian blur. This option retains the aspect ratio of the source video for the screenshot and fills the unmatched area with Gaussian blur.</li>
Default value: black.
         * @type {string || null}
         */
        this.FillType = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SampleType = 'SampleType' in params ? params.SampleType : null;
        this.SampleInterval = 'SampleInterval' in params ? params.SampleInterval : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.ResolutionAdaptive = 'ResolutionAdaptive' in params ? params.ResolutionAdaptive : null;
        this.Format = 'Format' in params ? params.Format : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.FillType = 'FillType' in params ? params.FillType : null;

    }
}

/**
 * DescribeRebuildMediaTemplates response structure.
 * @class
 */
class DescribeRebuildMediaTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The total number of records that meet the conditions.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Rebuild media template details list.
         * @type {Array.<RebuildMediaTemplate> || null}
         */
        this.RebuildMediaTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.RebuildMediaTemplateSet) {
            this.RebuildMediaTemplateSet = new Array();
            for (let z in params.RebuildMediaTemplateSet) {
                let obj = new RebuildMediaTemplate();
                obj.deserialize(params.RebuildMediaTemplateSet[z]);
                this.RebuildMediaTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Audio gain adjustment parameter
 * @class
 */
class AudioVolumeParam extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to mute. Valid values: 0, 1.
<li>0: not muted.</li>
<li>1: muted.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Mute = null;

        /**
         * Audio gain. Value range: 0-10.
<li>If the value is greater than 1, the volume will be increased.</li>
<li>If the value is smaller than 1, the volume will be decreased.</li>
<li>0 and 1: no change.</li>
Default value: 0.
         * @type {number || null}
         */
        this.Gain = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Mute = 'Mute' in params ? params.Mute : null;
        this.Gain = 'Gain' in params ? params.Gain : null;

    }
}

/**
 * Noise removal configuration.
 * @class
 */
class AudioDenoiseInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable noise removal. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The noise removal type. This parameter is valid only if `Switch` is `ON`. Valid values:
<li>`weak`</li>
<li>`normal`</li>
<li>`strong`</li>
Default value: `weak`.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Result for ASR-based recognition of pornographic content
 * @class
 */
class AiReviewTaskPornAsrResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input for ASR-based recognition of pornographic content
         * @type {AiReviewPornAsrTaskInput || null}
         */
        this.Input = null;

        /**
         * Output for ASR-based recognition of pornographic content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {AiReviewPornAsrTaskOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an ASR-based moderation task (pornographic content). Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiReviewPornAsrTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiReviewPornAsrTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * ModifyClass response structure.
 * @class
 */
class ModifyClassResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Control parameters for video screen black border, white border, black screen, and white screen detection.
 * @class
 */
class BlackWhiteEdgeConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video screen black border, white border, black screen, white screen detection switch, optional values: 
<li>ON: turn on; </li>
<li>OFF: turn off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * VOD video file editing information
 * @class
 */
class EditMediaFileInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Offset time of the start of the video clip, unit: seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * Offset time at the end of the video clip, unit: seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

    }
}

/**
 * Control parameters for video screen black border, white border, black screen, and white screen detection.
 * @class
 */
class BlackWhiteEdgeConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video screen black border, white border, black screen, white screen detection switch, optional values: 
<li>ON: turn on; </li>
<li>OFF: turn off. </li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * Input parameter of image watermarking template
 * @class
 */
class ImageWatermarkInputForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * String generated by [Base64-encoding](https://tools.ietf.org/html/rfc4648) a watermark image. JPEG and PNG images are supported.
         * @type {string || null}
         */
        this.ImageContent = null;

        /**
         * Watermark width. % and px formats are supported:
<li>If the string ends in %, the `Width` of the watermark will be the specified percentage of the video width. For example, `10%` means that `Width` is 10% of the video width;</li>
<li>If the string ends in px, the `Width` of the watermark will be in pixels. For example, `100px` means that `Width` is 100 pixels. Value range: [8, 4096].</li>
         * @type {string || null}
         */
        this.Width = null;

        /**
         * Watermark height. % and px formats are supported:
<li>If the string ends in %, the `Height` of the watermark will be the specified percentage of the video height; for example, `10%` means that `Height` is 10% of the video height;</li>
<li>If the string ends in px, the `Height` of the watermark will be in px; for example, `100px` means that `Height` is 100 px. Valid values: 0 or [8,4096].</li>
         * @type {string || null}
         */
        this.Height = null;

        /**
         * Repeat type of an animated watermark. Valid values:
<li>once: no longer appears after watermark playback ends.</li>
<li>repeat_last_frame: stays on the last frame after watermark playback ends.</li>
<li>repeat (default): repeats the playback until the video ends.</li>
         * @type {string || null}
         */
        this.RepeatType = null;

        /**
         * 
         * @type {number || null}
         */
        this.Transparency = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ImageContent = 'ImageContent' in params ? params.ImageContent : null;
        this.Width = 'Width' in params ? params.Width : null;
        this.Height = 'Height' in params ? params.Height : null;
        this.RepeatType = 'RepeatType' in params ? params.RepeatType : null;
        this.Transparency = 'Transparency' in params ? params.Transparency : null;

    }
}

/**
 * ProcessMediaByProcedure response structure.
 * @class
 */
class ProcessMediaByProcedureResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID for the task type `Procedure`, if the task flow specified by `ProcedureName` includes one or more of `MediaProcessTask`, `AiAnalysisTask`, `AiRecognitionTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The task ID for the task type `ReviewAudioVideo`, if the task flow specified by `ProcedureName` includes `ReviewAudioVideoTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ReviewAudioVideoTaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.ReviewAudioVideoTaskId = 'ReviewAudioVideoTaskId' in params ? params.ReviewAudioVideoTaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * PullUpload response structure.
 * @class
 */
class PullUploadResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video pull for upload task ID, which can be used to query the status of pull for upload task.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The input of a watermark removal task.
 * @class
 */
class RemoveWaterMarkTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * The ID of the media file.
         * @type {string || null}
         */
        this.FileId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;

    }
}

/**
 * Control parameter of face recognition task
 * @class
 */
class FaceConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of face recognition task. Valid values:
<li>ON: enables intelligent face recognition task;</li>
<li>OFF: disables intelligent face recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Face recognition filter score. If this score is reached or exceeded, a recognition result will be returned. Value range: 0–100. Default value: 95.
         * @type {number || null}
         */
        this.Score = null;

        /**
         * Default face filter labels, which specify the types of faces to return. If this parameter is left empty, the recognition results for all labels are returned. Valid values:
<li>`entertainment`: people in the entertainment industry</li>
<li>`sport`: sports celebrities</li>
<li>`politician`: politically sensitive people</li>
         * @type {Array.<string> || null}
         */
        this.DefaultLibraryLabelSet = null;

        /**
         * Custom face labels for filtering. After you specify a label, callbacks of face images without this label will be returned. If this parameter is not specified or left empty, callbacks of all face images will be returned.
You can specify up to 100 labels, with each containing up to 16 characters.
         * @type {Array.<string> || null}
         */
        this.UserDefineLibraryLabelSet = null;

        /**
         * Figure library. Valid values:
<li>Default: default figure library;</li>
<li>UserDefine: custom figure library.</li>
<li>All: both default and custom figure libraries will be used.</li>
Default value: All (both default and custom figure libraries will be used.)
         * @type {string || null}
         */
        this.FaceLibrary = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Score = 'Score' in params ? params.Score : null;
        this.DefaultLibraryLabelSet = 'DefaultLibraryLabelSet' in params ? params.DefaultLibraryLabelSet : null;
        this.UserDefineLibraryLabelSet = 'UserDefineLibraryLabelSet' in params ? params.UserDefineLibraryLabelSet : null;
        this.FaceLibrary = 'FaceLibrary' in params ? params.FaceLibrary : null;

    }
}

/**
 * Output of intelligent face recognition.
 * @class
 */
class AiRecognitionTaskFaceResultOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intelligent face recognition result set
<font color=red>Note</font>: this list displays up to the first 100 results. You can get all the results from the file whose URL is `SegmentSetFileUrl`.
         * @type {Array.<AiRecognitionTaskFaceResultItem> || null}
         */
        this.ResultSet = null;

        /**
         * URL to the file of the intelligent face recognition result set. The file format is JSON, and the data structure is the same as `SegmentSet`. The file will be deleted upon the expiration time `SegmentSetFileUrlExpireTime`, instead of being stored permanently.
         * @type {string || null}
         */
        this.ResultSetFileUrl = null;

        /**
         * Expiration time of the URL to the file of the intelligent face recognition result set, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732)
         * @type {string || null}
         */
        this.ResultSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ResultSet) {
            this.ResultSet = new Array();
            for (let z in params.ResultSet) {
                let obj = new AiRecognitionTaskFaceResultItem();
                obj.deserialize(params.ResultSet[z]);
                this.ResultSet.push(obj);
            }
        }
        this.ResultSetFileUrl = 'ResultSetFileUrl' in params ? params.ResultSetFileUrl : null;
        this.ResultSetFileUrlExpireTime = 'ResultSetFileUrlExpireTime' in params ? params.ResultSetFileUrlExpireTime : null;

    }
}

/**
 * DeleteImageProcessingTemplate response structure.
 * @class
 */
class DeleteImageProcessingTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameters for recognition of pornographic content in images
 * @class
 */
class PornImgReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable recognition of pornographic content in images. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for recognition of pornographic content in images. Results containing the specified labels are returned. If no labels are specified, all results are returned. Valid values:
<li>porn</li>
<li>vulgar</li>
<li>intimacy</li>
<li>sexy</li>
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * CreateWatermarkTemplate response structure.
 * @class
 */
class CreateWatermarkTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of watermarking template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Watermark image address. This field is valid only when `Type` is `image`.
         * @type {string || null}
         */
        this.ImageUrl = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.ImageUrl = 'ImageUrl' in params ? params.ImageUrl : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameters for recognition of pornographic content in images
 * @class
 */
class PornImgReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable recognition of pornographic content in images. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for recognition of pornographic content in images. Results containing the specified labels are returned. If no labels are specified, all results are returned. Valid values:
<li>porn</li>
<li>vulgar</li>
<li>intimacy</li>
<li>sexy</li>
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `90` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `0` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Media quality inspection template details.
 * @class
 */
class QualityInspectTemplateItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media quality inspection template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Template Type, available options: <li>Preset: Preset Template;</li> <li>Custom: User Custom Template.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Media quality inspection template name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Template description. 
         * @type {string || null}
         */
        this.Comment = null;

        /**
         * Frame interval, unit in seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

        /**
         * Control parameters for detecting video jitter and ghosting.
         * @type {JitterConfigureInfo || null}
         */
        this.JitterConfigure = null;

        /**
         * Control parameters for detecting video blur.
         * @type {BlurConfigureInfo || null}
         */
        this.BlurConfigure = null;

        /**
         * Control parameters for detecting low brightness and overexposure of video.
         * @type {AbnormalLightingConfigureInfo || null}
         */
        this.AbnormalLightingConfigure = null;

        /**
         * Control parameters for detecting video crash.
         * @type {CrashScreenConfigureInfo || null}
         */
        this.CrashScreenConfigure = null;

        /**
         * Control parameters for detecting video black edges, white edges, black screen, and white screen.
         * @type {BlackWhiteEdgeConfigureInfo || null}
         */
        this.BlackWhiteEdgeConfigure = null;

        /**
         * Control parameters for detecting video noise.
         * @type {NoiseConfigureInfo || null}
         */
        this.NoiseConfigure = null;

        /**
         * Control parameters for detecting video mosaic.
         * @type {MosaicConfigureInfo || null}
         */
        this.MosaicConfigure = null;

        /**
         * Control parameters for QR code detection in video.
         * @type {QRCodeConfigureInfo || null}
         */
        this.QRCodeConfigure = null;

        /**
         * Control parameters for video quality evaluation.
         * @type {QualityEvaluationConfigureInfo || null}
         */
        this.QualityEvaluationConfigure = null;

        /**
         * Control parameters for audio (mutes, bass, blast sound).
         * @type {VoiceConfigureInfo || null}
         */
        this.VoiceConfigure = null;

        /**
         * Template Creation Time, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.CreateTime = null;

        /**
         * Template Modification time, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.UpdateTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Comment = 'Comment' in params ? params.Comment : null;
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;

        if (params.JitterConfigure) {
            let obj = new JitterConfigureInfo();
            obj.deserialize(params.JitterConfigure)
            this.JitterConfigure = obj;
        }

        if (params.BlurConfigure) {
            let obj = new BlurConfigureInfo();
            obj.deserialize(params.BlurConfigure)
            this.BlurConfigure = obj;
        }

        if (params.AbnormalLightingConfigure) {
            let obj = new AbnormalLightingConfigureInfo();
            obj.deserialize(params.AbnormalLightingConfigure)
            this.AbnormalLightingConfigure = obj;
        }

        if (params.CrashScreenConfigure) {
            let obj = new CrashScreenConfigureInfo();
            obj.deserialize(params.CrashScreenConfigure)
            this.CrashScreenConfigure = obj;
        }

        if (params.BlackWhiteEdgeConfigure) {
            let obj = new BlackWhiteEdgeConfigureInfo();
            obj.deserialize(params.BlackWhiteEdgeConfigure)
            this.BlackWhiteEdgeConfigure = obj;
        }

        if (params.NoiseConfigure) {
            let obj = new NoiseConfigureInfo();
            obj.deserialize(params.NoiseConfigure)
            this.NoiseConfigure = obj;
        }

        if (params.MosaicConfigure) {
            let obj = new MosaicConfigureInfo();
            obj.deserialize(params.MosaicConfigure)
            this.MosaicConfigure = obj;
        }

        if (params.QRCodeConfigure) {
            let obj = new QRCodeConfigureInfo();
            obj.deserialize(params.QRCodeConfigure)
            this.QRCodeConfigure = obj;
        }

        if (params.QualityEvaluationConfigure) {
            let obj = new QualityEvaluationConfigureInfo();
            obj.deserialize(params.QualityEvaluationConfigure)
            this.QualityEvaluationConfigure = obj;
        }

        if (params.VoiceConfigure) {
            let obj = new VoiceConfigureInfo();
            obj.deserialize(params.VoiceConfigure)
            this.VoiceConfigure = obj;
        }
        this.CreateTime = 'CreateTime' in params ? params.CreateTime : null;
        this.UpdateTime = 'UpdateTime' in params ? params.UpdateTime : null;

    }
}

/**
 * Output for OCR-based recognition of politically sensitive content
 * @class
 */
class AiReviewPoliticalOcrTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence score for the OCR-detected politically sensitive content. Value range: 0-100
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Processing suggestion for the OCR-detected politically sensitive content. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * List of video segments that contain OCR-detected politically sensitive content
<font color=red>Note</font>: This list displays the first 100 results at most. You can get all the results from the file at the URL specified by `SegmentSetFileUrl`.
         * @type {Array.<MediaContentReviewOcrTextSegmentItem> || null}
         */
        this.SegmentSet = null;

        /**
         * URL to the file for video segments that contain OCR-detected politically sensitive content. The file is in JSON format and has the same data structure as `SegmentSet`. Instead of being saved permanently, the file is deleted upon the expiration time specified by `SegmentSetFileUrlExpireTime`.
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Expiration time of the URL to the file for video segments that contain OCR-detected politically sensitive content, in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732#iso-date-format)
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new MediaContentReviewOcrTextSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * Control parameter of full text recognition task
 * @class
 */
class OcrFullTextConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of full text recognition task. Valid values:
<li>ON: enables intelligent full text recognition task;</li>
<li>OFF: disables intelligent full text recognition task.</li>
         * @type {string || null}
         */
        this.Switch = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

    }
}

/**
 * CommitUpload request structure.
 * @class
 */
class CommitUploadRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * VOD session, which takes the returned value (VodSessionKey) of the `ApplyUpload` API.
         * @type {string || null}
         */
        this.VodSessionKey = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.VodSessionKey = 'VodSessionKey' in params ? params.VodSessionKey : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Watermark cycle configuration.
 * @class
 */
class WatermarkCycleConfigForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Playback time point in seconds when a watermark appears in a video for the first time.
         * @type {number || null}
         */
        this.StartTime = null;

        /**
         * Display duration of a watermark in a watermark cycle in seconds.
         * @type {number || null}
         */
        this.DisplayDuration = null;

        /**
         * Duration of a watermark cycle in seconds.
If 0 is entered, a watermark will last for only one cycle (i.e., visible for `DisplayDuration` seconds throughout the video).
         * @type {number || null}
         */
        this.CycleDuration = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.DisplayDuration = 'DisplayDuration' in params ? params.DisplayDuration : null;
        this.CycleDuration = 'CycleDuration' in params ? params.CycleDuration : null;

    }
}

/**
 * The details of a time point screenshot task. This parameter is only valid for the v2017 time point screenshot API.
 * @class
 */
class SnapshotByTimeOffsetTask2017 extends  AbstractModel {
    constructor(){
        super();

        /**
         * Screencapturing task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Screenshot file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * screenshot specification. For more information, please see [Parameter Template for Time Point Screencapturing](https://intl.cloud.tencent.com/document/product/266/33480?from_cn_redirect=1#.E6.97.B6.E9.97.B4.E7.82.B9.E6.88.AA.E5.9B.BE.E6.A8.A1.E6.9D.BF).
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * Result information of screencapturing.
         * @type {Array.<SnapshotByTimeOffset2017> || null}
         */
        this.SnapshotInfoSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;

        if (params.SnapshotInfoSet) {
            this.SnapshotInfoSet = new Array();
            for (let z in params.SnapshotInfoSet) {
                let obj = new SnapshotByTimeOffset2017();
                obj.deserialize(params.SnapshotInfoSet[z]);
                this.SnapshotInfoSet.push(obj);
            }
        }

    }
}

/**
 * Moderation details.
 * @class
 */
class ReviewInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The moderation template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The suggestion. Valid values:
<li>pass</li>
<li>review</li>
<li>block</li>
         * @type {string || null}
         */
        this.Suggestion = null;

        /**
         * The moderation type in the format of `Form.Label`. This parameter is valid if `Suggestion` is `review` or `block`.
`Form` indicates the type of inappropriate content detected. Valid values:
<li>`Image` (people or icons in images)</li>
<li>`OCR` (text in images)</li>
<li>`ASR` (speech)</li>
<li>`Voice`</li>
`Label` indicates the violation label. Valid values:
<li>`Porn` (pornographic content)</li>
<li>`Terror` (terrorist content)</li>
<li>`Polity` (politically sensitive content)</li>
<li>`Ad` (advertisement)</li>
<li>`Illegal` (illegal content)</li>
<li>`Abuse`</li>
<li>`Moan`</li>
         * @type {Array.<string> || null}
         */
        this.TypeSet = null;

        /**
         * The moderation time in [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.ReviewTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.Suggestion = 'Suggestion' in params ? params.Suggestion : null;
        this.TypeSet = 'TypeSet' in params ? params.TypeSet : null;
        this.ReviewTime = 'ReviewTime' in params ? params.ReviewTime : null;

    }
}

/**
 * Category information description
 * @class
 */
class MediaClassInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The category ID.
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Parent category ID, which is -1 for a first-level category.
         * @type {number || null}
         */
        this.ParentId = null;

        /**
         * The category name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Category level. 0 for first-level category, up to 3, i.e., up to 4 levels of categories are allowed.
         * @type {number || null}
         */
        this.Level = null;

        /**
         * The IDs of the immediate subcategories of the current category.
         * @type {Array.<number> || null}
         */
        this.SubClassIdSet = null;

        /**
         * The category name. This parameter is not recommended. Please use `Name` instead.
         * @type {string || null}
         */
        this.ClassName = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ParentId = 'ParentId' in params ? params.ParentId : null;
        this.Name = 'Name' in params ? params.Name : null;
        this.Level = 'Level' in params ? params.Level : null;
        this.SubClassIdSet = 'SubClassIdSet' in params ? params.SubClassIdSet : null;
        this.ClassName = 'ClassName' in params ? params.ClassName : null;

    }
}

/**
 * Input parameter type of AI-based intelligent video analysis
 * @class
 */
class AiAnalysisTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Video content analysis template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * DeleteAnimatedGraphicsTemplate request structure.
 * @class
 */
class DeleteAnimatedGraphicsTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an animated image generating template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DeleteSnapshotByTimeOffsetTemplate request structure.
 * @class
 */
class DeleteSnapshotByTimeOffsetTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of a specified time point screencapturing template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * DescribeAnimatedGraphicsTemplates response structure.
 * @class
 */
class DescribeAnimatedGraphicsTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Number of eligible entries.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * List of animated image generating template details.
         * @type {Array.<AnimatedGraphicsTemplate> || null}
         */
        this.AnimatedGraphicsTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.AnimatedGraphicsTemplateSet) {
            this.AnimatedGraphicsTemplateSet = new Array();
            for (let z in params.AnimatedGraphicsTemplateSet) {
                let obj = new AnimatedGraphicsTemplate();
                obj.deserialize(params.AnimatedGraphicsTemplateSet[z]);
                this.AnimatedGraphicsTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Extract copyright watermark
 * @class
 */
class ExtractCopyRightWatermarkTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task status, values:
<li>PROCESSING: Processing;</li>
<li>FINISH: Completed. </li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code, 0 means success, other values u200bu200bmean failure:
<li>40000: The input parameters are illegal, please check the input parameters;</li>
<li>60000: Source file error (such as video data damage), Please confirm whether the source file is normal;</li>
<li>70000: Internal service error, it is recommended to try again. </li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Error code. An empty string indicates success. Other values u200bu200bindicate failure. For values, please refer to [Video Processing Error Code](https://www.tencentcloud.com/document/product/266/39145) list.
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Extract copyright watermark task input information.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ExtractCopyRightWatermarkTaskInput || null}
         */
        this.Input = null;

        /**
         * Extract copyright watermark task output information.
Note: This field may return null, indicating that no valid value can be obtained.
         * @type {ExtractCopyRightWatermarkTaskOutput || null}
         */
        this.Output = null;

        /**
         * Identification code used for deduplication. If there is a request for the same identification code within seven days, this request will return an error. The maximum length is 50 characters, without or with an empty string to indicate no deduplication.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * Source context, used to transparently transmit user request information. The task flow status change callback will return the value of this field, which can be up to 1000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;

        if (params.Input) {
            let obj = new ExtractCopyRightWatermarkTaskInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new ExtractCopyRightWatermarkTaskOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;

    }
}

/**
 * Result information of intelligent frame-specific tagging
 * @class
 */
class MediaAiAnalysisFrameTagItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Frame-specific tag name.
         * @type {string || null}
         */
        this.Tag = null;

        /**
         * Category list of frame-specific tag names. `CategorySet.N` indicates the N+1-level category.
For example, if the `Tag` is "tower", and `CategorySet` contains two elements (`CategorySet.0` is "scene", and `CategorySet.1` is "architecture"), then the frame-specific tag is "tower", the first-level category is "scene", and the second-level category is "architecture".
         * @type {Array.<string> || null}
         */
        this.CategorySet = null;

        /**
         * Confidence of intelligently generated frame-specific tag between 0 and 100.
         * @type {number || null}
         */
        this.Confidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Tag = 'Tag' in params ? params.Tag : null;
        this.CategorySet = 'CategorySet' in params ? params.CategorySet : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;

    }
}

/**
 * Abnormal segment information of media quality inspection.
 * @class
 */
class QualityInspectItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Abnormal segment start offset time, unit: seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * Abnormal segment termination's offset time, unit: seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

        /**
         * Detect abnormality in the area coordinates. The array contains 4 elements [x1, y1, x2, y2], which indicate the horizontal and vertical coordinates of the upper left and lower right points of the area in sequence. <font color=red>Pay attention to:</font> The value of this field is valid only when Type is one of the following: <li>BlackWhiteEdge: black and white edge;</li> <li>Mosaic: mosaic;</li> <li>QRCode: QR code;</li> <li>AppletCode: Mini Program code;</li> <li>BarCode: bar code.</li>
         * @type {Array.<number> || null}
         */
        this.AreaCoordSet = null;

        /**
         * Confidence threshold, range: [0, 100]. <font color=red>Pay attention to:</font> This field is valid only when Type has one of the following values: <li>Mosaic: Mosaic;</li> <li>QRCode: QR code;</li> <li>AppletCode: Mini Program code;</li> <li>BarCode: Bar code.</li>
         * @type {number || null}
         */
        this.Confidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;
        this.AreaCoordSet = 'AreaCoordSet' in params ? params.AreaCoordSet : null;
        this.Confidence = 'Confidence' in params ? params.Confidence : null;

    }
}

/**
 * The information of a pull and upload task.
 * @class
 */
class PullUploadTask extends  AbstractModel {
    constructor(){
        super();

        /**
         * The task ID.
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * Task flow status. Valid values:
<li>PROCESSING: processing;</li>
<li>FINISH: completed.</li>
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. 0: success; other values: failure.
<li>40000: invalid input parameter. Please check it;</li>
<li>60000: invalid source file (e.g., video data is corrupted). Please check whether the source file is normal;</li>
<li>70000: internal service error. Please try again.</li>
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * The ID of the uploaded file.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The basic information of the uploaded file.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {MediaBasicInfo || null}
         */
        this.MediaBasicInfo = null;

        /**
         * The metadata of the output video.
         * @type {MediaMetaData || null}
         */
        this.MetaData = null;

        /**
         * The playback address of the uploaded file.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * The task ID for the task type `Procedure`. If a task flow is specified by [PullUpload](https://intl.cloud.tencent.com/document/api/266/35575?from_cn_redirect=1), and the task flow includes one or more of `MediaProcessTask`, `AiAnalysisTask`, and `AiRecognitionTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ProcedureTaskId = null;

        /**
         * The task ID for the task type `ReviewAudioVideo`. If a task flow is specified by [PullUpload](https://intl.cloud.tencent.com/document/api/266/35575?from_cn_redirect=1), and the task flow includes `ReviewAudioVideoTask`, the task specified by this parameter will be executed.
         * @type {string || null}
         */
        this.ReviewAudioVideoTaskId = null;

        /**
         * The source context, which is used to pass through user request information. The [PullComplete](https://intl.cloud.tencent.com/document/product/266/7831?from_cn_redirect=1) callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The ID used for deduplication. If there was a request with the same ID in the last seven days, the current request will return an error. The ID can contain up to 50 characters. If this parameter is left empty or a blank string is entered, no deduplication will be performed.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The progress of the pull and upload task. Value range: 1-100.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;
        this.FileId = 'FileId' in params ? params.FileId : null;

        if (params.MediaBasicInfo) {
            let obj = new MediaBasicInfo();
            obj.deserialize(params.MediaBasicInfo)
            this.MediaBasicInfo = obj;
        }

        if (params.MetaData) {
            let obj = new MediaMetaData();
            obj.deserialize(params.MetaData)
            this.MetaData = obj;
        }
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.ProcedureTaskId = 'ProcedureTaskId' in params ? params.ProcedureTaskId : null;
        this.ReviewAudioVideoTaskId = 'ReviewAudioVideoTaskId' in params ? params.ReviewAudioVideoTaskId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * DescribeImageProcessingTemplates response structure.
 * @class
 */
class DescribeImageProcessingTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The total number of records that meet the conditions.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * The information of the queried image processing templates.
         * @type {Array.<ImageProcessingTemplate> || null}
         */
        this.ImageProcessingTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.ImageProcessingTemplateSet) {
            this.ImageProcessingTemplateSet = new Array();
            for (let z in params.ImageProcessingTemplateSet) {
                let obj = new ImageProcessingTemplate();
                obj.deserialize(params.ImageProcessingTemplateSet[z]);
                this.ImageProcessingTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Parameters for custom OCR-based recognition
 * @class
 */
class UserDefineOcrTextReviewTemplateInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable custom OCR-based recognition. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Filter labels for custom OCR-based recognition. Results containing the specified labels are returned. If no labels are specified, all results are returned. To filter by labels, specify the labels when adding keywords for custom OCR-based recognition.
Up to 10 labels are allowed, each containing no more than 16 characters.
         * @type {Array.<string> || null}
         */
        this.LabelSet = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.LabelSet = 'LabelSet' in params ? params.LabelSet : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;

    }
}

/**
 * Input parameter type of sampling screencapturing task
 * @class
 */
class SampleSnapshotTaskInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Sampled screencapturing template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * List of up to 10 image or text watermarks.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<WatermarkInput> || null}
         */
        this.WatermarkSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

        if (params.WatermarkSet) {
            this.WatermarkSet = new Array();
            for (let z in params.WatermarkSet) {
                let obj = new WatermarkInput();
                obj.deserialize(params.WatermarkSet[z]);
                this.WatermarkSet.push(obj);
            }
        }

    }
}

/**
 * ReviewImage request structure.
 * @class
 */
class ReviewImageRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique ID of the media file. For this API to work, the file must be an image.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The image moderation template ID. Valid values: <li>10: The preset template, whose violation labels are `Porn` and `Terror`.</li>
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * The video remaster parameters.
 * @class
 */
class RebuildVideoInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * The image restoration parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {RepairInfo || null}
         */
        this.RepairInfo = null;

        /**
         * The smart frame interpolation parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {VideoFrameInterpolationInfo || null}
         */
        this.VideoFrameInterpolationInfo = null;

        /**
         * The super resolution parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {SuperResolutionInfo || null}
         */
        this.SuperResolutionInfo = null;

        /**
         * The high dynamic range (HDR) configuration.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {HDRInfo || null}
         */
        this.HDRInfo = null;

        /**
         * The image noise removal parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {VideoDenoiseInfo || null}
         */
        this.VideoDenoiseInfo = null;

        /**
         * The color enhancement parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ColorEnhanceInfo || null}
         */
        this.ColorInfo = null;

        /**
         * The detail enhancement parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {SharpEnhanceInfo || null}
         */
        this.SharpInfo = null;

        /**
         * The face enhancement parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {FaceEnhanceInfo || null}
         */
        this.FaceInfo = null;

        /**
         * The low-light enhancement parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {LowLightEnhanceInfo || null}
         */
        this.LowLightInfo = null;

        /**
         * The banding removal parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ScratchRepairInfo || null}
         */
        this.ScratchRepairInfo = null;

        /**
         * The artifact removal parameters.
Note: This field may return null, indicating that no valid values can be obtained.
         * @type {ArtifactRepairInfo || null}
         */
        this.ArtifactRepairInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.RepairInfo) {
            let obj = new RepairInfo();
            obj.deserialize(params.RepairInfo)
            this.RepairInfo = obj;
        }

        if (params.VideoFrameInterpolationInfo) {
            let obj = new VideoFrameInterpolationInfo();
            obj.deserialize(params.VideoFrameInterpolationInfo)
            this.VideoFrameInterpolationInfo = obj;
        }

        if (params.SuperResolutionInfo) {
            let obj = new SuperResolutionInfo();
            obj.deserialize(params.SuperResolutionInfo)
            this.SuperResolutionInfo = obj;
        }

        if (params.HDRInfo) {
            let obj = new HDRInfo();
            obj.deserialize(params.HDRInfo)
            this.HDRInfo = obj;
        }

        if (params.VideoDenoiseInfo) {
            let obj = new VideoDenoiseInfo();
            obj.deserialize(params.VideoDenoiseInfo)
            this.VideoDenoiseInfo = obj;
        }

        if (params.ColorInfo) {
            let obj = new ColorEnhanceInfo();
            obj.deserialize(params.ColorInfo)
            this.ColorInfo = obj;
        }

        if (params.SharpInfo) {
            let obj = new SharpEnhanceInfo();
            obj.deserialize(params.SharpInfo)
            this.SharpInfo = obj;
        }

        if (params.FaceInfo) {
            let obj = new FaceEnhanceInfo();
            obj.deserialize(params.FaceInfo)
            this.FaceInfo = obj;
        }

        if (params.LowLightInfo) {
            let obj = new LowLightEnhanceInfo();
            obj.deserialize(params.LowLightInfo)
            this.LowLightInfo = obj;
        }

        if (params.ScratchRepairInfo) {
            let obj = new ScratchRepairInfo();
            obj.deserialize(params.ScratchRepairInfo)
            this.ScratchRepairInfo = obj;
        }

        if (params.ArtifactRepairInfo) {
            let obj = new ArtifactRepairInfo();
            obj.deserialize(params.ArtifactRepairInfo)
            this.ArtifactRepairInfo = obj;
        }

    }
}

/**
 * DescribeHeadTailTemplates response structure.
 * @class
 */
class DescribeHeadTailTemplatesResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The total number of records matching the filter criteria.
         * @type {number || null}
         */
        this.TotalCount = null;

        /**
         * Head Tail Template Details.
         * @type {Array.<HeadTailTemplate> || null}
         */
        this.HeadTailTemplateSet = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TotalCount = 'TotalCount' in params ? params.TotalCount : null;

        if (params.HeadTailTemplateSet) {
            this.HeadTailTemplateSet = new Array();
            for (let z in params.HeadTailTemplateSet) {
                let obj = new HeadTailTemplate();
                obj.deserialize(params.HeadTailTemplateSet[z]);
                this.HeadTailTemplateSet.push(obj);
            }
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * HandleCurrentPlaylist request structure.
 * @class
 */
class HandleCurrentPlaylistRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <B>VOD [subapplication](https://intl.cloud.tencent.com/document/product/266/14574) id.</b>.
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The unique identifier of the playlist.
         * @type {string || null}
         */
        this.RoundPlayId = null;

        /**
         * Operation type, available options:<li>insert: insert program into the current playlist.</li> <li>inserttemporary: temporarily insert program into the current playlist. can only be inserted after the currently playing program. temporarily inserted programs are only effective during this carousel process.</li><li>delete: delete program from the playlist. cannot delete currently playing programs.</li>.
         * @type {string || null}
         */
        this.Operation = null;

        /**
         * Playlist program id. required when operation is insert, indicating the program list will be inserted after this program. the insertion position must be after the currently playing program.
         * @type {string || null}
         */
        this.ItemId = null;

        /**
         * Program list. required when operation is insert, inserttemporary, delete, indicating the list of programs to be operated on. the list length can be up to a maximum of 10.
         * @type {Array.<RoundPlayListItemInfo> || null}
         */
        this.RoundPlaylist = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.RoundPlayId = 'RoundPlayId' in params ? params.RoundPlayId : null;
        this.Operation = 'Operation' in params ? params.Operation : null;
        this.ItemId = 'ItemId' in params ? params.ItemId : null;

        if (params.RoundPlaylist) {
            this.RoundPlaylist = new Array();
            for (let z in params.RoundPlaylist) {
                let obj = new RoundPlayListItemInfo();
                obj.deserialize(params.RoundPlaylist[z]);
                this.RoundPlaylist.push(obj);
            }
        }

    }
}

/**
 * Parameters for recognition of terrorism content
 * @class
 */
class TerrorismConfigureInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Parameters for recognition of terrorism content in images
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {TerrorismImgReviewTemplateInfo || null}
         */
        this.ImgReviewInfo = null;

        /**
         * Parameters for OCR-based recognition of terrorism content
Note: This field may return `null`, indicating that no valid value can be found.
         * @type {TerrorismOcrReviewTemplateInfo || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.ImgReviewInfo) {
            let obj = new TerrorismImgReviewTemplateInfo();
            obj.deserialize(params.ImgReviewInfo)
            this.ImgReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new TerrorismOcrReviewTemplateInfo();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * Parameters for ASR-based recognition of politically sensitive content
 * @class
 */
class PoliticalAsrReviewTemplateInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable ASR-based recognition of politically sensitive content. Valid values:
<li>ON</li>
<li>OFF</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Confidence score threshold for human review. If this threshold is reached, human review is needed. If this parameter is left empty, `75` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.ReviewConfidence = null;

        /**
         * Confidence score threshold for determining that something should be blocked. If this threshold is reached, VOD will suggest that the content be blocked. If this parameter is left empty, `100` will be used by default. Value range: 0-100
         * @type {number || null}
         */
        this.BlockConfidence = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.ReviewConfidence = 'ReviewConfidence' in params ? params.ReviewConfidence : null;
        this.BlockConfidence = 'BlockConfidence' in params ? params.BlockConfidence : null;

    }
}

/**
 * CreateAnimatedGraphicsTemplate response structure.
 * @class
 */
class CreateAnimatedGraphicsTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an animated image generating template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * Access authentication for Huawei Cloud OBS origin
 * @class
 */
class HwPrivateAccess extends  AbstractModel {
    constructor(){
        super();

        /**
         * Huawei Cloud Object Storage back-to-origin authentication configuration switch, the value is: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Access ID
         * @type {string || null}
         */
        this.AccessKey = null;

        /**
         * Key
         * @type {string || null}
         */
        this.SecretKey = null;

        /**
         * BucketName
         * @type {string || null}
         */
        this.Bucket = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.AccessKey = 'AccessKey' in params ? params.AccessKey : null;
        this.SecretKey = 'SecretKey' in params ? params.SecretKey : null;
        this.Bucket = 'Bucket' in params ? params.Bucket : null;

    }
}

/**
 * Video opening and ending credits recognition result.
 * @class
 */
class AiRecognitionTaskHeadTailResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task status. Valid values: PROCESSING, SUCCESS, FAIL.
         * @type {string || null}
         */
        this.Status = null;

        /**
         * Error code. An empty string indicates the task is successful; other values indicate failure. For details, see [Video Processing Error Codes](https://intl.cloud.tencent.com/zh/document/product/266/39145).
         * @type {string || null}
         */
        this.ErrCodeExt = null;

        /**
         * Error code. 0 indicates the task is successful; other values indicate failure. You’re not recommended to use this parameter, but to use the new parameter `ErrCodeExt`.
         * @type {number || null}
         */
        this.ErrCode = null;

        /**
         * Error message.
         * @type {string || null}
         */
        this.Message = null;

        /**
         * Input information of video opening and ending credits recognition task.
         * @type {AiRecognitionTaskHeadTailResultInput || null}
         */
        this.Input = null;

        /**
         * Output information of video opening and ending credits recognition task.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskHeadTailResultOutput || null}
         */
        this.Output = null;

        /**
         * The progress of an opening/closing segment recognition task. Value range: 0-100.
         * @type {number || null}
         */
        this.Progress = null;

        /**
         * The time when the video start and end recognition task starts, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.BeginProcessTime = null;

        /**
         * The time when the video start and end recognition task is completed, using [ISO date format](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.FinishTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Status = 'Status' in params ? params.Status : null;
        this.ErrCodeExt = 'ErrCodeExt' in params ? params.ErrCodeExt : null;
        this.ErrCode = 'ErrCode' in params ? params.ErrCode : null;
        this.Message = 'Message' in params ? params.Message : null;

        if (params.Input) {
            let obj = new AiRecognitionTaskHeadTailResultInput();
            obj.deserialize(params.Input)
            this.Input = obj;
        }

        if (params.Output) {
            let obj = new AiRecognitionTaskHeadTailResultOutput();
            obj.deserialize(params.Output)
            this.Output = obj;
        }
        this.Progress = 'Progress' in params ? params.Progress : null;
        this.BeginProcessTime = 'BeginProcessTime' in params ? params.BeginProcessTime : null;
        this.FinishTime = 'FinishTime' in params ? params.FinishTime : null;

    }
}

/**
 * DescribePersonSamples request structure.
 * @class
 */
class DescribePersonSamplesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Type of samples to pull. Valid values:
<li>UserDefine: custom sample library</li>
<li>Default: default sample library</li>

Default value: UserDefine. Samples in the custom sample library will be pulled.
Note: samples from the default library can only be pulled by providing the name or both the ID and name of a sample. Only one face image will be returned.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * IDs of samples. Array length limit: 100.
         * @type {Array.<string> || null}
         */
        this.PersonIds = null;

        /**
         * Names of samples. Array length limit: 20.
         * @type {Array.<string> || null}
         */
        this.Names = null;

        /**
         * Tags of a sample. Array length limit: 20.
         * @type {Array.<string> || null}
         */
        this.Tags = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of entries to be returned. Default value: 100. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.PersonIds = 'PersonIds' in params ? params.PersonIds : null;
        this.Names = 'Names' in params ? params.Names : null;
        this.Tags = 'Tags' in params ? params.Tags : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Face recognition result
 * @class
 */
class AiRecognitionTaskFaceResultItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of figure.
         * @type {string || null}
         */
        this.Id = null;

        /**
         * Figure library type, indicating to which figure library the recognized figure belongs:
<li>Default: default figure library;</li>
<li>UserDefine: custom figure library.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Figure name.
         * @type {string || null}
         */
        this.Name = null;

        /**
         * Result set of segments that contain a figure.
         * @type {Array.<AiRecognitionTaskFaceSegmentItem> || null}
         */
        this.SegmentSet = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Id = 'Id' in params ? params.Id : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Name = 'Name' in params ? params.Name : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new AiRecognitionTaskFaceSegmentItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }

    }
}

/**
 * Input type of intelligent categorization task
 * @class
 */
class AiAnalysisTaskCoverInput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Intelligent video cover generating template ID.
         * @type {number || null}
         */
        this.Definition = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;

    }
}

/**
 * DeleteEnhanceMediaTemplate request structure.
 * @class
 */
class DeleteEnhanceMediaTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Enhance Media Template ID
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * SetDrmKeyProviderInfo response structure.
 * @class
 */
class SetDrmKeyProviderInfoResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeStorageDetails request structure.
 * @class
 */
class DescribeStorageDetailsRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Start time in ISO 8601 format. For more information, please see [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.StartTime = null;

        /**
         * End time in ISO 8601 format, which should be larger than the start time. For more information, please see [ISO date format](https://intl.cloud.tencent.com/document/product/266/11732?lang=en&pg=).
         * @type {string || null}
         */
        this.EndTime = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Time granularity. Valid values:
<li>Minute: 5-minute granularity</li>
<li>Day: 1-day granularity</li>
The value is set according to query period length by default. 5-minute granularity is set for periods no longer than 1 day, and 1-day granularity is set for periods longer than 1 day.
         * @type {string || null}
         */
        this.Interval = null;

        /**
         * Queryed storage type, valid values:
<li>TotalStorage: total storage amount, the sum of standard, low-frequency, archive and deep archive storage amounts, excluding early deletion amount. </li>
<li>StandardStorage: Standard storage. </li>
<li>InfrequentStorage: low-frequency storage. </li>
<li>ArchiveStorage: archive storage. </li>
<li>DeepArchiveStorage: deep archive storage. </li>
<li>DeletedInfrequentStorage: The amount of early deletion of low-frequency storage. </li>
<li>DeletedArchiveStorage: The amount of archives deleted in advance. </li>
<li>DeletedDeepArchiveStorage: The amount of deep archive deletion in advance. 
<li>ArchiveStandardRetrieval: Archive standard retrieval amount. </li>
<li>ArchiveExpeditedRetrieval: archive quick retrieval amount. </li>
<li>ArchiveBulkRetrieval: Archive batch retrieval amount. </li>
<li>DeepArchiveStandardRetrieval: Deep archive standard retrieval amount. </li>
<li>DeepArchiveBulkRetrieval: Deep archive batch retrieval amount. </li>
<li>InfrequentRetrieval: Low-frequency storage retrieval amount. </li>
The default value is TotalStorage.
         * @type {string || null}
         */
        this.StorageType = null;

        /**
         * Storage region to query. Valid values:
<li>Chinese Mainland</li>
<li>Outside Chinese Mainland</li>
Default value: Chinese Mainland
         * @type {string || null}
         */
        this.Area = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.StartTime = 'StartTime' in params ? params.StartTime : null;
        this.EndTime = 'EndTime' in params ? params.EndTime : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Interval = 'Interval' in params ? params.Interval : null;
        this.StorageType = 'StorageType' in params ? params.StorageType : null;
        this.Area = 'Area' in params ? params.Area : null;

    }
}

/**
 * EnhanceMediaQuality response structure.
 * @class
 */
class EnhanceMediaQualityResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Remaster task ID
         * @type {string || null}
         */
        this.TaskId = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.TaskId = 'TaskId' in params ? params.TaskId : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * The modification of the subtitle format list.
 * @class
 */
class SubtitleFormatsOperation extends  AbstractModel {
    constructor(){
        super();

        /**
         * The modification type. Valid values:
<li>add: Add the formats specified by `Formats`.</li>
<li>delete: Delete the formats specified by `Formats`.<l/i>
<li>reset: Reset the format list to formats specified by `Formats`.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * The subtitle format list. Valid values:
<li>vtt</li>
<li>srt</li>
         * @type {Array.<string> || null}
         */
        this.Formats = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;
        this.Formats = 'Formats' in params ? params.Formats : null;

    }
}

/**
 * Track information
 * @class
 */
class MediaTrack extends  AbstractModel {
    constructor(){
        super();

        /**
         * Track type. Valid values:
<ul>
<li>Video: video track, which is composed of the following items: <ul><li>VideoTrackItem</li><li>MediaTransitionItem</li> <li>EmptyTrackItem</li></ul> </li>
<li>Audio: audio track, which is composed of the following items: <ul><li>AudioTrackItem</li><li>MediaTransitionItem</li><li>EmptyTrackItem</li></ul></li>
<li>Sticker: sticker track, which is composed of the following items: <ul><li> StickerTrackItem</li><li>EmptyTrackItem</li></ul></li>	
</ul>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * List of media segments on track.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {Array.<MediaTrackItem> || null}
         */
        this.TrackItems = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.TrackItems) {
            this.TrackItems = new Array();
            for (let z in params.TrackItems) {
                let obj = new MediaTrackItem();
                obj.deserialize(params.TrackItems[z]);
                this.TrackItems.push(obj);
            }
        }

    }
}

/**
 * VOD  fast media editing information
 * @class
 */
class FastEditMediaFileInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The types of media. Valid values: <li>Transcode:Transcoded output; </li> <li>Original: Original audio and video. </li>The audio and video being operated on must be in HLS format.
         * @type {string || null}
         */
        this.AudioVideoType = null;

        /**
         * When AudioVideoType is set to Transcode, it is valid and indicates the transcoding template ID for the media being operated on.
         * @type {number || null}
         */
        this.TranscodeDefinition = null;

        /**
         * Offset time of the start of the video clip, unit: seconds.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * Offset time at the end of the video clip, unit: seconds.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.AudioVideoType = 'AudioVideoType' in params ? params.AudioVideoType : null;
        this.TranscodeDefinition = 'TranscodeDefinition' in params ? params.TranscodeDefinition : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

    }
}

/**
 * VOD storage usage by region.
 * @class
 */
class StorageStatData extends  AbstractModel {
    constructor(){
        super();

        /**
         * VOD storage billing region. Valid values:
<li>Chinese Mainland</li>
<li>Outside Chinese Mainland</li>
         * @type {string || null}
         */
        this.Area = null;

        /**
         * Current total storage capacity in bytes.
         * @type {number || null}
         */
        this.TotalStorage = null;

        /**
         * Current STANDARD_IA storage capacity in bytes.
         * @type {number || null}
         */
        this.InfrequentStorage = null;

        /**
         * Current STANDARD storage capacity in bytes.
         * @type {number || null}
         */
        this.StandardStorage = null;

        /**
         * Current ARCHIVE storage usage in bytes
         * @type {number || null}
         */
        this.ArchiveStorage = null;

        /**
         * Current DEEP ARCHIVE storage usage in bytes
         * @type {number || null}
         */
        this.DeepArchiveStorage = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Area = 'Area' in params ? params.Area : null;
        this.TotalStorage = 'TotalStorage' in params ? params.TotalStorage : null;
        this.InfrequentStorage = 'InfrequentStorage' in params ? params.InfrequentStorage : null;
        this.StandardStorage = 'StandardStorage' in params ? params.StandardStorage : null;
        this.ArchiveStorage = 'ArchiveStorage' in params ? params.ArchiveStorage : null;
        this.DeepArchiveStorage = 'DeepArchiveStorage' in params ? params.DeepArchiveStorage : null;

    }
}

/**
 * Playlist Program Playback Information
 * @class
 */
class RoundPlayFilePlayInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Playlist program id, assigned by the system.
         * @type {string || null}
         */
        this.ItemId = null;

        /**
         * The media file id.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * The playback start time, in [iso 8601 date format](https://www.tencentcloud.com/document/product/266/11732?has_map=2#iso-date-format).
         * @type {string || null}
         */
        this.StartPlayTime = null;

        /**
         * Playback duration, in seconds.
Note: this field may return null, indicating that no valid value was found.
         * @type {number || null}
         */
        this.Duration = null;

        /**
         * Playback progress, in seconds.
Note: this field may return null, indicating that no valid value was found.
         * @type {number || null}
         */
        this.Progress = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ItemId = 'ItemId' in params ? params.ItemId : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.StartPlayTime = 'StartPlayTime' in params ? params.StartPlayTime : null;
        this.Duration = 'Duration' in params ? params.Duration : null;
        this.Progress = 'Progress' in params ? params.Progress : null;

    }
}

/**
 * DescribeFileAttributes request structure.
 * @class
 */
class DescribeFileAttributesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * The file ID.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * The session ID, which is used for de-duplication. If there was a request with the same session ID in the last three days, an error will be returned for the current request. The session ID can contain up to 50 characters. If you do not pass this parameter or pass in an empty string, duplicate sessions will not be identified.
         * @type {string || null}
         */
        this.SessionId = null;

        /**
         * The source context, which is used to pass through user request information. The `ProcedureStateChanged` callback will return the value of this parameter. It can contain up to 1,000 characters.
         * @type {string || null}
         */
        this.SessionContext = null;

        /**
         * The task priority. The higher the value, the higher the priority. Value range: -10-10. If this parameter is left empty, 0 will be used.
         * @type {number || null}
         */
        this.TasksPriority = null;

        /**
         * A reserved parameter.
         * @type {string || null}
         */
        this.ExtInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.SessionId = 'SessionId' in params ? params.SessionId : null;
        this.SessionContext = 'SessionContext' in params ? params.SessionContext : null;
        this.TasksPriority = 'TasksPriority' in params ? params.TasksPriority : null;
        this.ExtInfo = 'ExtInfo' in params ? params.ExtInfo : null;

    }
}

/**
 * Custom response header configuration. This is disabled by default.
 * @class
 */
class ResponseHeader extends  AbstractModel {
    constructor(){
        super();

        /**
         * Custom response header configuration switch, the values u200bu200bare: <li>on: on; </li> <li>off: off. </li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Custom response header rules
         * @type {Array.<HttpHeaderPathRule> || null}
         */
        this.HeaderRules = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;

        if (params.HeaderRules) {
            this.HeaderRules = new Array();
            for (let z in params.HeaderRules) {
                let obj = new HttpHeaderPathRule();
                obj.deserialize(params.HeaderRules[z]);
                this.HeaderRules.push(obj);
            }
        }

    }
}

/**
 * Abnormal result Information of media quality inspection.
 * @class
 */
class QualityInspectResultItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Abnormal type, range: <li>Jitter: Jitter;</li> <li>Blur: Blur;</li> <li>LowLighting: Low lighting;</li> <li>HighLighting: Overexposure;</li> <li>CrashScreen: Crash screen;</li> <li>BlackWhiteEdge: Black and white edges;</li> <li>SolidColorScreen: Solid color screen;</li> <li>Noise: Noise;</li> <li>Mosaic: Mosaic;</li> <li>QRCode: QR code;</li> <li>AppletCode: Applet code;</li> <li>BarCode: Bar code;</li> <li>LowVoice: Low voice;</li> <li>HighVoice: High voice;</li> <li>NoVoice: mutes;</li> <li>LowEvaluation: No reference scoring below the threshold.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Abnormal segment List. <font color=red>Pay attention to:</font> This list will only show the first 100 elements at most. If you wish to get the complete result, please get it from the file corresponding to SegmentSetFileUrl.
         * @type {Array.<QualityInspectItem> || null}
         */
        this.SegmentSet = null;

        /**
         * Abnormal segment List file URL. The file content is JSON, and the data structure is consistent with the SegmentSet Field. (The file will not be permanently stored, and will be deleted after reaching the SegmentSetFileUrlExpireTime Time point).
         * @type {string || null}
         */
        this.SegmentSetFileUrl = null;

        /**
         * Abnormal segment List file URL expiration time, using [ISO date supported](https://www.tencentcloud.com/document/product/266/11732#iso-date-format).
         * @type {string || null}
         */
        this.SegmentSetFileUrlExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.SegmentSet) {
            this.SegmentSet = new Array();
            for (let z in params.SegmentSet) {
                let obj = new QualityInspectItem();
                obj.deserialize(params.SegmentSet[z]);
                this.SegmentSet.push(obj);
            }
        }
        this.SegmentSetFileUrl = 'SegmentSetFileUrl' in params ? params.SegmentSetFileUrl : null;
        this.SegmentSetFileUrlExpireTime = 'SegmentSetFileUrlExpireTime' in params ? params.SegmentSetFileUrlExpireTime : null;

    }
}

/**
 * Information parameter of file output by video processing
 * @class
 */
class MediaOutputInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Region of the bucket where an output file is stored, such as ap-guangzhou.
         * @type {string || null}
         */
        this.Region = null;

        /**
         * Bucket of output file.
         * @type {string || null}
         */
        this.Bucket = null;

        /**
         * Path to output file, which must end in "/".
         * @type {string || null}
         */
        this.Dir = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Region = 'Region' in params ? params.Region : null;
        this.Bucket = 'Bucket' in params ? params.Bucket : null;
        this.Dir = 'Dir' in params ? params.Dir : null;

    }
}

/**
 * Output of video editing task
 * @class
 */
class EditMediaTaskOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * File type, such as mp4 and flv.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileType = null;

        /**
         * Media file playback address.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileUrl = null;

        /**
         * Media file ID.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.FileId = null;

        /**
         * Output filename of up to 64 characters, which is generated by the system by default.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.MediaName = null;

        /**
         * Category ID, which is used to categorize the media for management. A category can be created and its ID can be obtained by using the [category creating](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API.
<li>Default value: 0, which means "Other".</li>
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Expiration time of output media file in ISO 8601 format, after which the file will be deleted. Files will never expire by default. For more information, please see [Notes on ISO Date Format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ExpireTime = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileType = 'FileType' in params ? params.FileType : null;
        this.FileUrl = 'FileUrl' in params ? params.FileUrl : null;
        this.FileId = 'FileId' in params ? params.FileId : null;
        this.MediaName = 'MediaName' in params ? params.MediaName : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;

    }
}

/**
 * List of intelligently generated highlights.
 * @class
 */
class HighlightSegmentItem extends  AbstractModel {
    constructor(){
        super();

        /**
         * Confidence.
         * @type {number || null}
         */
        this.Confidence = null;

        /**
         * Start time offset of a segment.
         * @type {number || null}
         */
        this.StartTimeOffset = null;

        /**
         * End time offset of a segment.
         * @type {number || null}
         */
        this.EndTimeOffset = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Confidence = 'Confidence' in params ? params.Confidence : null;
        this.StartTimeOffset = 'StartTimeOffset' in params ? params.StartTimeOffset : null;
        this.EndTimeOffset = 'EndTimeOffset' in params ? params.EndTimeOffset : null;

    }
}

/**
 * CreateReviewTemplate response structure.
 * @class
 */
class CreateReviewTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * 
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteWatermarkTemplate response structure.
 * @class
 */
class DeleteWatermarkTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DeleteQualityInspectTemplate request structure.
 * @class
 */
class DeleteQualityInspectTemplateRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Media quality inspection template ID.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;

    }
}

/**
 * Information of output media file.
 * @class
 */
class ComposeMediaOutput extends  AbstractModel {
    constructor(){
        super();

        /**
         * Filename of up to 64 characters.
         * @type {string || null}
         */
        this.FileName = null;

        /**
         * Description, which can contain up to 128 characters.
         * @type {string || null}
         */
        this.Description = null;

        /**
         * Category ID, which is used to categorize the media for management. A category can be created and its ID can be obtained by using the [category creating](https://intl.cloud.tencent.com/document/product/266/7812?from_cn_redirect=1) API.
<li>Default value: 0, which means "Other".</li>
         * @type {number || null}
         */
        this.ClassId = null;

        /**
         * Expiration time of output media file in ISO 8601 format, after which the file will be deleted. Files will never expire by default. For more information, please see [Notes on ISO Date Format](https://intl.cloud.tencent.com/document/product/266/11732?from_cn_redirect=1#I).
         * @type {string || null}
         */
        this.ExpireTime = null;

        /**
         * Container. Valid values: mp4, mp3. mp3 is for audio files.
         * @type {string || null}
         */
        this.Container = null;

        /**
         * Information of output video.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {OutputVideoStream || null}
         */
        this.VideoStream = null;

        /**
         * Information of output audio.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {OutputAudioStream || null}
         */
        this.AudioStream = null;

        /**
         * Whether to remove video data. Valid values:
<li>0: retain</li>
<li>1: remove</li>
Default value: 0.
         * @type {number || null}
         */
        this.RemoveVideo = null;

        /**
         * Whether to remove audio data. Valid values:
<li>0: retain</li>
<li>1: remove</li>
Default value: 0.
         * @type {number || null}
         */
        this.RemoveAudio = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.FileName = 'FileName' in params ? params.FileName : null;
        this.Description = 'Description' in params ? params.Description : null;
        this.ClassId = 'ClassId' in params ? params.ClassId : null;
        this.ExpireTime = 'ExpireTime' in params ? params.ExpireTime : null;
        this.Container = 'Container' in params ? params.Container : null;

        if (params.VideoStream) {
            let obj = new OutputVideoStream();
            obj.deserialize(params.VideoStream)
            this.VideoStream = obj;
        }

        if (params.AudioStream) {
            let obj = new OutputAudioStream();
            obj.deserialize(params.AudioStream)
            this.AudioStream = obj;
        }
        this.RemoveVideo = 'RemoveVideo' in params ? params.RemoveVideo : null;
        this.RemoveAudio = 'RemoveAudio' in params ? params.RemoveAudio : null;

    }
}

/**
 * DeleteJustInTimeTranscodeTemplate response structure.
 * @class
 */
class DeleteJustInTimeTranscodeTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * ModifyWatermarkTemplate response structure.
 * @class
 */
class ModifyWatermarkTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Image watermark address. This field has a value only when `ImageTemplate.ImageContent` is not empty.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {string || null}
         */
        this.ImageUrl = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.ImageUrl = 'ImageUrl' in params ? params.ImageUrl : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeJustInTimeTranscodeTemplates request structure.
 * @class
 */
class DescribeJustInTimeTranscodeTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * Template name filter condition, array length limit: 100.
         * @type {Array.<string> || null}
         */
        this.Names = null;

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Template type filter conditions, optional values:
<li>Preset: system preset task flow template;</li>
<li>Custom: user-defined task flow template. </li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Paging offset, default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Returns the number of records, default value: 10, maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Names = 'Names' in params ? params.Names : null;
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * Control parameter of prohibited information detection task
 * @class
 */
class ProhibitedConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Control parameter of prohibited information detection in speech.
         * @type {ProhibitedAsrReviewTemplateInfoForUpdate || null}
         */
        this.AsrReviewInfo = null;

        /**
         * Control parameter of prohibited information detection in text.
         * @type {ProhibitedOcrReviewTemplateInfoForUpdate || null}
         */
        this.OcrReviewInfo = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }

        if (params.AsrReviewInfo) {
            let obj = new ProhibitedAsrReviewTemplateInfoForUpdate();
            obj.deserialize(params.AsrReviewInfo)
            this.AsrReviewInfo = obj;
        }

        if (params.OcrReviewInfo) {
            let obj = new ProhibitedOcrReviewTemplateInfoForUpdate();
            obj.deserialize(params.OcrReviewInfo)
            this.OcrReviewInfo = obj;
        }

    }
}

/**
 * Control parameter of intelligent frame-specific tagging task
 * @class
 */
class FrameTagConfigureInfoForUpdate extends  AbstractModel {
    constructor(){
        super();

        /**
         * Switch of intelligent frame-specific tagging task. Valid values:
<li>ON: enables intelligent frame-specific tagging task;</li>
<li>OFF: disables intelligent frame-specific tagging task.</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * Frame capturing interval in seconds. Minimum value: 0.5 seconds.
         * @type {number || null}
         */
        this.ScreenshotInterval = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.ScreenshotInterval = 'ScreenshotInterval' in params ? params.ScreenshotInterval : null;

    }
}

/**
 * CreateImageSpriteTemplate response structure.
 * @class
 */
class CreateImageSpriteTemplateResponse extends  AbstractModel {
    constructor(){
        super();

        /**
         * Unique ID of an image sprite generating template.
         * @type {number || null}
         */
        this.Definition = null;

        /**
         * The unique request ID, generated by the server, will be returned for every request (if the request fails to reach the server for other reasons, the request will not obtain a RequestId). RequestId is required for locating a problem.
         * @type {string || null}
         */
        this.RequestId = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Definition = 'Definition' in params ? params.Definition : null;
        this.RequestId = 'RequestId' in params ? params.RequestId : null;

    }
}

/**
 * DescribeAIRecognitionTemplates request structure.
 * @class
 */
class DescribeAIRecognitionTemplatesRequest extends  AbstractModel {
    constructor(){
        super();

        /**
         * <b>The VOD [application](https://intl.cloud.tencent.com/document/product/266/14574) ID. For customers who activate VOD service from December 25, 2023, if they want to access resources in a VOD application (whether it's the default application or a newly created one), they must fill in this field with the application ID.</b>
         * @type {number || null}
         */
        this.SubAppId = null;

        /**
         * Unique ID filter of video content recognition templates. Array length limit: 100.
         * @type {Array.<number> || null}
         */
        this.Definitions = null;

        /**
         * Template type filter. Optional values:
<li>Preset: preset template;</li>
<li>Custom: user-defined template.</li>If not filled default is empty, i.e., no template type filter.
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Pagination offset. Default value: 0.
         * @type {number || null}
         */
        this.Offset = null;

        /**
         * Number of returned entries. Default value: 10. Maximum value: 100.
         * @type {number || null}
         */
        this.Limit = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.SubAppId = 'SubAppId' in params ? params.SubAppId : null;
        this.Definitions = 'Definitions' in params ? params.Definitions : null;
        this.Type = 'Type' in params ? params.Type : null;
        this.Offset = 'Offset' in params ? params.Offset : null;
        this.Limit = 'Limit' in params ? params.Limit : null;

    }
}

/**
 * High dynamic range (HDR) configuration.
 * @class
 */
class HDRInfo extends  AbstractModel {
    constructor(){
        super();

        /**
         * Whether to enable HDR. Valid values:
<li>`ON`</li>
<li>`OFF`</li>
         * @type {string || null}
         */
        this.Switch = null;

        /**
         * The HDR type. Valid values:
<li>`hdr10`</li>
<li>`hlg`</li>

Note:
<li>This parameter is valid only if `Switch` is `ON`.</li>
<li>For audio/video remastering, this parameter is valid only if the output video codec is `libx265`.</li>
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Switch = 'Switch' in params ? params.Switch : null;
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * EditMediaT TSC Transcoding Config.
 * @class
 */
class EditMediaTEHDConfig extends  AbstractModel {
    constructor(){
        super();

        /**
         * TSC Transcoding type, optional values: <li>TEHD-100 means TSC Transcoding-definition-100;</li> <li>OFF means turning off TSC Transcoding-definition. </li>Leave it blank to indicate OFF.
         * @type {string || null}
         */
        this.Type = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

    }
}

/**
 * Intelligent recognition result.
 * @class
 */
class AiRecognitionResult extends  AbstractModel {
    constructor(){
        super();

        /**
         * Task type. Valid values:
<li>FaceRecognition: face recognition,</li>
<li>AsrWordsRecognition: speech keyword recognition,</li>
<li>OcrWordsRecognition: text keyword recognition,</li>
<li>AsrFullTextRecognition: full speech recognition,</li>
<li>AsrTranslateRecognition: voice translation recognition,</li>
<li>OcrFullTextRecognition: full text recognition,</li>
<li>HeadTailRecognition: video opening and ending credits recognition,</li>
<li>ObjectRecognition: object recognition.</li>
         * @type {string || null}
         */
        this.Type = null;

        /**
         * Video opening and ending credits recognition result, which is valid when `Type` is
 `HeadTailRecognition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskHeadTailResult || null}
         */
        this.HeadTailTask = null;

        /**
         * Video splitting recognition result, which is valid when `Type` is
 `SegmentRecognition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskSegmentResult || null}
         */
        this.SegmentTask = null;

        /**
         * Face recognition result, which is valid when `Type` is 
 `FaceRecognition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskFaceResult || null}
         */
        this.FaceTask = null;

        /**
         * Speech keyword recognition result, which is valid when `Type` is
 `AsrWordsRecognition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskAsrWordsResult || null}
         */
        this.AsrWordsTask = null;

        /**
         * Full speech recognition result, which is valid when `Type` is
 `AsrFullTextRecognition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskAsrFullTextResult || null}
         */
        this.AsrFullTextTask = null;

        /**
         * Voice translation result, valid when Type is AsrTranslateRecognition.
         * @type {AiRecognitionTaskAsrTranslateResult || null}
         */
        this.AsrTranslateTask = null;

        /**
         * Text keyword recognition result, which is valid when `Type` is
 `OcrWordsRecognition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskOcrWordsResult || null}
         */
        this.OcrWordsTask = null;

        /**
         * Full text recognition result, which is valid when `Type` is
 `OcrFullTextRecognition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskOcrFullTextResult || null}
         */
        this.OcrFullTextTask = null;

        /**
         * Object recognition result, which is valid when `Type` is
 `ObjectRecognition`.
Note: this field may return null, indicating that no valid values can be obtained.
         * @type {AiRecognitionTaskObjectResult || null}
         */
        this.ObjectTask = null;

    }

    /**
     * @private
     */
    deserialize(params) {
        if (!params) {
            return;
        }
        this.Type = 'Type' in params ? params.Type : null;

        if (params.HeadTailTask) {
            let obj = new AiRecognitionTaskHeadTailResult();
            obj.deserialize(params.HeadTailTask)
            this.HeadTailTask = obj;
        }

        if (params.SegmentTask) {
            let obj = new AiRecognitionTaskSegmentResult();
            obj.deserialize(params.SegmentTask)
            this.SegmentTask = obj;
        }

        if (params.FaceTask) {
            let obj = new AiRecognitionTaskFaceResult();
            obj.deserialize(params.FaceTask)
            this.FaceTask = obj;
        }

        if (params.AsrWordsTask) {
            let obj = new AiRecognitionTaskAsrWordsResult();
            obj.deserialize(params.AsrWordsTask)
            this.AsrWordsTask = obj;
        }

        if (params.AsrFullTextTask) {
            let obj = new AiRecognitionTaskAsrFullTextResult();
            obj.deserialize(params.AsrFullTextTask)
            this.AsrFullTextTask = obj;
        }

        if (params.AsrTranslateTask) {
            let obj = new AiRecognitionTaskAsrTranslateResult();
            obj.deserialize(params.AsrTranslateTask)
            this.AsrTranslateTask = obj;
        }

        if (params.OcrWordsTask) {
            let obj = new AiRecognitionTaskOcrWordsResult();
            obj.deserialize(params.OcrWordsTask)
            this.OcrWordsTask = obj;
        }

        if (params.OcrFullTextTask) {
            let obj = new AiRecognitionTaskOcrFullTextResult();
            obj.deserialize(params.OcrFullTextTask)
            this.OcrFullTextTask = obj;
        }

        if (params.ObjectTask) {
            let obj = new AiRecognitionTaskObjectResult();
            obj.deserialize(params.ObjectTask)
            this.ObjectTask = obj;
        }

    }
}

module.exports = {
    Canvas: Canvas,
    ModifySampleSnapshotTemplateResponse: ModifySampleSnapshotTemplateResponse,
    ForbidMediaDistributionResponse: ForbidMediaDistributionResponse,
    ModifyWatermarkTemplateRequest: ModifyWatermarkTemplateRequest,
    CreateStorageRegionRequest: CreateStorageRegionRequest,
    AiRecognitionTaskAsrFullTextSegmentItem: AiRecognitionTaskAsrFullTextSegmentItem,
    DescribeFileAttributesTask: DescribeFileAttributesTask,
    QualityEvaluationConfigureInfo: QualityEvaluationConfigureInfo,
    ReviewAudioVideoTaskInput: ReviewAudioVideoTaskInput,
    DescribeAllClassRequest: DescribeAllClassRequest,
    UserAgentFilterRule: UserAgentFilterRule,
    DescribeRoundPlaysRequest: DescribeRoundPlaysRequest,
    AiAnalysisTaskClassificationInput: AiAnalysisTaskClassificationInput,
    SvgWatermarkInput: SvgWatermarkInput,
    CreateTranscodeTemplateRequest: CreateTranscodeTemplateRequest,
    TransitionOpertion: TransitionOpertion,
    AudioTrackItem: AudioTrackItem,
    MediaAiAnalysisHighlightItem: MediaAiAnalysisHighlightItem,
    DescribeAnimatedGraphicsTemplatesRequest: DescribeAnimatedGraphicsTemplatesRequest,
    LiveRealTimeClipResponse: LiveRealTimeClipResponse,
    AiReviewTaskProhibitedAsrResult: AiReviewTaskProhibitedAsrResult,
    AdaptiveDynamicStreamingTemplate: AdaptiveDynamicStreamingTemplate,
    HttpHeaderPathRule: HttpHeaderPathRule,
    DeleteJustInTimeTranscodeTemplateRequest: DeleteJustInTimeTranscodeTemplateRequest,
    DeleteAnimatedGraphicsTemplateResponse: DeleteAnimatedGraphicsTemplateResponse,
    AiReviewTaskProhibitedOcrResult: AiReviewTaskProhibitedOcrResult,
    AiRecognitionTaskAsrFullTextResultOutput: AiRecognitionTaskAsrFullTextResultOutput,
    AiReviewProhibitedOcrTaskOutput: AiReviewProhibitedOcrTaskOutput,
    MediaMiniProgramReviewElem: MediaMiniProgramReviewElem,
    ManageTaskResponse: ManageTaskResponse,
    CreateImageProcessingTemplateRequest: CreateImageProcessingTemplateRequest,
    ModifyDefaultStorageRegionRequest: ModifyDefaultStorageRegionRequest,
    CloneCDNDomainRequest: CloneCDNDomainRequest,
    QualityInspectTaskOutput: QualityInspectTaskOutput,
    QualityEnhanceTaskInput: QualityEnhanceTaskInput,
    ResetProcedureTemplateResponse: ResetProcedureTemplateResponse,
    Origin: Origin,
    MediaSnapshotByTimeOffsetItem: MediaSnapshotByTimeOffsetItem,
    RebuildMediaTargetInfo: RebuildMediaTargetInfo,
    ModifySampleSnapshotTemplateRequest: ModifySampleSnapshotTemplateRequest,
    AiReviewPoliticalOcrTaskInput: AiReviewPoliticalOcrTaskInput,
    ModifyJustInTimeTranscodeTemplateRequest: ModifyJustInTimeTranscodeTemplateRequest,
    MediaInputInfo: MediaInputInfo,
    CreateImageSpriteTask2017: CreateImageSpriteTask2017,
    ClipFileInfo2017: ClipFileInfo2017,
    TempCertificate: TempCertificate,
    AiReviewTaskPoliticalOcrResult: AiReviewTaskPoliticalOcrResult,
    QualityEnhanceTask: QualityEnhanceTask,
    AiSampleWord: AiSampleWord,
    RuleCacheConfig: RuleCacheConfig,
    CreateImageSpriteTemplateRequest: CreateImageSpriteTemplateRequest,
    MediaSnapshotByTimePicInfoItem: MediaSnapshotByTimePicInfoItem,
    PornOcrReviewTemplateInfoForUpdate: PornOcrReviewTemplateInfoForUpdate,
    RefreshUrlCacheRequest: RefreshUrlCacheRequest,
    ContentReviewTemplateItem: ContentReviewTemplateItem,
    DeleteAIRecognitionTemplateResponse: DeleteAIRecognitionTemplateResponse,
    DeleteContentReviewTemplateRequest: DeleteContentReviewTemplateRequest,
    NoiseConfigureInfo: NoiseConfigureInfo,
    AiReviewPoliticalTaskInput: AiReviewPoliticalTaskInput,
    VerifyDomainRecordResponse: VerifyDomainRecordResponse,
    AudioTransform: AudioTransform,
    TranscodeTask2017: TranscodeTask2017,
    DescribeCurrentPlaylistResponse: DescribeCurrentPlaylistResponse,
    ModifySuperPlayerConfigRequest: ModifySuperPlayerConfigRequest,
    ResetProcedureTemplateRequest: ResetProcedureTemplateRequest,
    ContentReviewOcrResult: ContentReviewOcrResult,
    ComposeMediaResponse: ComposeMediaResponse,
    RoundPlayInfo: RoundPlayInfo,
    DescribeLicenseUsageDataResponse: DescribeLicenseUsageDataResponse,
    DrmStreamingsInfoForUpdate: DrmStreamingsInfoForUpdate,
    ClassificationConfigureInfo: ClassificationConfigureInfo,
    AbnormalLightingConfigureInfoForUpdate: AbnormalLightingConfigureInfoForUpdate,
    CreateCDNDomainResponse: CreateCDNDomainResponse,
    AudioTemplateInfoForUpdate: AudioTemplateInfoForUpdate,
    ModifyEnhanceMediaTemplateResponse: ModifyEnhanceMediaTemplateResponse,
    ModifySubAppIdInfoRequest: ModifySubAppIdInfoRequest,
    DeletePersonSampleRequest: DeletePersonSampleRequest,
    ProcedureReviewAudioVideoTaskInput: ProcedureReviewAudioVideoTaskInput,
    AiRecognitionTaskAsrWordsSegmentItem: AiRecognitionTaskAsrWordsSegmentItem,
    TextWatermarkTemplateInput: TextWatermarkTemplateInput,
    QualityEvaluationConfigureInfoForUpdate: QualityEvaluationConfigureInfoForUpdate,
    AiRecognitionTaskInput: AiRecognitionTaskInput,
    CreateCDNDomainRequest: CreateCDNDomainRequest,
    AudioTemplateInfo: AudioTemplateInfo,
    ExecuteFunctionResponse: ExecuteFunctionResponse,
    CoverConfigureInfo: CoverConfigureInfo,
    DescribeClientUploadAccelerationUsageDataResponse: DescribeClientUploadAccelerationUsageDataResponse,
    ModifyRebuildMediaTemplateRequest: ModifyRebuildMediaTemplateRequest,
    ComposeMediaRequest: ComposeMediaRequest,
    AIRecognitionTemplateItem: AIRecognitionTemplateItem,
    AiReviewPornAsrTaskInput: AiReviewPornAsrTaskInput,
    AiRecognitionTaskFaceResult: AiRecognitionTaskFaceResult,
    AiRecognitionTaskHeadTailResultInput: AiRecognitionTaskHeadTailResultInput,
    CreateAdaptiveDynamicStreamingTemplateRequest: CreateAdaptiveDynamicStreamingTemplateRequest,
    PushUrlCacheResponse: PushUrlCacheResponse,
    MediaProcessTaskSampleSnapshotResult: MediaProcessTaskSampleSnapshotResult,
    ModifyEnhanceMediaTemplateRequest: ModifyEnhanceMediaTemplateRequest,
    TerrorismImgReviewTemplateInfoForUpdate: TerrorismImgReviewTemplateInfoForUpdate,
    FaceConfigureInfoForUpdate: FaceConfigureInfoForUpdate,
    ModifyTranscodeTemplateRequest: ModifyTranscodeTemplateRequest,
    RuleCache: RuleCache,
    EditMediaTaskInput: EditMediaTaskInput,
    DeleteAIAnalysisTemplateResponse: DeleteAIAnalysisTemplateResponse,
    DeleteImageProcessingTemplateRequest: DeleteImageProcessingTemplateRequest,
    DescribeDailyPlayStatFileListResponse: DescribeDailyPlayStatFileListResponse,
    AbnormalLightingConfigureInfo: AbnormalLightingConfigureInfo,
    TextWatermarkTemplateInputForUpdate: TextWatermarkTemplateInputForUpdate,
    DeleteSuperPlayerConfigRequest: DeleteSuperPlayerConfigRequest,
    AiReviewTerrorismOcrTaskInput: AiReviewTerrorismOcrTaskInput,
    AiRecognitionTaskOcrWordsResultInput: AiRecognitionTaskOcrWordsResultInput,
    ModifyMediaStorageClassResponse: ModifyMediaStorageClassResponse,
    AiReviewPornTaskInput: AiReviewPornTaskInput,
    JitterConfigureInfoForUpdate: JitterConfigureInfoForUpdate,
    UserDefineAsrTextReviewTemplateInfo: UserDefineAsrTextReviewTemplateInfo,
    CreateProcedureTemplateRequest: CreateProcedureTemplateRequest,
    MediaProcessTaskAnimatedGraphicResult: MediaProcessTaskAnimatedGraphicResult,
    DescribeMediaProcessUsageDataRequest: DescribeMediaProcessUsageDataRequest,
    CreatePersonSampleRequest: CreatePersonSampleRequest,
    RemoveWatermarkTask: RemoveWatermarkTask,
    ReviewAudioVideoRequest: ReviewAudioVideoRequest,
    StorageRegionInfo: StorageRegionInfo,
    MediaTransitionItem: MediaTransitionItem,
    MediaAiAnalysisCoverItem: MediaAiAnalysisCoverItem,
    ComplexAdaptiveDynamicStreamingTaskSubtitleInput: ComplexAdaptiveDynamicStreamingTaskSubtitleInput,
    TagConfigureInfo: TagConfigureInfo,
    SharpEnhanceInfo: SharpEnhanceInfo,
    ModifySuperPlayerConfigResponse: ModifySuperPlayerConfigResponse,
    DescribeWordSamplesResponse: DescribeWordSamplesResponse,
    RefreshUrlCacheResponse: RefreshUrlCacheResponse,
    ConcatTask2017: ConcatTask2017,
    DeleteAIRecognitionTemplateRequest: DeleteAIRecognitionTemplateRequest,
    FileUploadTask: FileUploadTask,
    DescribeCDNStatDetailsResponse: DescribeCDNStatDetailsResponse,
    AttachMediaSubtitlesRequest: AttachMediaSubtitlesRequest,
    AiAnalysisTaskCoverResult: AiAnalysisTaskCoverResult,
    DescribeEventConfigRequest: DescribeEventConfigRequest,
    MediaContentReviewOcrTextSegmentItem: MediaContentReviewOcrTextSegmentItem,
    AiAnalysisTaskClassificationOutput: AiAnalysisTaskClassificationOutput,
    QualityInspectTask: QualityInspectTask,
    CacheConfigNoCache: CacheConfigNoCache,
    FileDeleteTask: FileDeleteTask,
    ResourceTag: ResourceTag,
    AiRecognitionTaskOcrFullTextResultOutput: AiRecognitionTaskOcrFullTextResultOutput,
    AiAnalysisTaskHighlightResult: AiAnalysisTaskHighlightResult,
    SetVodDomainCertificateRequest: SetVodDomainCertificateRequest,
    CreateRebuildMediaTemplateResponse: CreateRebuildMediaTemplateResponse,
    AiRecognitionTaskOcrWordsResultOutput: AiRecognitionTaskOcrWordsResultOutput,
    AiSampleFaceInfo: AiSampleFaceInfo,
    MediaImageSpriteItem: MediaImageSpriteItem,
    CDNDomainInfo: CDNDomainInfo,
    DescribeEnhanceMediaTemplatesResponse: DescribeEnhanceMediaTemplatesResponse,
    ImageBlur: ImageBlur,
    ModifyVodDomainAccelerateConfigRequest: ModifyVodDomainAccelerateConfigRequest,
    PoliticalConfigureInfoForUpdate: PoliticalConfigureInfoForUpdate,
    MediaProcessTaskAdaptiveDynamicStreamingResult: MediaProcessTaskAdaptiveDynamicStreamingResult,
    OcrWordsConfigureInfoForUpdate: OcrWordsConfigureInfoForUpdate,
    FileReviewInfo: FileReviewInfo,
    WatermarkTemplate: WatermarkTemplate,
    CoverBySnapshotTaskOutput: CoverBySnapshotTaskOutput,
    ModifyQualityInspectTemplateResponse: ModifyQualityInspectTemplateResponse,
    DescribeProcedureTemplatesRequest: DescribeProcedureTemplatesRequest,
    VideoConfigureInfoForUpdate: VideoConfigureInfoForUpdate,
    ModifyAdaptiveDynamicStreamingTemplateRequest: ModifyAdaptiveDynamicStreamingTemplateRequest,
    ForbidMediaDistributionRequest: ForbidMediaDistributionRequest,
    DescribeAIRecognitionTemplatesResponse: DescribeAIRecognitionTemplatesResponse,
    AwsPrivateAccess: AwsPrivateAccess,
    EditMediaResponse: EditMediaResponse,
    PoliticalOcrReviewTemplateInfoForUpdate: PoliticalOcrReviewTemplateInfoForUpdate,
    TaskOutputMediaInfo: TaskOutputMediaInfo,
    ProcessMediaByUrlRequest: ProcessMediaByUrlRequest,
    ModifyAIRecognitionTemplateResponse: ModifyAIRecognitionTemplateResponse,
    SplitMediaTaskConfig: SplitMediaTaskConfig,
    PlayStatFileInfo: PlayStatFileInfo,
    ModifyMediaInfoRequest: ModifyMediaInfoRequest,
    TraceWatermarkInput: TraceWatermarkInput,
    PornAsrReviewTemplateInfoForUpdate: PornAsrReviewTemplateInfoForUpdate,
    ReviewAudioVideoSegmentItem: ReviewAudioVideoSegmentItem,
    MediaAnimatedGraphicsInfo: MediaAnimatedGraphicsInfo,
    DescribeSnapshotByTimeOffsetTemplatesRequest: DescribeSnapshotByTimeOffsetTemplatesRequest,
    DescribeCDNDomainsRequest: DescribeCDNDomainsRequest,
    RepairInfo: RepairInfo,
    CdnLogInfo: CdnLogInfo,
    ReduceMediaBitrateTranscodeResult: ReduceMediaBitrateTranscodeResult,
    MediaSubtitleInfo: MediaSubtitleInfo,
    AiRecognitionTaskAsrFullTextResultInput: AiRecognitionTaskAsrFullTextResultInput,
    MediaMiniProgramReviewInfoItem: MediaMiniProgramReviewInfoItem,
    TaskStatData: TaskStatData,
    CreateVodDomainRequest: CreateVodDomainRequest,
    OcrFullTextConfigureInfoForUpdate: OcrFullTextConfigureInfoForUpdate,
    DeleteRoundPlayRequest: DeleteRoundPlayRequest,
    SuperResolutionInfo: SuperResolutionInfo,
    MediaImageSpriteInfo: MediaImageSpriteInfo,
    EnhanceMediaQualityRequest: EnhanceMediaQualityRequest,
    PersistenceCompleteTask: PersistenceCompleteTask,
    AiRecognitionTaskFaceSegmentItem: AiRecognitionTaskFaceSegmentItem,
    ProcessMediaResponse: ProcessMediaResponse,
    CreateWordSamplesResponse: CreateWordSamplesResponse,
    ClassificationConfigureInfoForUpdate: ClassificationConfigureInfoForUpdate,
    DeleteAdaptiveDynamicStreamingTemplateResponse: DeleteAdaptiveDynamicStreamingTemplateResponse,
    ModifyHeadTailTemplateResponse: ModifyHeadTailTemplateResponse,
    CreateWordSamplesRequest: CreateWordSamplesRequest,
    MaxAge: MaxAge,
    BlurConfigureInfo: BlurConfigureInfo,
    PoliticalAsrReviewTemplateInfoForUpdate: PoliticalAsrReviewTemplateInfoForUpdate,
    WechatMiniProgramPublishTaskInput: WechatMiniProgramPublishTaskInput,
    AiSampleFaceOperation: AiSampleFaceOperation,
    SvgWatermarkInputForUpdate: SvgWatermarkInputForUpdate,
    AiReviewTaskTerrorismOcrResult: AiReviewTaskTerrorismOcrResult,
    WatermarkConfigureInfoForUpdate: WatermarkConfigureInfoForUpdate,
    AiRecognitionTaskOcrWordsResult: AiRecognitionTaskOcrWordsResult,
    PornAsrReviewTemplateInfo: PornAsrReviewTemplateInfo,
    AiRecognitionTaskSegmentResult: AiRecognitionTaskSegmentResult,
    JitterConfigureInfo: JitterConfigureInfo,
    MediaSubtitleItem: MediaSubtitleItem,
    ProhibitedAsrReviewTemplateInfoForUpdate: ProhibitedAsrReviewTemplateInfoForUpdate,
    ModifyAnimatedGraphicsTemplateResponse: ModifyAnimatedGraphicsTemplateResponse,
    AiRecognitionTaskAsrTranslateSegmentItem: AiRecognitionTaskAsrTranslateSegmentItem,
    ModifyAIAnalysisTemplateResponse: ModifyAIAnalysisTemplateResponse,
    LiveRealTimeClipRequest: LiveRealTimeClipRequest,
    DeleteAdaptiveDynamicStreamingTemplateRequest: DeleteAdaptiveDynamicStreamingTemplateRequest,
    AiRecognitionTaskOcrFullTextSegmentItem: AiRecognitionTaskOcrFullTextSegmentItem,
    ColorEnhanceInfo: ColorEnhanceInfo,
    DeleteEnhanceMediaTemplateResponse: DeleteEnhanceMediaTemplateResponse,
    EditMediaOutputConfig: EditMediaOutputConfig,
    SplitMediaTaskSegmentInfo: SplitMediaTaskSegmentInfo,
    AiReviewPornAsrTaskOutput: AiReviewPornAsrTaskOutput,
    RequestHeader: RequestHeader,
    AiRecognitionTaskAsrFullTextResultOutputSubtitleItem: AiRecognitionTaskAsrFullTextResultOutputSubtitleItem,
    SimpleHlsClipResponse: SimpleHlsClipResponse,
    DeleteAIAnalysisTemplateRequest: DeleteAIAnalysisTemplateRequest,
    VideoFrameInterpolationInfo: VideoFrameInterpolationInfo,
    EditMediaRequest: EditMediaRequest,
    CreateComplexAdaptiveDynamicStreamingTaskRequest: CreateComplexAdaptiveDynamicStreamingTaskRequest,
    AiRecognitionTaskAsrTranslateResult: AiRecognitionTaskAsrTranslateResult,
    DescribeFileAttributesResponse: DescribeFileAttributesResponse,
    LicenseUsageDataItem: LicenseUsageDataItem,
    RebuildMediaTargetAudioStream: RebuildMediaTargetAudioStream,
    ConcatFileInfo2017: ConcatFileInfo2017,
    ContentReviewResult: ContentReviewResult,
    MediaProcessTaskImageSpriteResult: MediaProcessTaskImageSpriteResult,
    DescribeJustInTimeTranscodeTemplatesResponse: DescribeJustInTimeTranscodeTemplatesResponse,
    CrashScreenConfigureInfo: CrashScreenConfigureInfo,
    CreateReviewTemplateRequest: CreateReviewTemplateRequest,
    DescribeMediaInfosResponse: DescribeMediaInfosResponse,
    DeleteProcedureTemplateResponse: DeleteProcedureTemplateResponse,
    DescribeReviewTemplatesResponse: DescribeReviewTemplatesResponse,
    DescribeAdaptiveDynamicStreamingTemplatesResponse: DescribeAdaptiveDynamicStreamingTemplatesResponse,
    MediaMiniProgramReviewInfo: MediaMiniProgramReviewInfo,
    CacheConfigCache: CacheConfigCache,
    TimeRange: TimeRange,
    DescribeAdaptiveDynamicStreamingTemplatesRequest: DescribeAdaptiveDynamicStreamingTemplatesRequest,
    ModifyRoundPlayRequest: ModifyRoundPlayRequest,
    ImageWatermarkInput: ImageWatermarkInput,
    ObjectConfigureInfo: ObjectConfigureInfo,
    AsrFullTextConfigureInfoForUpdate: AsrFullTextConfigureInfoForUpdate,
    DeleteHeadTailTemplateResponse: DeleteHeadTailTemplateResponse,
    RebuildAudioInfo: RebuildAudioInfo,
    RemoveWatermarkResponse: RemoveWatermarkResponse,
    RebuildMediaTemplate: RebuildMediaTemplate,
    CreatePersonSampleResponse: CreatePersonSampleResponse,
    CreateContentReviewTemplateResponse: CreateContentReviewTemplateResponse,
    ModifyAnimatedGraphicsTemplateRequest: ModifyAnimatedGraphicsTemplateRequest,
    DescribeAIAnalysisTemplatesRequest: DescribeAIAnalysisTemplatesRequest,
    CreateHeadTailTemplateRequest: CreateHeadTailTemplateRequest,
    MediaSampleSnapshotItem: MediaSampleSnapshotItem,
    TagConfigureInfoForUpdate: TagConfigureInfoForUpdate,
    DeleteWordSamplesRequest: DeleteWordSamplesRequest,
    FastEditMediaResponse: FastEditMediaResponse,
    EmptyTrackItem: EmptyTrackItem,
    RefererRule: RefererRule,
    CacheConfigFollowOrigin: CacheConfigFollowOrigin,
    StickerTrackItem: StickerTrackItem,
    ModifyEventConfigResponse: ModifyEventConfigResponse,
    ProcessMediaRequest: ProcessMediaRequest,
    DescribeMediaPlayStatDetailsResponse: DescribeMediaPlayStatDetailsResponse,
    FaceEnhanceInfo: FaceEnhanceInfo,
    VideoTemplateInfo: VideoTemplateInfo,
    PoliticalOcrReviewTemplateInfo: PoliticalOcrReviewTemplateInfo,
    ModifyCDNDomainConfigResponse: ModifyCDNDomainConfigResponse,
    AiReviewTaskPornOcrResult: AiReviewTaskPornOcrResult,
    ModifyContentReviewTemplateResponse: ModifyContentReviewTemplateResponse,
    DescribeWatermarkTemplatesRequest: DescribeWatermarkTemplatesRequest,
    ArtifactRepairInfo: ArtifactRepairInfo,
    CoverBySnapshotTaskInput: CoverBySnapshotTaskInput,
    SegmentConfigureInfoForUpdate: SegmentConfigureInfoForUpdate,
    RebuildMediaTaskInput: RebuildMediaTaskInput,
    UserDefineConfigureInfo: UserDefineConfigureInfo,
    NoiseConfigureInfoForUpdate: NoiseConfigureInfoForUpdate,
    LiveRecordInfo: LiveRecordInfo,
    AiRecognitionTaskSegmentSegmentItem: AiRecognitionTaskSegmentSegmentItem,
    RestoreMediaTask: RestoreMediaTask,
    AiReviewPornOcrTaskInput: AiReviewPornOcrTaskInput,
    OcrWordsConfigureInfo: OcrWordsConfigureInfo,
    CreateSuperPlayerConfigResponse: CreateSuperPlayerConfigResponse,
    AiAnalysisTaskFrameTagOutput: AiAnalysisTaskFrameTagOutput,
    CreateEnhanceMediaTemplateResponse: CreateEnhanceMediaTemplateResponse,
    DeleteReviewTemplateResponse: DeleteReviewTemplateResponse,
    DNSVerifyInfo: DNSVerifyInfo,
    MediaAnimatedGraphicsItem: MediaAnimatedGraphicsItem,
    AiRecognitionTaskAsrTranslateResultInput: AiRecognitionTaskAsrTranslateResultInput,
    WebPageRecordInfo: WebPageRecordInfo,
    DescribeCDNUsageDataResponse: DescribeCDNUsageDataResponse,
    ModifyWordSampleRequest: ModifyWordSampleRequest,
    EditMediaTask: EditMediaTask,
    CreateJustInTimeTranscodeTemplateResponse: CreateJustInTimeTranscodeTemplateResponse,
    WatermarkConfigureData: WatermarkConfigureData,
    DeleteMediaResponse: DeleteMediaResponse,
    ModifySnapshotByTimeOffsetTemplateResponse: ModifySnapshotByTimeOffsetTemplateResponse,
    DeleteHeadTailTemplateRequest: DeleteHeadTailTemplateRequest,
    AiAnalysisTaskTagResult: AiAnalysisTaskTagResult,
    SearchMediaResponse: SearchMediaResponse,
    ReviewAudioVideoTaskOutput: ReviewAudioVideoTaskOutput,
    Cache: Cache,
    RemoveWaterMarkTaskOutput: RemoveWaterMarkTaskOutput,
    ModifyMediaStorageClassRequest: ModifyMediaStorageClassRequest,
    AiAnalysisTaskTagOutput: AiAnalysisTaskTagOutput,
    MosaicConfigureInfo: MosaicConfigureInfo,
    AiAnalysisTaskHighlightOutput: AiAnalysisTaskHighlightOutput,
    DescribeRebuildMediaTemplatesRequest: DescribeRebuildMediaTemplatesRequest,
    ReviewImageSegmentItem: ReviewImageSegmentItem,
    CreateRoundPlayResponse: CreateRoundPlayResponse,
    MediaSubtitleInput: MediaSubtitleInput,
    FileVerifyInfo: FileVerifyInfo,
    DeleteCDNDomainResponse: DeleteCDNDomainResponse,
    PornImageResult: PornImageResult,
    ComplexAdaptiveDynamicStreamingTask: ComplexAdaptiveDynamicStreamingTask,
    ModifyMediaInfoResponse: ModifyMediaInfoResponse,
    ModifyReviewTemplateRequest: ModifyReviewTemplateRequest,
    AiRecognitionTaskOcrFullTextResult: AiRecognitionTaskOcrFullTextResult,
    MediaTrackItem: MediaTrackItem,
    RestoreMediaResponse: RestoreMediaResponse,
    MediaProcessTaskSnapshotByTimeOffsetResult: MediaProcessTaskSnapshotByTimeOffsetResult,
    ModifyWordSampleResponse: ModifyWordSampleResponse,
    EnhanceMediaByTemplateResponse: EnhanceMediaByTemplateResponse,
    CreateJustInTimeTranscodeTemplateRequest: CreateJustInTimeTranscodeTemplateRequest,
    ComplexAdaptiveDynamicStreamingTaskAudioInput: ComplexAdaptiveDynamicStreamingTaskAudioInput,
    ManageTaskRequest: ManageTaskRequest,
    RoundPlayListItemInfo: RoundPlayListItemInfo,
    ModifyEventConfigRequest: ModifyEventConfigRequest,
    AiRecognitionTaskAsrWordsResultOutput: AiRecognitionTaskAsrWordsResultOutput,
    DescribeHeadTailTemplatesRequest: DescribeHeadTailTemplatesRequest,
    ModifyAdaptiveDynamicStreamingTemplateResponse: ModifyAdaptiveDynamicStreamingTemplateResponse,
    MediaProcessTaskTranscodeResult: MediaProcessTaskTranscodeResult,
    BlurConfigureInfoForUpdate: BlurConfigureInfoForUpdate,
    EditMediaVideoStream: EditMediaVideoStream,
    ExtractTraceWatermarkTask: ExtractTraceWatermarkTask,
    AiRecognitionTaskSegmentResultOutput: AiRecognitionTaskSegmentResultOutput,
    ImageSpriteTaskInput: ImageSpriteTaskInput,
    ObjectConfigureInfoForUpdate: ObjectConfigureInfoForUpdate,
    DeleteMediaRequest: DeleteMediaRequest,
    DescribeReviewTemplatesRequest: DescribeReviewTemplatesRequest,
    CreateSuperPlayerConfigRequest: CreateSuperPlayerConfigRequest,
    ImageWatermarkTemplate: ImageWatermarkTemplate,
    ModifySubAppIdInfoResponse: ModifySubAppIdInfoResponse,
    AsrWordsConfigureInfo: AsrWordsConfigureInfo,
    StartCDNDomainRequest: StartCDNDomainRequest,
    DeleteRebuildMediaTemplateResponse: DeleteRebuildMediaTemplateResponse,
    DescribeSubAppIdsResponse: DescribeSubAppIdsResponse,
    SimpleHlsClipRequest: SimpleHlsClipRequest,
    MediaDeleteItem: MediaDeleteItem,
    PoliticalImageResult: PoliticalImageResult,
    AiSamplePerson: AiSamplePerson,
    MediaAdaptiveDynamicStreamingInfo: MediaAdaptiveDynamicStreamingInfo,
    DescribeDailyPlayStatFileListRequest: DescribeDailyPlayStatFileListRequest,
    DescribeSuperPlayerConfigsResponse: DescribeSuperPlayerConfigsResponse,
    AsrWordsConfigureInfoForUpdate: AsrWordsConfigureInfoForUpdate,
    DescribeStorageDataRequest: DescribeStorageDataRequest,
    LiveRealTimeClipMediaSegmentInfo: LiveRealTimeClipMediaSegmentInfo,
    DeleteImageSpriteTemplateResponse: DeleteImageSpriteTemplateResponse,
    LowLightEnhanceInfo: LowLightEnhanceInfo,
    DescribeContentReviewTemplatesResponse: DescribeContentReviewTemplatesResponse,
    TEHDConfig: TEHDConfig,
    ImageReviewUsageDataItem: ImageReviewUsageDataItem,
    AnimatedGraphicsTemplate: AnimatedGraphicsTemplate,
    ExtractCopyRightWatermarkRequest: ExtractCopyRightWatermarkRequest,
    IpFilter: IpFilter,
    DescribeEnhanceMediaTemplatesRequest: DescribeEnhanceMediaTemplatesRequest,
    TerrorismOcrReviewTemplateInfoForUpdate: TerrorismOcrReviewTemplateInfoForUpdate,
    FastEditMediaRequest: FastEditMediaRequest,
    CopyRightWatermarkInput: CopyRightWatermarkInput,
    AiRecognitionTaskHeadTailResultOutput: AiRecognitionTaskHeadTailResultOutput,
    ModifyImageSpriteTemplateResponse: ModifyImageSpriteTemplateResponse,
    SetVodDomainCertificateResponse: SetVodDomainCertificateResponse,
    ExtractTraceWatermarkTaskOutput: ExtractTraceWatermarkTaskOutput,
    MediaProcessTaskCoverBySnapshotResult: MediaProcessTaskCoverBySnapshotResult,
    CreateWatermarkTemplateRequest: CreateWatermarkTemplateRequest,
    UserAgentFilter: UserAgentFilter,
    ComplexAdaptiveDynamicStreamingTaskInput: ComplexAdaptiveDynamicStreamingTaskInput,
    SortBy: SortBy,
    TerrorismConfigureInfoForUpdate: TerrorismConfigureInfoForUpdate,
    WechatMiniProgramPublishTask: WechatMiniProgramPublishTask,
    DescribeDrmKeyProviderInfoRequest: DescribeDrmKeyProviderInfoRequest,
    ModifyDefaultStorageRegionResponse: ModifyDefaultStorageRegionResponse,
    CreateImageProcessingTemplateResponse: CreateImageProcessingTemplateResponse,
    IpFilterPathRule: IpFilterPathRule,
    ComposeMediaTask: ComposeMediaTask,
    HeadTailConfigureInfoForUpdate: HeadTailConfigureInfoForUpdate,
    ImageScale: ImageScale,
    ModifyJustInTimeTranscodeTemplateResponse: ModifyJustInTimeTranscodeTemplateResponse,
    TranscodePlayInfo2017: TranscodePlayInfo2017,
    SplitMediaTask: SplitMediaTask,
    OthersPrivateAccess: OthersPrivateAccess,
    ComposeMediaTaskInput: ComposeMediaTaskInput,
    ModifyQualityInspectTemplateRequest: ModifyQualityInspectTemplateRequest,
    Authentication: Authentication,
    AnimatedGraphicTaskInput: AnimatedGraphicTaskInput,
    MosaicInput: MosaicInput,
    AIAnalysisTemplateItem: AIAnalysisTemplateItem,
    AiRecognitionTaskObjectResultItem: AiRecognitionTaskObjectResultItem,
    UrlSignatureAuthPolicy: UrlSignatureAuthPolicy,
    ModifyVodDomainConfigResponse: ModifyVodDomainConfigResponse,
    MediaSnapshotByTimeOffsetInfo: MediaSnapshotByTimeOffsetInfo,
    VideoConfigureInfo: VideoConfigureInfo,
    DescribeImageSpriteTemplatesRequest: DescribeImageSpriteTemplatesRequest,
    ModifyRebuildMediaTemplateResponse: ModifyRebuildMediaTemplateResponse,
    CreateEnhanceMediaTemplateRequest: CreateEnhanceMediaTemplateRequest,
    MediaKeyFrameDescItem: MediaKeyFrameDescItem,
    AsrTranslateConfigureInfoForUpdate: AsrTranslateConfigureInfoForUpdate,
    RebuildMediaByTemplateRequest: RebuildMediaByTemplateRequest,
    ModifyVodDomainConfigRequest: ModifyVodDomainConfigRequest,
    AiSampleTagOperation: AiSampleTagOperation,
    ComplexAdaptiveDynamicStreamingTaskOutput: ComplexAdaptiveDynamicStreamingTaskOutput,
    PlayerConfig: PlayerConfig,
    ComplexAdaptiveDynamicStreamingTaskResult: ComplexAdaptiveDynamicStreamingTaskResult,
    ConfirmEventsRequest: ConfirmEventsRequest,
    CreateAIRecognitionTemplateResponse: CreateAIRecognitionTemplateResponse,
    ModifySubAppIdStatusRequest: ModifySubAppIdStatusRequest,
    CreateSubAppIdResponse: CreateSubAppIdResponse,
    DeleteTranscodeTemplateRequest: DeleteTranscodeTemplateRequest,
    AiReviewTerrorismTaskOutput: AiReviewTerrorismTaskOutput,
    ModifyReviewTemplateResponse: ModifyReviewTemplateResponse,
    DescribeImageProcessingTemplatesRequest: DescribeImageProcessingTemplatesRequest,
    QualityInspectTaskInput: QualityInspectTaskInput,
    ProhibitedConfigureInfo: ProhibitedConfigureInfo,
    DrmStreamingsInfo: DrmStreamingsInfo,
    SplitMediaRequest: SplitMediaRequest,
    AiReviewTerrorismOcrTaskOutput: AiReviewTerrorismOcrTaskOutput,
    AiAnalysisResult: AiAnalysisResult,
    ReduceMediaBitrateAdaptiveDynamicStreamingResult: ReduceMediaBitrateAdaptiveDynamicStreamingResult,
    AttachMediaSubtitlesResponse: AttachMediaSubtitlesResponse,
    CreateDomainVerifyRecordResponse: CreateDomainVerifyRecordResponse,
    ExtractCopyRightWatermarkResponse: ExtractCopyRightWatermarkResponse,
    MediaTranscodeInfo: MediaTranscodeInfo,
    ResolutionNameInfo: ResolutionNameInfo,
    VerifyDomainRecordRequest: VerifyDomainRecordRequest,
    AiRecognitionTaskOcrWordsResultItem: AiRecognitionTaskOcrWordsResultItem,
    DeleteCDNDomainRequest: DeleteCDNDomainRequest,
    ParseStreamingManifestRequest: ParseStreamingManifestRequest,
    ReviewImageResult: ReviewImageResult,
    DeleteSampleSnapshotTemplateResponse: DeleteSampleSnapshotTemplateResponse,
    AiAnalysisTaskTagInput: AiAnalysisTaskTagInput,
    HeadTailTemplate: HeadTailTemplate,
    DescribeStorageDetailsResponse: DescribeStorageDetailsResponse,
    PullEventsResponse: PullEventsResponse,
    AiRecognitionTaskObjectResultInput: AiRecognitionTaskObjectResultInput,
    DescribeCdnLogsRequest: DescribeCdnLogsRequest,
    MediaProcessTaskInput: MediaProcessTaskInput,
    OutputVideoStream: OutputVideoStream,
    ProcedureTemplate: ProcedureTemplate,
    DomainDetailInfo: DomainDetailInfo,
    AiReviewTaskTerrorismResult: AiReviewTaskTerrorismResult,
    ProcessMediaByUrlResponse: ProcessMediaByUrlResponse,
    DescribeImageReviewUsageDataRequest: DescribeImageReviewUsageDataRequest,
    MediaContentReviewAsrTextSegmentItem: MediaContentReviewAsrTextSegmentItem,
    DescribeEventConfigResponse: DescribeEventConfigResponse,
    DescribeCdnLogsResponse: DescribeCdnLogsResponse,
    MediaContentReviewPoliticalSegmentItem: MediaContentReviewPoliticalSegmentItem,
    DeletePersonSampleResponse: DeletePersonSampleResponse,
    CreateSnapshotByTimeOffsetTemplateResponse: CreateSnapshotByTimeOffsetTemplateResponse,
    VoiceConfigureInfoForUpdate: VoiceConfigureInfoForUpdate,
    ModifyContentReviewTemplateRequest: ModifyContentReviewTemplateRequest,
    ImageSpriteTemplate: ImageSpriteTemplate,
    DeleteReviewTemplateRequest: DeleteReviewTemplateRequest,
    AiAnalysisTaskCoverOutput: AiAnalysisTaskCoverOutput,
    AiContentReviewTaskInput: AiContentReviewTaskInput,
    CreateAdaptiveDynamicStreamingTemplateResponse: CreateAdaptiveDynamicStreamingTemplateResponse,
    DeleteSampleSnapshotTemplateRequest: DeleteSampleSnapshotTemplateRequest,
    DescribeTranscodeTemplatesResponse: DescribeTranscodeTemplatesResponse,
    MediaAiAnalysisTagItem: MediaAiAnalysisTagItem,
    DescribeStorageDataResponse: DescribeStorageDataResponse,
    AiRecognitionTaskOcrFullTextSegmentTextItem: AiRecognitionTaskOcrFullTextSegmentTextItem,
    ImageProcessingTemplate: ImageProcessingTemplate,
    SegmentConfigureInfo: SegmentConfigureInfo,
    ScratchRepairInfo: ScratchRepairInfo,
    FileDeleteResultItem: FileDeleteResultItem,
    SnapshotByTimeOffsetTaskInput: SnapshotByTimeOffsetTaskInput,
    RefererAuthPolicy: RefererAuthPolicy,
    TaskStatDataItem: TaskStatDataItem,
    AiRecognitionTaskObjectSegmentItem: AiRecognitionTaskObjectSegmentItem,
    AiReviewPornOcrTaskOutput: AiReviewPornOcrTaskOutput,
    ApplyUploadRequest: ApplyUploadRequest,
    CreateSampleSnapshotTemplateResponse: CreateSampleSnapshotTemplateResponse,
    AiAnalysisTaskHighlightInput: AiAnalysisTaskHighlightInput,
    ModifyCDNDomainConfigRequest: ModifyCDNDomainConfigRequest,
    DeleteContentReviewTemplateResponse: DeleteContentReviewTemplateResponse,
    CloneCDNDomainResponse: CloneCDNDomainResponse,
    MediaBasicInfo: MediaBasicInfo,
    AiReviewPoliticalAsrTaskInput: AiReviewPoliticalAsrTaskInput,
    PullUploadRequest: PullUploadRequest,
    CreateQualityInspectTemplateRequest: CreateQualityInspectTemplateRequest,
    Ipv6Access: Ipv6Access,
    ProcessMediaByProcedureRequest: ProcessMediaByProcedureRequest,
    RebuildMediaTargetVideoStream: RebuildMediaTargetVideoStream,
    VoiceConfigureInfo: VoiceConfigureInfo,
    ClipTask2017: ClipTask2017,
    TranscodeTemplate: TranscodeTemplate,
    DescribeCDNUsageDataRequest: DescribeCDNUsageDataRequest,
    JustInTimeTranscodeTemplate: JustInTimeTranscodeTemplate,
    PornOcrReviewTemplateInfo: PornOcrReviewTemplateInfo,
    AiReviewTaskPoliticalAsrResult: AiReviewTaskPoliticalAsrResult,
    DescribeFileAttributesTaskOutput: DescribeFileAttributesTaskOutput,
    TrtcRecordInfo: TrtcRecordInfo,
    DescribeReviewDetailsRequest: DescribeReviewDetailsRequest,
    PornConfigureInfoForUpdate: PornConfigureInfoForUpdate,
    AiReviewProhibitedAsrTaskInput: AiReviewProhibitedAsrTaskInput,
    MediaContentReviewSegmentItem: MediaContentReviewSegmentItem,
    ParseStreamingManifestResponse: ParseStreamingManifestResponse,
    TerrorismOcrReviewTemplateInfo: TerrorismOcrReviewTemplateInfo,
    CreateRoundPlayRequest: CreateRoundPlayRequest,
    AiReviewTaskPornResult: AiReviewTaskPornResult,
    AiRecognitionTaskObjectResultOutput: AiRecognitionTaskObjectResultOutput,
    DescribeMediaPlayStatDetailsRequest: DescribeMediaPlayStatDetailsRequest,
    AiReviewProhibitedAsrTaskOutput: AiReviewProhibitedAsrTaskOutput,
    CreateClassResponse: CreateClassResponse,
    DeleteSuperPlayerConfigResponse: DeleteSuperPlayerConfigResponse,
    CrashScreenConfigureInfoForUpdate: CrashScreenConfigureInfoForUpdate,
    DescribeSampleSnapshotTemplatesRequest: DescribeSampleSnapshotTemplatesRequest,
    CoverConfigureInfoForUpdate: CoverConfigureInfoForUpdate,
    AiAnalysisTaskClassificationResult: AiAnalysisTaskClassificationResult,
    PoliticalImgReviewTemplateInfoForUpdate: PoliticalImgReviewTemplateInfoForUpdate,
    UserDefineOcrTextReviewTemplateInfo: UserDefineOcrTextReviewTemplateInfo,
    DescribeVodDomainsResponse: DescribeVodDomainsResponse,
    AdaptiveStreamTemplate: AdaptiveStreamTemplate,
    TranscodeTaskInput: TranscodeTaskInput,
    DescribeClientUploadAccelerationUsageDataRequest: DescribeClientUploadAccelerationUsageDataRequest,
    StartCDNDomainResponse: StartCDNDomainResponse,
    ModifyAIRecognitionTemplateRequest: ModifyAIRecognitionTemplateRequest,
    QRCodeConfigureInfo: QRCodeConfigureInfo,
    DescribeStorageRegionsRequest: DescribeStorageRegionsRequest,
    OssPrivateAccess: OssPrivateAccess,
    WechatPublishTask: WechatPublishTask,
    DescribeCDNStatDetailsRequest: DescribeCDNStatDetailsRequest,
    HeadTailTaskInput: HeadTailTaskInput,
    DescribeImageReviewUsageDataResponse: DescribeImageReviewUsageDataResponse,
    DeleteRoundPlayResponse: DeleteRoundPlayResponse,
    StatDataItem: StatDataItem,
    CreateStorageRegionResponse: CreateStorageRegionResponse,
    AccelerateAreaInfo: AccelerateAreaInfo,
    MediaSourceData: MediaSourceData,
    ProhibitedAsrReviewTemplateInfo: ProhibitedAsrReviewTemplateInfo,
    HandleCurrentPlaylistResponse: HandleCurrentPlaylistResponse,
    PushUrlCacheRequest: PushUrlCacheRequest,
    CreateAIAnalysisTemplateResponse: CreateAIAnalysisTemplateResponse,
    HeadTailConfigureInfo: HeadTailConfigureInfo,
    EventContent: EventContent,
    HighlightsConfigureInfoForUpdate: HighlightsConfigureInfoForUpdate,
    IPFilterPolicy: IPFilterPolicy,
    UserDefineConfigureInfoForUpdate: UserDefineConfigureInfoForUpdate,
    ExtractTraceWatermarkTaskInput: ExtractTraceWatermarkTaskInput,
    AiReviewPoliticalAsrTaskOutput: AiReviewPoliticalAsrTaskOutput,
    OutputAudioStream: OutputAudioStream,
    ModifyClassRequest: ModifyClassRequest,
    QRCodeConfigureInfoForUpdate: QRCodeConfigureInfoForUpdate,
    SpecificationDataItem: SpecificationDataItem,
    TEHDConfigForUpdate: TEHDConfigForUpdate,
    ComposeMediaTaskOutput: ComposeMediaTaskOutput,
    DescribeQualityInspectTemplatesRequest: DescribeQualityInspectTemplatesRequest,
    DescribeMediaInfosRequest: DescribeMediaInfosRequest,
    ModifyPersonSampleRequest: ModifyPersonSampleRequest,
    AsrFullTextConfigureInfo: AsrFullTextConfigureInfo,
    TerrorismImageResult: TerrorismImageResult,
    DeleteVodDomainRequest: DeleteVodDomainRequest,
    DescribeDrmKeyProviderInfoResponse: DescribeDrmKeyProviderInfoResponse,
    ExtractTraceWatermarkResponse: ExtractTraceWatermarkResponse,
    CreateAIRecognitionTemplateRequest: CreateAIRecognitionTemplateRequest,
    DescribeTaskDetailRequest: DescribeTaskDetailRequest,
    MediaAiAnalysisClassificationItem: MediaAiAnalysisClassificationItem,
    AiAnalysisTaskFrameTagResult: AiAnalysisTaskFrameTagResult,
    AiReviewPornTaskOutput: AiReviewPornTaskOutput,
    SDMCDrmKeyProviderInfo: SDMCDrmKeyProviderInfo,
    AiRecognitionTaskAsrFullTextResult: AiRecognitionTaskAsrFullTextResult,
    DeleteQualityInspectTemplateResponse: DeleteQualityInspectTemplateResponse,
    PlayStatInfo: PlayStatInfo,
    AiRecognitionTaskAsrTranslateResultOutput: AiRecognitionTaskAsrTranslateResultOutput,
    PoliticalImgReviewTemplateInfo: PoliticalImgReviewTemplateInfo,
    PoliticalConfigureInfo: PoliticalConfigureInfo,
    HighlightsConfigureInfo: HighlightsConfigureInfo,
    CDNCertInfo: CDNCertInfo,
    CreateHeadTailTemplateResponse: CreateHeadTailTemplateResponse,
    AiRecognitionTaskOcrWordsSegmentItem: AiRecognitionTaskOcrWordsSegmentItem,
    MediaProcessTaskResult: MediaProcessTaskResult,
    DeleteWordSamplesResponse: DeleteWordSamplesResponse,
    MediaCastEvent: MediaCastEvent,
    HeuristicCache: HeuristicCache,
    DeleteProcedureTemplateRequest: DeleteProcedureTemplateRequest,
    WatermarkInput: WatermarkInput,
    AiSampleWordInfo: AiSampleWordInfo,
    AdaptiveDynamicStreamingInfoItem: AdaptiveDynamicStreamingInfoItem,
    LiveRealTimeClipStreamInfo: LiveRealTimeClipStreamInfo,
    ProhibitedOcrReviewTemplateInfo: ProhibitedOcrReviewTemplateInfo,
    DeleteClassResponse: DeleteClassResponse,
    ModifyTranscodeTemplateResponse: ModifyTranscodeTemplateResponse,
    MediaMetaData: MediaMetaData,
    MediaSampleSnapshotInfo: MediaSampleSnapshotInfo,
    InspectMediaQualityResponse: InspectMediaQualityResponse,
    DeleteRebuildMediaTemplateRequest: DeleteRebuildMediaTemplateRequest,
    CreateDomainVerifyRecordRequest: CreateDomainVerifyRecordRequest,
    MediaInfo: MediaInfo,
    VideoTemplateInfoForUpdate: VideoTemplateInfoForUpdate,
    CreateContentReviewTemplateRequest: CreateContentReviewTemplateRequest,
    DescribeContentReviewTemplatesRequest: DescribeContentReviewTemplatesRequest,
    CreateComplexAdaptiveDynamicStreamingTaskResponse: CreateComplexAdaptiveDynamicStreamingTaskResponse,
    AdaptiveDynamicStreamingTaskInput: AdaptiveDynamicStreamingTaskInput,
    DescribeImageSpriteTemplatesResponse: DescribeImageSpriteTemplatesResponse,
    InspectMediaQualityRequest: InspectMediaQualityRequest,
    TransitionOperation: TransitionOperation,
    WatermarkConfigureInfo: WatermarkConfigureInfo,
    AiAnalysisTaskFrameTagInput: AiAnalysisTaskFrameTagInput,
    MediaAiAnalysisFrameTagSegmentItem: MediaAiAnalysisFrameTagSegmentItem,
    AiRecognitionTaskAsrWordsResultItem: AiRecognitionTaskAsrWordsResultItem,
    CreateQualityInspectTemplateResponse: CreateQualityInspectTemplateResponse,
    RebuildMediaTaskOutput: RebuildMediaTaskOutput,
    EnhanceMediaQualityOutputConfig: EnhanceMediaQualityOutputConfig,
    Https: Https,
    RebuildMediaRequest: RebuildMediaRequest,
    DescribeTaskDetailResponse: DescribeTaskDetailResponse,
    MediaKeyFrameDescInfo: MediaKeyFrameDescInfo,
    DeleteImageSpriteTemplateRequest: DeleteImageSpriteTemplateRequest,
    CreateClassRequest: CreateClassRequest,
    AiSampleFailFaceInfo: AiSampleFailFaceInfo,
    UserDefineFaceReviewTemplateInfoForUpdate: UserDefineFaceReviewTemplateInfoForUpdate,
    ModifyRoundPlayResponse: ModifyRoundPlayResponse,
    CreateProcedureTemplateResponse: CreateProcedureTemplateResponse,
    FollowRedirect: FollowRedirect,
    RebuildMediaResponse: RebuildMediaResponse,
    DomainHTTPSConfig: DomainHTTPSConfig,
    DescribeMediaProcessUsageDataResponse: DescribeMediaProcessUsageDataResponse,
    DescribeSuperPlayerConfigsRequest: DescribeSuperPlayerConfigsRequest,
    ReduceMediaBitrateMediaProcessTaskResult: ReduceMediaBitrateMediaProcessTaskResult,
    AiRecognitionTaskOcrFullTextResultInput: AiRecognitionTaskOcrFullTextResultInput,
    SplitMediaOutputConfig: SplitMediaOutputConfig,
    CreateVodDomainResponse: CreateVodDomainResponse,
    ModifyVodDomainAccelerateConfigResponse: ModifyVodDomainAccelerateConfigResponse,
    AiRecognitionTaskSegmentResultInput: AiRecognitionTaskSegmentResultInput,
    ForceRedirect: ForceRedirect,
    ModifyHeadTailTemplateRequest: ModifyHeadTailTemplateRequest,
    DescribeTasksResponse: DescribeTasksResponse,
    DescribeSubAppIdsRequest: DescribeSubAppIdsRequest,
    AiRecognitionTaskFaceResultInput: AiRecognitionTaskFaceResultInput,
    RebuildMediaOutputConfig: RebuildMediaOutputConfig,
    AiReviewPoliticalTaskOutput: AiReviewPoliticalTaskOutput,
    AiReviewTaskPoliticalResult: AiReviewTaskPoliticalResult,
    ModifySubAppIdStatusResponse: ModifySubAppIdStatusResponse,
    ReviewImageResponse: ReviewImageResponse,
    DescribeStorageRegionsResponse: DescribeStorageRegionsResponse,
    SampleSnapshotTemplate: SampleSnapshotTemplate,
    ModifySnapshotByTimeOffsetTemplateRequest: ModifySnapshotByTimeOffsetTemplateRequest,
    ProcedureTask: ProcedureTask,
    ExtractTraceWatermarkRequest: ExtractTraceWatermarkRequest,
    CDNDomainConfig: CDNDomainConfig,
    TaskSimpleInfo: TaskSimpleInfo,
    ReviewAudioVideoTask: ReviewAudioVideoTask,
    DescribeSnapshotByTimeOffsetTemplatesResponse: DescribeSnapshotByTimeOffsetTemplatesResponse,
    DomainQUICConfig: DomainQUICConfig,
    SetDrmKeyProviderInfoRequest: SetDrmKeyProviderInfoRequest,
    SnapshotByTimeOffsetTemplate: SnapshotByTimeOffsetTemplate,
    DeleteSnapshotByTimeOffsetTemplateResponse: DeleteSnapshotByTimeOffsetTemplateResponse,
    ProhibitedOcrReviewTemplateInfoForUpdate: ProhibitedOcrReviewTemplateInfoForUpdate,
    DescribeVodDomainsRequest: DescribeVodDomainsRequest,
    DescribeTasksRequest: DescribeTasksRequest,
    DescribeReviewDetailsResponse: DescribeReviewDetailsResponse,
    CreateTranscodeTemplateResponse: CreateTranscodeTemplateResponse,
    CDNDomainConfigForUpdate: CDNDomainConfigForUpdate,
    AiRecognitionTaskAsrWordsResultInput: AiRecognitionTaskAsrWordsResultInput,
    SnapshotByTimeOffset2017: SnapshotByTimeOffset2017,
    CreateAIAnalysisTemplateRequest: CreateAIAnalysisTemplateRequest,
    AiReviewTerrorismTaskInput: AiReviewTerrorismTaskInput,
    Quic: Quic,
    ComplexAdaptiveDynamicStreamingTaskStreamPara: ComplexAdaptiveDynamicStreamingTaskStreamPara,
    RebuildMediaByTemplateResponse: RebuildMediaByTemplateResponse,
    MediaAudioStreamItem: MediaAudioStreamItem,
    EnhanceMediaByTemplateRequest: EnhanceMediaByTemplateRequest,
    SubAppIdInfo: SubAppIdInfo,
    DescribeAllClassResponse: DescribeAllClassResponse,
    ModifyImageSpriteTemplateRequest: ModifyImageSpriteTemplateRequest,
    Referer: Referer,
    AiReviewProhibitedOcrTaskInput: AiReviewProhibitedOcrTaskInput,
    DeleteWatermarkTemplateRequest: DeleteWatermarkTemplateRequest,
    DeleteVodDomainResponse: DeleteVodDomainResponse,
    EditMediaStreamInfo: EditMediaStreamInfo,
    HeuristicCacheConfig: HeuristicCacheConfig,
    DescribeWordSamplesRequest: DescribeWordSamplesRequest,
    ImageCenterCut: ImageCenterCut,
    ModifyAIAnalysisTemplateRequest: ModifyAIAnalysisTemplateRequest,
    CommitUploadResponse: CommitUploadResponse,
    MaxAgeRule: MaxAgeRule,
    ExtractCopyRightWatermarkTaskInput: ExtractCopyRightWatermarkTaskInput,
    AsrTranslateConfigureInfo: AsrTranslateConfigureInfo,
    DescribeSampleSnapshotTemplatesResponse: DescribeSampleSnapshotTemplatesResponse,
    AuthenticationTypeD: AuthenticationTypeD,
    AuthenticationTypeC: AuthenticationTypeC,
    AuthenticationTypeB: AuthenticationTypeB,
    AuthenticationTypeA: AuthenticationTypeA,
    AiContentReviewResult: AiContentReviewResult,
    ReduceMediaBitrateTask: ReduceMediaBitrateTask,
    TerrorismImgReviewTemplateInfo: TerrorismImgReviewTemplateInfo,
    ApplyUploadResponse: ApplyUploadResponse,
    ReviewAudioVideoResponse: ReviewAudioVideoResponse,
    DeleteClassRequest: DeleteClassRequest,
    DescribeTranscodeTemplatesRequest: DescribeTranscodeTemplatesRequest,
    QualityEnhanceTaskOutput: QualityEnhanceTaskOutput,
    ReviewTemplate: ReviewTemplate,
    DescribeCurrentPlaylistRequest: DescribeCurrentPlaylistRequest,
    UserDefineAsrTextReviewTemplateInfoForUpdate: UserDefineAsrTextReviewTemplateInfoForUpdate,
    DescribeCDNDomainsResponse: DescribeCDNDomainsResponse,
    MediaVideoStreamItem: MediaVideoStreamItem,
    CreateRebuildMediaTemplateRequest: CreateRebuildMediaTemplateRequest,
    ImageOperation: ImageOperation,
    MediaSubStreamInfoItem: MediaSubStreamInfoItem,
    MosaicConfigureInfoForUpdate: MosaicConfigureInfoForUpdate,
    DescribeWatermarkTemplatesResponse: DescribeWatermarkTemplatesResponse,
    DescribeRoundPlaysResponse: DescribeRoundPlaysResponse,
    ImageTransform: ImageTransform,
    CreateAnimatedGraphicsTemplateRequest: CreateAnimatedGraphicsTemplateRequest,
    FrameTagConfigureInfo: FrameTagConfigureInfo,
    RemoveWatermarkRequest: RemoveWatermarkRequest,
    ExecuteFunctionRequest: ExecuteFunctionRequest,
    RebuildMediaTask: RebuildMediaTask,
    ConfirmEventsResponse: ConfirmEventsResponse,
    ModifyPersonSampleResponse: ModifyPersonSampleResponse,
    VideoTrackItem: VideoTrackItem,
    VideoDenoiseInfo: VideoDenoiseInfo,
    DescribeLicenseUsageDataRequest: DescribeLicenseUsageDataRequest,
    DeleteTranscodeTemplateResponse: DeleteTranscodeTemplateResponse,
    MediaTranscodeItem: MediaTranscodeItem,
    DescribePersonSamplesResponse: DescribePersonSamplesResponse,
    ExtractCopyRightWatermarkTaskOutput: ExtractCopyRightWatermarkTaskOutput,
    SplitMediaTaskInput: SplitMediaTaskInput,
    PornConfigureInfo: PornConfigureInfo,
    AiRecognitionTaskObjectSeqmentItem: AiRecognitionTaskObjectSeqmentItem,
    SplitMediaResponse: SplitMediaResponse,
    RestoreMediaRequest: RestoreMediaRequest,
    PullEventsRequest: PullEventsRequest,
    AiRecognitionTaskObjectResult: AiRecognitionTaskObjectResult,
    DescribeAIAnalysisTemplatesResponse: DescribeAIAnalysisTemplatesResponse,
    CreateSnapshotByTimeOffsetTemplateRequest: CreateSnapshotByTimeOffsetTemplateRequest,
    DescribeQualityInspectTemplatesResponse: DescribeQualityInspectTemplatesResponse,
    UserDefineFaceReviewTemplateInfo: UserDefineFaceReviewTemplateInfo,
    AiRecognitionTaskAsrWordsResult: AiRecognitionTaskAsrWordsResult,
    CreateSubAppIdRequest: CreateSubAppIdRequest,
    DescribeProcedureTemplatesResponse: DescribeProcedureTemplatesResponse,
    SearchMediaRequest: SearchMediaRequest,
    DynamicRangeInfo: DynamicRangeInfo,
    CreateSampleSnapshotTemplateRequest: CreateSampleSnapshotTemplateRequest,
    DescribeRebuildMediaTemplatesResponse: DescribeRebuildMediaTemplatesResponse,
    AudioVolumeParam: AudioVolumeParam,
    AudioDenoiseInfo: AudioDenoiseInfo,
    AiReviewTaskPornAsrResult: AiReviewTaskPornAsrResult,
    ModifyClassResponse: ModifyClassResponse,
    BlackWhiteEdgeConfigureInfoForUpdate: BlackWhiteEdgeConfigureInfoForUpdate,
    EditMediaFileInfo: EditMediaFileInfo,
    BlackWhiteEdgeConfigureInfo: BlackWhiteEdgeConfigureInfo,
    ImageWatermarkInputForUpdate: ImageWatermarkInputForUpdate,
    ProcessMediaByProcedureResponse: ProcessMediaByProcedureResponse,
    PullUploadResponse: PullUploadResponse,
    RemoveWaterMarkTaskInput: RemoveWaterMarkTaskInput,
    FaceConfigureInfo: FaceConfigureInfo,
    AiRecognitionTaskFaceResultOutput: AiRecognitionTaskFaceResultOutput,
    DeleteImageProcessingTemplateResponse: DeleteImageProcessingTemplateResponse,
    PornImgReviewTemplateInfoForUpdate: PornImgReviewTemplateInfoForUpdate,
    CreateWatermarkTemplateResponse: CreateWatermarkTemplateResponse,
    PornImgReviewTemplateInfo: PornImgReviewTemplateInfo,
    QualityInspectTemplateItem: QualityInspectTemplateItem,
    AiReviewPoliticalOcrTaskOutput: AiReviewPoliticalOcrTaskOutput,
    OcrFullTextConfigureInfo: OcrFullTextConfigureInfo,
    CommitUploadRequest: CommitUploadRequest,
    WatermarkCycleConfigForUpdate: WatermarkCycleConfigForUpdate,
    SnapshotByTimeOffsetTask2017: SnapshotByTimeOffsetTask2017,
    ReviewInfo: ReviewInfo,
    MediaClassInfo: MediaClassInfo,
    AiAnalysisTaskInput: AiAnalysisTaskInput,
    DeleteAnimatedGraphicsTemplateRequest: DeleteAnimatedGraphicsTemplateRequest,
    DeleteSnapshotByTimeOffsetTemplateRequest: DeleteSnapshotByTimeOffsetTemplateRequest,
    DescribeAnimatedGraphicsTemplatesResponse: DescribeAnimatedGraphicsTemplatesResponse,
    ExtractCopyRightWatermarkTask: ExtractCopyRightWatermarkTask,
    MediaAiAnalysisFrameTagItem: MediaAiAnalysisFrameTagItem,
    QualityInspectItem: QualityInspectItem,
    PullUploadTask: PullUploadTask,
    DescribeImageProcessingTemplatesResponse: DescribeImageProcessingTemplatesResponse,
    UserDefineOcrTextReviewTemplateInfoForUpdate: UserDefineOcrTextReviewTemplateInfoForUpdate,
    SampleSnapshotTaskInput: SampleSnapshotTaskInput,
    ReviewImageRequest: ReviewImageRequest,
    RebuildVideoInfo: RebuildVideoInfo,
    DescribeHeadTailTemplatesResponse: DescribeHeadTailTemplatesResponse,
    HandleCurrentPlaylistRequest: HandleCurrentPlaylistRequest,
    TerrorismConfigureInfo: TerrorismConfigureInfo,
    PoliticalAsrReviewTemplateInfo: PoliticalAsrReviewTemplateInfo,
    CreateAnimatedGraphicsTemplateResponse: CreateAnimatedGraphicsTemplateResponse,
    HwPrivateAccess: HwPrivateAccess,
    AiRecognitionTaskHeadTailResult: AiRecognitionTaskHeadTailResult,
    DescribePersonSamplesRequest: DescribePersonSamplesRequest,
    AiRecognitionTaskFaceResultItem: AiRecognitionTaskFaceResultItem,
    AiAnalysisTaskCoverInput: AiAnalysisTaskCoverInput,
    DeleteEnhanceMediaTemplateRequest: DeleteEnhanceMediaTemplateRequest,
    SetDrmKeyProviderInfoResponse: SetDrmKeyProviderInfoResponse,
    DescribeStorageDetailsRequest: DescribeStorageDetailsRequest,
    EnhanceMediaQualityResponse: EnhanceMediaQualityResponse,
    SubtitleFormatsOperation: SubtitleFormatsOperation,
    MediaTrack: MediaTrack,
    FastEditMediaFileInfo: FastEditMediaFileInfo,
    StorageStatData: StorageStatData,
    RoundPlayFilePlayInfo: RoundPlayFilePlayInfo,
    DescribeFileAttributesRequest: DescribeFileAttributesRequest,
    ResponseHeader: ResponseHeader,
    QualityInspectResultItem: QualityInspectResultItem,
    MediaOutputInfo: MediaOutputInfo,
    EditMediaTaskOutput: EditMediaTaskOutput,
    HighlightSegmentItem: HighlightSegmentItem,
    CreateReviewTemplateResponse: CreateReviewTemplateResponse,
    DeleteWatermarkTemplateResponse: DeleteWatermarkTemplateResponse,
    DeleteQualityInspectTemplateRequest: DeleteQualityInspectTemplateRequest,
    ComposeMediaOutput: ComposeMediaOutput,
    DeleteJustInTimeTranscodeTemplateResponse: DeleteJustInTimeTranscodeTemplateResponse,
    ModifyWatermarkTemplateResponse: ModifyWatermarkTemplateResponse,
    DescribeJustInTimeTranscodeTemplatesRequest: DescribeJustInTimeTranscodeTemplatesRequest,
    ProhibitedConfigureInfoForUpdate: ProhibitedConfigureInfoForUpdate,
    FrameTagConfigureInfoForUpdate: FrameTagConfigureInfoForUpdate,
    CreateImageSpriteTemplateResponse: CreateImageSpriteTemplateResponse,
    DescribeAIRecognitionTemplatesRequest: DescribeAIRecognitionTemplatesRequest,
    HDRInfo: HDRInfo,
    EditMediaTEHDConfig: EditMediaTEHDConfig,
    AiRecognitionResult: AiRecognitionResult,

}