{{ self::ts_doc_block(doc, "") }}export enum {{ name }} {
{%- for variant in variants %}
{{ self::ts_doc_block(variant.doc, "  ") }}  {{ variant.name }} = {{ variant.discriminant }},
{%- endfor %}
}

const {{ name }}Codec: WireCodec<{{ name }}> = {
  size: (_v) => 4,
  encode: (writer, v) => { writer.writeI32(v); },
  decode: (reader) => {
    const value = reader.readI32();
    switch (value) {
{%- for variant in variants %}
      case {{ variant.discriminant }}: return {{ name }}.{{ variant.name }};
{%- endfor %}
      default: throw new Error(`Unknown {{ name }} discriminant: ${value}`);
    }
  },
};
