{{#description}}
    /**
    * {{{description}}}
    */
{{/description}}
{{#vendorExtensions}}

// mark 1 model enum
export enum {{x-enumTypeName}} {
{{#x-enum-pairs}}
    {{Name}} = "{{Name}}",
{{/x-enum-pairs}}
}

{{#supportsConvertFromEnum}}
export function convertFrom{{x-enumTypeName}}(e: {{x-enumTypeName}}): number{
    switch(e){
{{#x-enum-pairs}}
        case {{x-enumTypeName}}.{{Name}}:
            return {{Value}};
{{/x-enum-pairs}}
        default:
            throw new Error(`${e} is an invalid {{x-enumTypeName}}`);
    }
}
{{/supportsConvertFromEnum}}

{{#supportsConvertToEnum}}
export function convertTo{{x-enumTypeName}}(n: number): {{x-enumTypeName}}{
    switch(n){
{{#x-enum-pairs}}
        case {{Value}}:
            return {{x-enumTypeName}}.{{Name}};
{{/x-enum-pairs}}
        default:
            throw new Error(`${n} is an invalid {{x-enumTypeName}}`);
    }
}
{{/supportsConvertToEnum}}

{{#supportsDescribeEnum}}
export function describe{{x-enumTypeName}}(e: {{x-enumTypeName}}): string{
    switch(e){
{{#x-enum-pairs}}
        case {{x-enumTypeName}}.{{Name}}:
            return "{{Description}}";
{{/x-enum-pairs}}
        default:
            throw new Error(`${e} is an invalid {{x-enumTypeName}}`);
    }
}
{{/supportsDescribeEnum}}

{{/vendorExtensions}}