// generated from terraform resource schema
import * as cdktf from 'cdktf';
export function elastictranscoderPresetAudioToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        audio_packing_mode: cdktf.stringToTerraform(struct.audioPackingMode),
        bit_rate: cdktf.stringToTerraform(struct.bitRate),
        channels: cdktf.stringToTerraform(struct.channels),
        codec: cdktf.stringToTerraform(struct.codec),
        sample_rate: cdktf.stringToTerraform(struct.sampleRate),
    };
}
export class ElastictranscoderPresetAudioOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._audioPackingMode !== undefined) {
            hasAnyValues = true;
            internalValueResult.audioPackingMode = this._audioPackingMode;
        }
        if (this._bitRate !== undefined) {
            hasAnyValues = true;
            internalValueResult.bitRate = this._bitRate;
        }
        if (this._channels !== undefined) {
            hasAnyValues = true;
            internalValueResult.channels = this._channels;
        }
        if (this._codec !== undefined) {
            hasAnyValues = true;
            internalValueResult.codec = this._codec;
        }
        if (this._sampleRate !== undefined) {
            hasAnyValues = true;
            internalValueResult.sampleRate = this._sampleRate;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._audioPackingMode = undefined;
            this._bitRate = undefined;
            this._channels = undefined;
            this._codec = undefined;
            this._sampleRate = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._audioPackingMode = value.audioPackingMode;
            this._bitRate = value.bitRate;
            this._channels = value.channels;
            this._codec = value.codec;
            this._sampleRate = value.sampleRate;
        }
    }
    // audio_packing_mode - computed: false, optional: true, required: false
    _audioPackingMode;
    get audioPackingMode() {
        return this.getStringAttribute('audio_packing_mode');
    }
    set audioPackingMode(value) {
        this._audioPackingMode = value;
    }
    resetAudioPackingMode() {
        this._audioPackingMode = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get audioPackingModeInput() {
        return this._audioPackingMode;
    }
    // bit_rate - computed: true, optional: true, required: false
    _bitRate;
    get bitRate() {
        return this.getStringAttribute('bit_rate');
    }
    set bitRate(value) {
        this._bitRate = value;
    }
    resetBitRate() {
        this._bitRate = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get bitRateInput() {
        return this._bitRate;
    }
    // channels - computed: false, optional: true, required: false
    _channels;
    get channels() {
        return this.getStringAttribute('channels');
    }
    set channels(value) {
        this._channels = value;
    }
    resetChannels() {
        this._channels = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get channelsInput() {
        return this._channels;
    }
    // codec - computed: false, optional: true, required: false
    _codec;
    get codec() {
        return this.getStringAttribute('codec');
    }
    set codec(value) {
        this._codec = value;
    }
    resetCodec() {
        this._codec = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get codecInput() {
        return this._codec;
    }
    // sample_rate - computed: false, optional: true, required: false
    _sampleRate;
    get sampleRate() {
        return this.getStringAttribute('sample_rate');
    }
    set sampleRate(value) {
        this._sampleRate = value;
    }
    resetSampleRate() {
        this._sampleRate = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sampleRateInput() {
        return this._sampleRate;
    }
}
export function elastictranscoderPresetAudioCodecOptionsToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        bit_depth: cdktf.stringToTerraform(struct.bitDepth),
        bit_order: cdktf.stringToTerraform(struct.bitOrder),
        profile: cdktf.stringToTerraform(struct.profile),
        signed: cdktf.stringToTerraform(struct.signed),
    };
}
export class ElastictranscoderPresetAudioCodecOptionsOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._bitDepth !== undefined) {
            hasAnyValues = true;
            internalValueResult.bitDepth = this._bitDepth;
        }
        if (this._bitOrder !== undefined) {
            hasAnyValues = true;
            internalValueResult.bitOrder = this._bitOrder;
        }
        if (this._profile !== undefined) {
            hasAnyValues = true;
            internalValueResult.profile = this._profile;
        }
        if (this._signed !== undefined) {
            hasAnyValues = true;
            internalValueResult.signed = this._signed;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._bitDepth = undefined;
            this._bitOrder = undefined;
            this._profile = undefined;
            this._signed = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._bitDepth = value.bitDepth;
            this._bitOrder = value.bitOrder;
            this._profile = value.profile;
            this._signed = value.signed;
        }
    }
    // bit_depth - computed: true, optional: true, required: false
    _bitDepth;
    get bitDepth() {
        return this.getStringAttribute('bit_depth');
    }
    set bitDepth(value) {
        this._bitDepth = value;
    }
    resetBitDepth() {
        this._bitDepth = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get bitDepthInput() {
        return this._bitDepth;
    }
    // bit_order - computed: true, optional: true, required: false
    _bitOrder;
    get bitOrder() {
        return this.getStringAttribute('bit_order');
    }
    set bitOrder(value) {
        this._bitOrder = value;
    }
    resetBitOrder() {
        this._bitOrder = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get bitOrderInput() {
        return this._bitOrder;
    }
    // profile - computed: true, optional: true, required: false
    _profile;
    get profile() {
        return this.getStringAttribute('profile');
    }
    set profile(value) {
        this._profile = value;
    }
    resetProfile() {
        this._profile = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get profileInput() {
        return this._profile;
    }
    // signed - computed: true, optional: true, required: false
    _signed;
    get signed() {
        return this.getStringAttribute('signed');
    }
    set signed(value) {
        this._signed = value;
    }
    resetSigned() {
        this._signed = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get signedInput() {
        return this._signed;
    }
}
export function elastictranscoderPresetThumbnailsToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        aspect_ratio: cdktf.stringToTerraform(struct.aspectRatio),
        format: cdktf.stringToTerraform(struct.format),
        interval: cdktf.stringToTerraform(struct.interval),
        max_height: cdktf.stringToTerraform(struct.maxHeight),
        max_width: cdktf.stringToTerraform(struct.maxWidth),
        padding_policy: cdktf.stringToTerraform(struct.paddingPolicy),
        resolution: cdktf.stringToTerraform(struct.resolution),
        sizing_policy: cdktf.stringToTerraform(struct.sizingPolicy),
    };
}
export class ElastictranscoderPresetThumbnailsOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._aspectRatio !== undefined) {
            hasAnyValues = true;
            internalValueResult.aspectRatio = this._aspectRatio;
        }
        if (this._format !== undefined) {
            hasAnyValues = true;
            internalValueResult.format = this._format;
        }
        if (this._interval !== undefined) {
            hasAnyValues = true;
            internalValueResult.interval = this._interval;
        }
        if (this._maxHeight !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxHeight = this._maxHeight;
        }
        if (this._maxWidth !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxWidth = this._maxWidth;
        }
        if (this._paddingPolicy !== undefined) {
            hasAnyValues = true;
            internalValueResult.paddingPolicy = this._paddingPolicy;
        }
        if (this._resolution !== undefined) {
            hasAnyValues = true;
            internalValueResult.resolution = this._resolution;
        }
        if (this._sizingPolicy !== undefined) {
            hasAnyValues = true;
            internalValueResult.sizingPolicy = this._sizingPolicy;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._aspectRatio = undefined;
            this._format = undefined;
            this._interval = undefined;
            this._maxHeight = undefined;
            this._maxWidth = undefined;
            this._paddingPolicy = undefined;
            this._resolution = undefined;
            this._sizingPolicy = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._aspectRatio = value.aspectRatio;
            this._format = value.format;
            this._interval = value.interval;
            this._maxHeight = value.maxHeight;
            this._maxWidth = value.maxWidth;
            this._paddingPolicy = value.paddingPolicy;
            this._resolution = value.resolution;
            this._sizingPolicy = value.sizingPolicy;
        }
    }
    // aspect_ratio - computed: false, optional: true, required: false
    _aspectRatio;
    get aspectRatio() {
        return this.getStringAttribute('aspect_ratio');
    }
    set aspectRatio(value) {
        this._aspectRatio = value;
    }
    resetAspectRatio() {
        this._aspectRatio = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get aspectRatioInput() {
        return this._aspectRatio;
    }
    // format - computed: false, optional: true, required: false
    _format;
    get format() {
        return this.getStringAttribute('format');
    }
    set format(value) {
        this._format = value;
    }
    resetFormat() {
        this._format = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get formatInput() {
        return this._format;
    }
    // interval - computed: false, optional: true, required: false
    _interval;
    get interval() {
        return this.getStringAttribute('interval');
    }
    set interval(value) {
        this._interval = value;
    }
    resetInterval() {
        this._interval = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get intervalInput() {
        return this._interval;
    }
    // max_height - computed: false, optional: true, required: false
    _maxHeight;
    get maxHeight() {
        return this.getStringAttribute('max_height');
    }
    set maxHeight(value) {
        this._maxHeight = value;
    }
    resetMaxHeight() {
        this._maxHeight = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxHeightInput() {
        return this._maxHeight;
    }
    // max_width - computed: false, optional: true, required: false
    _maxWidth;
    get maxWidth() {
        return this.getStringAttribute('max_width');
    }
    set maxWidth(value) {
        this._maxWidth = value;
    }
    resetMaxWidth() {
        this._maxWidth = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxWidthInput() {
        return this._maxWidth;
    }
    // padding_policy - computed: false, optional: true, required: false
    _paddingPolicy;
    get paddingPolicy() {
        return this.getStringAttribute('padding_policy');
    }
    set paddingPolicy(value) {
        this._paddingPolicy = value;
    }
    resetPaddingPolicy() {
        this._paddingPolicy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get paddingPolicyInput() {
        return this._paddingPolicy;
    }
    // resolution - computed: false, optional: true, required: false
    _resolution;
    get resolution() {
        return this.getStringAttribute('resolution');
    }
    set resolution(value) {
        this._resolution = value;
    }
    resetResolution() {
        this._resolution = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get resolutionInput() {
        return this._resolution;
    }
    // sizing_policy - computed: false, optional: true, required: false
    _sizingPolicy;
    get sizingPolicy() {
        return this.getStringAttribute('sizing_policy');
    }
    set sizingPolicy(value) {
        this._sizingPolicy = value;
    }
    resetSizingPolicy() {
        this._sizingPolicy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sizingPolicyInput() {
        return this._sizingPolicy;
    }
}
export function elastictranscoderPresetVideoToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        aspect_ratio: cdktf.stringToTerraform(struct.aspectRatio),
        bit_rate: cdktf.stringToTerraform(struct.bitRate),
        codec: cdktf.stringToTerraform(struct.codec),
        display_aspect_ratio: cdktf.stringToTerraform(struct.displayAspectRatio),
        fixed_gop: cdktf.stringToTerraform(struct.fixedGop),
        frame_rate: cdktf.stringToTerraform(struct.frameRate),
        keyframes_max_dist: cdktf.stringToTerraform(struct.keyframesMaxDist),
        max_frame_rate: cdktf.stringToTerraform(struct.maxFrameRate),
        max_height: cdktf.stringToTerraform(struct.maxHeight),
        max_width: cdktf.stringToTerraform(struct.maxWidth),
        padding_policy: cdktf.stringToTerraform(struct.paddingPolicy),
        resolution: cdktf.stringToTerraform(struct.resolution),
        sizing_policy: cdktf.stringToTerraform(struct.sizingPolicy),
    };
}
export class ElastictranscoderPresetVideoOutputReference extends cdktf.ComplexObject {
    isEmptyObject = false;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param isSingleItem True if this is a block, false if it's a list
    */
    constructor(terraformResource, terraformAttribute, isSingleItem) {
        super(terraformResource, terraformAttribute, isSingleItem);
    }
    get internalValue() {
        let hasAnyValues = this.isEmptyObject;
        const internalValueResult = {};
        if (this._aspectRatio !== undefined) {
            hasAnyValues = true;
            internalValueResult.aspectRatio = this._aspectRatio;
        }
        if (this._bitRate !== undefined) {
            hasAnyValues = true;
            internalValueResult.bitRate = this._bitRate;
        }
        if (this._codec !== undefined) {
            hasAnyValues = true;
            internalValueResult.codec = this._codec;
        }
        if (this._displayAspectRatio !== undefined) {
            hasAnyValues = true;
            internalValueResult.displayAspectRatio = this._displayAspectRatio;
        }
        if (this._fixedGop !== undefined) {
            hasAnyValues = true;
            internalValueResult.fixedGop = this._fixedGop;
        }
        if (this._frameRate !== undefined) {
            hasAnyValues = true;
            internalValueResult.frameRate = this._frameRate;
        }
        if (this._keyframesMaxDist !== undefined) {
            hasAnyValues = true;
            internalValueResult.keyframesMaxDist = this._keyframesMaxDist;
        }
        if (this._maxFrameRate !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxFrameRate = this._maxFrameRate;
        }
        if (this._maxHeight !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxHeight = this._maxHeight;
        }
        if (this._maxWidth !== undefined) {
            hasAnyValues = true;
            internalValueResult.maxWidth = this._maxWidth;
        }
        if (this._paddingPolicy !== undefined) {
            hasAnyValues = true;
            internalValueResult.paddingPolicy = this._paddingPolicy;
        }
        if (this._resolution !== undefined) {
            hasAnyValues = true;
            internalValueResult.resolution = this._resolution;
        }
        if (this._sizingPolicy !== undefined) {
            hasAnyValues = true;
            internalValueResult.sizingPolicy = this._sizingPolicy;
        }
        return hasAnyValues ? internalValueResult : undefined;
    }
    set internalValue(value) {
        if (value === undefined) {
            this.isEmptyObject = false;
            this._aspectRatio = undefined;
            this._bitRate = undefined;
            this._codec = undefined;
            this._displayAspectRatio = undefined;
            this._fixedGop = undefined;
            this._frameRate = undefined;
            this._keyframesMaxDist = undefined;
            this._maxFrameRate = undefined;
            this._maxHeight = undefined;
            this._maxWidth = undefined;
            this._paddingPolicy = undefined;
            this._resolution = undefined;
            this._sizingPolicy = undefined;
        }
        else {
            this.isEmptyObject = Object.keys(value).length === 0;
            this._aspectRatio = value.aspectRatio;
            this._bitRate = value.bitRate;
            this._codec = value.codec;
            this._displayAspectRatio = value.displayAspectRatio;
            this._fixedGop = value.fixedGop;
            this._frameRate = value.frameRate;
            this._keyframesMaxDist = value.keyframesMaxDist;
            this._maxFrameRate = value.maxFrameRate;
            this._maxHeight = value.maxHeight;
            this._maxWidth = value.maxWidth;
            this._paddingPolicy = value.paddingPolicy;
            this._resolution = value.resolution;
            this._sizingPolicy = value.sizingPolicy;
        }
    }
    // aspect_ratio - computed: false, optional: true, required: false
    _aspectRatio;
    get aspectRatio() {
        return this.getStringAttribute('aspect_ratio');
    }
    set aspectRatio(value) {
        this._aspectRatio = value;
    }
    resetAspectRatio() {
        this._aspectRatio = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get aspectRatioInput() {
        return this._aspectRatio;
    }
    // bit_rate - computed: true, optional: true, required: false
    _bitRate;
    get bitRate() {
        return this.getStringAttribute('bit_rate');
    }
    set bitRate(value) {
        this._bitRate = value;
    }
    resetBitRate() {
        this._bitRate = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get bitRateInput() {
        return this._bitRate;
    }
    // codec - computed: false, optional: true, required: false
    _codec;
    get codec() {
        return this.getStringAttribute('codec');
    }
    set codec(value) {
        this._codec = value;
    }
    resetCodec() {
        this._codec = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get codecInput() {
        return this._codec;
    }
    // display_aspect_ratio - computed: false, optional: true, required: false
    _displayAspectRatio;
    get displayAspectRatio() {
        return this.getStringAttribute('display_aspect_ratio');
    }
    set displayAspectRatio(value) {
        this._displayAspectRatio = value;
    }
    resetDisplayAspectRatio() {
        this._displayAspectRatio = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get displayAspectRatioInput() {
        return this._displayAspectRatio;
    }
    // fixed_gop - computed: false, optional: true, required: false
    _fixedGop;
    get fixedGop() {
        return this.getStringAttribute('fixed_gop');
    }
    set fixedGop(value) {
        this._fixedGop = value;
    }
    resetFixedGop() {
        this._fixedGop = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get fixedGopInput() {
        return this._fixedGop;
    }
    // frame_rate - computed: false, optional: true, required: false
    _frameRate;
    get frameRate() {
        return this.getStringAttribute('frame_rate');
    }
    set frameRate(value) {
        this._frameRate = value;
    }
    resetFrameRate() {
        this._frameRate = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get frameRateInput() {
        return this._frameRate;
    }
    // keyframes_max_dist - computed: false, optional: true, required: false
    _keyframesMaxDist;
    get keyframesMaxDist() {
        return this.getStringAttribute('keyframes_max_dist');
    }
    set keyframesMaxDist(value) {
        this._keyframesMaxDist = value;
    }
    resetKeyframesMaxDist() {
        this._keyframesMaxDist = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get keyframesMaxDistInput() {
        return this._keyframesMaxDist;
    }
    // max_frame_rate - computed: true, optional: true, required: false
    _maxFrameRate;
    get maxFrameRate() {
        return this.getStringAttribute('max_frame_rate');
    }
    set maxFrameRate(value) {
        this._maxFrameRate = value;
    }
    resetMaxFrameRate() {
        this._maxFrameRate = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxFrameRateInput() {
        return this._maxFrameRate;
    }
    // max_height - computed: false, optional: true, required: false
    _maxHeight;
    get maxHeight() {
        return this.getStringAttribute('max_height');
    }
    set maxHeight(value) {
        this._maxHeight = value;
    }
    resetMaxHeight() {
        this._maxHeight = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxHeightInput() {
        return this._maxHeight;
    }
    // max_width - computed: false, optional: true, required: false
    _maxWidth;
    get maxWidth() {
        return this.getStringAttribute('max_width');
    }
    set maxWidth(value) {
        this._maxWidth = value;
    }
    resetMaxWidth() {
        this._maxWidth = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get maxWidthInput() {
        return this._maxWidth;
    }
    // padding_policy - computed: false, optional: true, required: false
    _paddingPolicy;
    get paddingPolicy() {
        return this.getStringAttribute('padding_policy');
    }
    set paddingPolicy(value) {
        this._paddingPolicy = value;
    }
    resetPaddingPolicy() {
        this._paddingPolicy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get paddingPolicyInput() {
        return this._paddingPolicy;
    }
    // resolution - computed: false, optional: true, required: false
    _resolution;
    get resolution() {
        return this.getStringAttribute('resolution');
    }
    set resolution(value) {
        this._resolution = value;
    }
    resetResolution() {
        this._resolution = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get resolutionInput() {
        return this._resolution;
    }
    // sizing_policy - computed: false, optional: true, required: false
    _sizingPolicy;
    get sizingPolicy() {
        return this.getStringAttribute('sizing_policy');
    }
    set sizingPolicy(value) {
        this._sizingPolicy = value;
    }
    resetSizingPolicy() {
        this._sizingPolicy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sizingPolicyInput() {
        return this._sizingPolicy;
    }
}
export function elastictranscoderPresetVideoWatermarksToTerraform(struct) {
    if (!cdktf.canInspect(struct) || cdktf.Tokenization.isResolvable(struct)) {
        return struct;
    }
    if (cdktf.isComplexElement(struct)) {
        throw new Error("A complex element was used as configuration, this is not supported: https://cdk.tf/complex-object-as-configuration");
    }
    return {
        horizontal_align: cdktf.stringToTerraform(struct.horizontalAlign),
        horizontal_offset: cdktf.stringToTerraform(struct.horizontalOffset),
        id: cdktf.stringToTerraform(struct.id),
        max_height: cdktf.stringToTerraform(struct.maxHeight),
        max_width: cdktf.stringToTerraform(struct.maxWidth),
        opacity: cdktf.stringToTerraform(struct.opacity),
        sizing_policy: cdktf.stringToTerraform(struct.sizingPolicy),
        target: cdktf.stringToTerraform(struct.target),
        vertical_align: cdktf.stringToTerraform(struct.verticalAlign),
        vertical_offset: cdktf.stringToTerraform(struct.verticalOffset),
    };
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/elastictranscoder_preset aws_elastictranscoder_preset}
*/
export class ElastictranscoderPreset extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_elastictranscoder_preset";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/elastictranscoder_preset aws_elastictranscoder_preset} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options ElastictranscoderPresetConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_elastictranscoder_preset',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._container = config.container;
        this._description = config.description;
        this._name = config.name;
        this._type = config.type;
        this._videoCodecOptions = config.videoCodecOptions;
        this._audio.internalValue = config.audio;
        this._audioCodecOptions.internalValue = config.audioCodecOptions;
        this._thumbnails.internalValue = config.thumbnails;
        this._video.internalValue = config.video;
        this._videoWatermarks = config.videoWatermarks;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // arn - computed: true, optional: false, required: false
    get arn() {
        return this.getStringAttribute('arn');
    }
    // container - computed: false, optional: false, required: true
    _container;
    get container() {
        return this.getStringAttribute('container');
    }
    set container(value) {
        this._container = value;
    }
    // Temporarily expose input value. Use with caution.
    get containerInput() {
        return this._container;
    }
    // description - computed: false, optional: true, required: false
    _description;
    get description() {
        return this.getStringAttribute('description');
    }
    set description(value) {
        this._description = value;
    }
    resetDescription() {
        this._description = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get descriptionInput() {
        return this._description;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // name - computed: true, optional: true, required: false
    _name;
    get name() {
        return this.getStringAttribute('name');
    }
    set name(value) {
        this._name = value;
    }
    resetName() {
        this._name = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get nameInput() {
        return this._name;
    }
    // type - computed: true, optional: true, required: false
    _type;
    get type() {
        return this.getStringAttribute('type');
    }
    set type(value) {
        this._type = value;
    }
    resetType() {
        this._type = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get typeInput() {
        return this._type;
    }
    // video_codec_options - computed: false, optional: true, required: false
    _videoCodecOptions;
    get videoCodecOptions() {
        return this.getStringMapAttribute('video_codec_options');
    }
    set videoCodecOptions(value) {
        this._videoCodecOptions = value;
    }
    resetVideoCodecOptions() {
        this._videoCodecOptions = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get videoCodecOptionsInput() {
        return this._videoCodecOptions;
    }
    // audio - computed: false, optional: true, required: false
    _audio = new ElastictranscoderPresetAudioOutputReference(this, "audio", true);
    get audio() {
        return this._audio;
    }
    putAudio(value) {
        this._audio.internalValue = value;
    }
    resetAudio() {
        this._audio.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get audioInput() {
        return this._audio.internalValue;
    }
    // audio_codec_options - computed: false, optional: true, required: false
    _audioCodecOptions = new ElastictranscoderPresetAudioCodecOptionsOutputReference(this, "audio_codec_options", true);
    get audioCodecOptions() {
        return this._audioCodecOptions;
    }
    putAudioCodecOptions(value) {
        this._audioCodecOptions.internalValue = value;
    }
    resetAudioCodecOptions() {
        this._audioCodecOptions.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get audioCodecOptionsInput() {
        return this._audioCodecOptions.internalValue;
    }
    // thumbnails - computed: false, optional: true, required: false
    _thumbnails = new ElastictranscoderPresetThumbnailsOutputReference(this, "thumbnails", true);
    get thumbnails() {
        return this._thumbnails;
    }
    putThumbnails(value) {
        this._thumbnails.internalValue = value;
    }
    resetThumbnails() {
        this._thumbnails.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get thumbnailsInput() {
        return this._thumbnails.internalValue;
    }
    // video - computed: false, optional: true, required: false
    _video = new ElastictranscoderPresetVideoOutputReference(this, "video", true);
    get video() {
        return this._video;
    }
    putVideo(value) {
        this._video.internalValue = value;
    }
    resetVideo() {
        this._video.internalValue = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get videoInput() {
        return this._video.internalValue;
    }
    // video_watermarks - computed: false, optional: true, required: false
    _videoWatermarks;
    get videoWatermarks() {
        // Getting the computed value is not yet implemented
        return cdktf.Token.asAny(cdktf.Fn.tolist(this.interpolationForAttribute('video_watermarks')));
    }
    set videoWatermarks(value) {
        this._videoWatermarks = value;
    }
    resetVideoWatermarks() {
        this._videoWatermarks = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get videoWatermarksInput() {
        return this._videoWatermarks;
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            container: cdktf.stringToTerraform(this._container),
            description: cdktf.stringToTerraform(this._description),
            name: cdktf.stringToTerraform(this._name),
            type: cdktf.stringToTerraform(this._type),
            video_codec_options: cdktf.hashMapper(cdktf.stringToTerraform)(this._videoCodecOptions),
            audio: elastictranscoderPresetAudioToTerraform(this._audio.internalValue),
            audio_codec_options: elastictranscoderPresetAudioCodecOptionsToTerraform(this._audioCodecOptions.internalValue),
            thumbnails: elastictranscoderPresetThumbnailsToTerraform(this._thumbnails.internalValue),
            video: elastictranscoderPresetVideoToTerraform(this._video.internalValue),
            video_watermarks: cdktf.listMapper(elastictranscoderPresetVideoWatermarksToTerraform)(this._videoWatermarks),
        };
    }
}
//# sourceMappingURL=elastictranscoder-preset.js.map