export type TelemetryEventCategory = "generic" | "error" | "performance" ; export type TelemetryEventPropertyType = string | number | boolean | undefined ; /**
 * A property to be logged to telemetry containing both the value and a tag. Tags are generic strings that can be used
 * to mark pieces of information that should be organized or handled differently by loggers in various first or third
 * party scenarios. For example, tags are used to mark PII that should not be stored in logs.
 */ export interface ITaggedTelemetryPropertyType { value : TelemetryEventPropertyType ; tag : string ; } export interface ITelemetryProperties { [ index ] : TelemetryEventPropertyType | ITaggedTelemetryPropertyType ; } param category param eventName export interface ITelemetryBaseEvent extends ITelemetryProperties { category : string ; eventName : string ; } /**
 * Interface to output telemetry events.
 * Implemented by hosting app / loader
 */ export interface ITelemetryBaseLogger { send ( event ) : void ; } /**
 * Informational (non-error) telemetry event
 * Maps to category = "generic"
 */ export interface ITelemetryGenericEvent extends ITelemetryProperties { eventName : string ; category ? : TelemetryEventCategory ; } /**
 * Error telemetry event.
 * Maps to category = "error"
 */ export interface ITelemetryErrorEvent extends ITelemetryProperties { eventName : string ; } /**
 * Performance telemetry event.
 * Maps to category = "performance"
 */ export interface ITelemetryPerformanceEvent extends ITelemetryGenericEvent { duration ? : number ; } /**
 * An error object that supports exporting its properties to be logged to telemetry
 */ export interface ILoggingError extends Error { /** Return all properties from this object that should be logged to telemetry */ getTelemetryProperties ( ) : ITelemetryProperties ; } /**
 * ITelemetryLogger interface contains various helper telemetry methods,
 * encoding in one place schemas for various types of Fluid telemetry events.
 * Creates sub-logger that appends properties to all events
 */ export interface ITelemetryLogger extends ITelemetryBaseLogger { param event send ( event ) : void ; param event param error sendTelemetryEvent ( event , error ? ) : void ; param event sendErrorEvent ( event , error ? ) : void ; param event sendPerformanceEvent ( event , error ? ) : void ; }