/**
 * NOTE: Do not modify this file by hand.
 * Content was generated from glean .yaml files.
 * If you're updating some of the sources, see README for instructions.
 */
{# The rendered source is autogenerated, but this
   Jinja2 template is not. Please file bugs! #}

interface GleanImpl {
{% for category, objs in metrics.items() %}

  {{ category|camelize }}: {
  {% for obj in objs.values() %}
    {{ obj.name|camelize }}: {{ obj | metric }};
  {% endfor %}
  }
{% endfor %}
}

interface GleanPingsImpl {
{% for obj in pings.values() %}
  {{ obj.name|camelize }}: {{ obj | ping }};
{% endfor %}
}

type GleanEventNoExtras = Omit<GleanEvent, "record"> & { record(_?: never) };
type GleanEventWithExtras<T> = Omit<GleanEvent, "record"> & { record(extras: T) };

type GleanPingNoReason = Omit<nsIGleanPing, "submit"> & { submit(_?: never) };
type GleanPingWithReason<T> = Omit<nsIGleanPing, "submit"> & { submit(reason: T) };
