// generated from terraform resource schema
import * as cdktf from 'cdktf';
/**
* Represents a {@link https://www.terraform.io/docs/providers/aws/r/lambda_layer_version aws_lambda_layer_version}
*/
export class LambdaLayerVersion extends cdktf.TerraformResource {
    // =================
    // STATIC PROPERTIES
    // =================
    static tfResourceType = "aws_lambda_layer_version";
    // ===========
    // INITIALIZER
    // ===========
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/aws/r/lambda_layer_version aws_lambda_layer_version} 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 LambdaLayerVersionConfig
    */
    constructor(scope, id, config) {
        super(scope, id, {
            terraformResourceType: 'aws_lambda_layer_version',
            terraformGeneratorMetadata: {
                providerName: 'aws'
            },
            provider: config.provider,
            dependsOn: config.dependsOn,
            count: config.count,
            lifecycle: config.lifecycle
        });
        this._compatibleArchitectures = config.compatibleArchitectures;
        this._compatibleRuntimes = config.compatibleRuntimes;
        this._description = config.description;
        this._filename = config.filename;
        this._layerName = config.layerName;
        this._licenseInfo = config.licenseInfo;
        this._s3Bucket = config.s3Bucket;
        this._s3Key = config.s3Key;
        this._s3ObjectVersion = config.s3ObjectVersion;
        this._skipDestroy = config.skipDestroy;
        this._sourceCodeHash = config.sourceCodeHash;
    }
    // ==========
    // ATTRIBUTES
    // ==========
    // arn - computed: true, optional: false, required: false
    get arn() {
        return this.getStringAttribute('arn');
    }
    // compatible_architectures - computed: false, optional: true, required: false
    _compatibleArchitectures;
    get compatibleArchitectures() {
        return cdktf.Fn.tolist(this.getListAttribute('compatible_architectures'));
    }
    set compatibleArchitectures(value) {
        this._compatibleArchitectures = value;
    }
    resetCompatibleArchitectures() {
        this._compatibleArchitectures = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get compatibleArchitecturesInput() {
        return this._compatibleArchitectures;
    }
    // compatible_runtimes - computed: false, optional: true, required: false
    _compatibleRuntimes;
    get compatibleRuntimes() {
        return cdktf.Fn.tolist(this.getListAttribute('compatible_runtimes'));
    }
    set compatibleRuntimes(value) {
        this._compatibleRuntimes = value;
    }
    resetCompatibleRuntimes() {
        this._compatibleRuntimes = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get compatibleRuntimesInput() {
        return this._compatibleRuntimes;
    }
    // created_date - computed: true, optional: false, required: false
    get createdDate() {
        return this.getStringAttribute('created_date');
    }
    // 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;
    }
    // filename - computed: false, optional: true, required: false
    _filename;
    get filename() {
        return this.getStringAttribute('filename');
    }
    set filename(value) {
        this._filename = value;
    }
    resetFilename() {
        this._filename = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get filenameInput() {
        return this._filename;
    }
    // id - computed: true, optional: true, required: false
    get id() {
        return this.getStringAttribute('id');
    }
    // layer_arn - computed: true, optional: false, required: false
    get layerArn() {
        return this.getStringAttribute('layer_arn');
    }
    // layer_name - computed: false, optional: false, required: true
    _layerName;
    get layerName() {
        return this.getStringAttribute('layer_name');
    }
    set layerName(value) {
        this._layerName = value;
    }
    // Temporarily expose input value. Use with caution.
    get layerNameInput() {
        return this._layerName;
    }
    // license_info - computed: false, optional: true, required: false
    _licenseInfo;
    get licenseInfo() {
        return this.getStringAttribute('license_info');
    }
    set licenseInfo(value) {
        this._licenseInfo = value;
    }
    resetLicenseInfo() {
        this._licenseInfo = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get licenseInfoInput() {
        return this._licenseInfo;
    }
    // s3_bucket - computed: false, optional: true, required: false
    _s3Bucket;
    get s3Bucket() {
        return this.getStringAttribute('s3_bucket');
    }
    set s3Bucket(value) {
        this._s3Bucket = value;
    }
    resetS3Bucket() {
        this._s3Bucket = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get s3BucketInput() {
        return this._s3Bucket;
    }
    // s3_key - computed: false, optional: true, required: false
    _s3Key;
    get s3Key() {
        return this.getStringAttribute('s3_key');
    }
    set s3Key(value) {
        this._s3Key = value;
    }
    resetS3Key() {
        this._s3Key = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get s3KeyInput() {
        return this._s3Key;
    }
    // s3_object_version - computed: false, optional: true, required: false
    _s3ObjectVersion;
    get s3ObjectVersion() {
        return this.getStringAttribute('s3_object_version');
    }
    set s3ObjectVersion(value) {
        this._s3ObjectVersion = value;
    }
    resetS3ObjectVersion() {
        this._s3ObjectVersion = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get s3ObjectVersionInput() {
        return this._s3ObjectVersion;
    }
    // signing_job_arn - computed: true, optional: false, required: false
    get signingJobArn() {
        return this.getStringAttribute('signing_job_arn');
    }
    // signing_profile_version_arn - computed: true, optional: false, required: false
    get signingProfileVersionArn() {
        return this.getStringAttribute('signing_profile_version_arn');
    }
    // skip_destroy - computed: false, optional: true, required: false
    _skipDestroy;
    get skipDestroy() {
        return this.getBooleanAttribute('skip_destroy');
    }
    set skipDestroy(value) {
        this._skipDestroy = value;
    }
    resetSkipDestroy() {
        this._skipDestroy = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get skipDestroyInput() {
        return this._skipDestroy;
    }
    // source_code_hash - computed: true, optional: true, required: false
    _sourceCodeHash;
    get sourceCodeHash() {
        return this.getStringAttribute('source_code_hash');
    }
    set sourceCodeHash(value) {
        this._sourceCodeHash = value;
    }
    resetSourceCodeHash() {
        this._sourceCodeHash = undefined;
    }
    // Temporarily expose input value. Use with caution.
    get sourceCodeHashInput() {
        return this._sourceCodeHash;
    }
    // source_code_size - computed: true, optional: false, required: false
    get sourceCodeSize() {
        return this.getNumberAttribute('source_code_size');
    }
    // version - computed: true, optional: false, required: false
    get version() {
        return this.getStringAttribute('version');
    }
    // =========
    // SYNTHESIS
    // =========
    synthesizeAttributes() {
        return {
            compatible_architectures: cdktf.listMapper(cdktf.stringToTerraform)(this._compatibleArchitectures),
            compatible_runtimes: cdktf.listMapper(cdktf.stringToTerraform)(this._compatibleRuntimes),
            description: cdktf.stringToTerraform(this._description),
            filename: cdktf.stringToTerraform(this._filename),
            layer_name: cdktf.stringToTerraform(this._layerName),
            license_info: cdktf.stringToTerraform(this._licenseInfo),
            s3_bucket: cdktf.stringToTerraform(this._s3Bucket),
            s3_key: cdktf.stringToTerraform(this._s3Key),
            s3_object_version: cdktf.stringToTerraform(this._s3ObjectVersion),
            skip_destroy: cdktf.booleanToTerraform(this._skipDestroy),
            source_code_hash: cdktf.stringToTerraform(this._sourceCodeHash),
        };
    }
}
//# sourceMappingURL=lambda-layer-version.js.map