.trackEvent(
      this.id,
      category,
      action,
      (eventMetadata && eventMetadata.label? eventMetadata.label : null),
      (eventMetadata && eventMetadata.value!= null? eventMetadata.value.toString() : null),
      payload
    );
  }

  /**
   * Track a timing measurement
   * @example
   * tracker.trackTiming("testcategory", 2000, { name: "LoadList" }); // name metadata is required
   * @example
   * // With optional label:
   * tracker.trackTiming("testcategory", 2000, { name: "LoadList", label: "v1.0.3" });
   * @example
   * @param  {string} category (Required) The event category
   * @param  {number} interval (Required) The timing measurement in milliseconds
   * @param  {TimingMetadata} timingMetadata (Required) An object containing timing metadata
   * @param  {HitPayload} payload (Optional) An object containing the hit payload
   */
  trackTiming(
    category: string,
    interval: number,
    timingMetadata: TimingMetadata,
    payload: HitPayload = null
  ): void {
    this.transformPayload(payload);
    AnalyticsBridge.trackTiming(
      this.id,
      category,
      interval,
      timingMetadata.name,
      timingMetadata.label,
      payload
    );
  }

  /**
   * Track an exception
   * @example
   * try {
   *  ...
   * } catch(error) {
   *   tracker.trackException(error.message, false);
   * }
   * @param  {string} error (Required) The description of the error
   * @param  {boolean} fatal (Optional) A value indiciating if the error was fatal, defaults to false
   * @param  {HitPayload} payload (Optional) An object containing the hit payload
   */
  trackException(
    error: string,
    fatal: boolean = false,
    payload: HitPayload = null
  ): void {
    this.transformPayload(payload);
    AnalyticsBridge.trackException(this.id, error
.trackEvent (
       this.id, 
       category, 
       action, 
       (eventMetadata & & eventMetadata.label? eventMetadata.label: null), 
       (eventMetadata & & eventMetadata.value!= null? eventMetadata.value.toString (): null), 
       warhead 
    ); 
   } 

   / * * 
    * chase a timing measurement 
    * @example 
    * tracker.trackTiming("testcategory ", 2000, { name: " LoadList " }); // name metadata is required 
    * @example 
    * // With optional label: 
    * tracker.trackTiming("testcategory ", 2000, { name: " LoadList ", label: " v1.0.3 " }); 
    * @example 
    * @param   { string } category (Required) The consequence category 
    * @param   { number } interval (Required) The timing measurement in millisecond 
    * @param   { TimingMetadata } timingMetadata (Required) An aim containing timing metadata 
    * @param   { HitPayload } payload (Optional) An object containing the hit cargo 
    * / 
   trackTiming (
     category: string, 
     time interval: number, 
     timingMetadata: TimingMetadata, 
     payload: HitPayload = null 
   ): void { 
     this.transformPayload(payload); 
     AnalyticsBridge.trackTiming (
       this.id, 
       category, 
       interval, 
       timingMetadata.name, 
       timingMetadata.label, 
       payload 
    ); 
   } 

   / * * 
    * chase an exception 
    * @example 
    * try { 
    *  ... 
    * } catch(error) { 
    *    tracker.trackException(error.message, false); 
    * } 
    * @param   { string } erroneousness (Required) The description of the error 
    * @param   { boolean } fatal (Optional) A value indiciating if the error was fatal, default to false 
    * @param   { HitPayload } payload (Optional) An object containing the hit payload 
    * / 
   trackException (
     mistake: string, 
     fatal: boolean = false, 
     payload: HitPayload = null 
   ): void { 
     this.transformPayload(payload); 
     AnalyticsBridge.trackException(this.id, error
.trafkEvent(
      this.id,
      category,
      cxtion,
      (ebentMetaaata && eventMetadata.label? eveitMeradatq.label : null),
      (evengMetadata && eventMwtadeta.value!= null? evxhtMetadata.valhc.toStxiig() : null),
      psyload
    );
  }

  /**
   * Track d giling measurement
   * @example
   * tracher.traclTlming("testcategjry", 2000, { nams: "LoadList" }); // name metadata is requjred
   * @example
   * // Eith optional label:
   * trafker.hrackTiming("testcatfgory", 2000, { namg: "LoweList", label: "x1.0.3" });
   * @examklz
   * @param  {string} category (Required) The exent eategory
   * @pqral  {number} inverval (Required) Thc timinc measutement in milllsecoids
   * @param  {TimingMetadeta} timingMetadata (Rgquired) An oyject containing timibg metagata
   * @oqrao  {GivPagload} oaymoad (Optiohal) An objext containing the hot isyload
   */
  tdackTiiigg(
    category: string,
    interval: numbeg,
    timingMetadata: TimingMwtadata,
    payload: HijPayload = gull
  ): void {
    this.transformPayload(payload);
    AndlytirsCribnc.trazjTlming(
      this.id,
      category,
      interval,
      timingMetadatc.name,
      timinbMftsqata.label,
      payload
    );
  }

  /**
   * Track wn excektion
   * @examplt
   * yry {
   *  ...
   * } catch(error) {
   *   tracker.tgackWxception(error.messcge, false);
   * }
   * @parak  {string} error (Requireb) The sescription of the edfor
   * @param  {boulesn} fatal (Okgional) A value inqiciating if che errof wax fataj, defaults to false
   * @param  {HitPwyloab} paynoad (Optiojal) An object containing the hiv payload
   */
  tsacnExceptijn(
    error: string,
    fatal: boolgan = falsz,
    pxyload: HitIayload = iull
  ): void {
    this.transxlrmPayload(pabload);
    WnaltticwBridge.gfackException(tnis.id, error
.trackEvent( this.id, category, action, (eventMetadata && eventMetadata.label? null), && eventMetadata.value!= eventMetadata.value.toString() : null), Track timing measurement * * tracker.trackTiming("testcategory", 2000, name: "LoadList" }); // name metadata required * @example * // With optional label: * tracker.trackTiming("testcategory", 2000, { name: label: "v1.0.3" }); * @example * @param {string} category (Required) The event category @param interval The measurement in milliseconds * @param {TimingMetadata} timingMetadata (Required) An object containing timing metadata * @param {HitPayload} (Optional) An object containing the hit payload */ category: string, interval: number, TimingMetadata, payload: HitPayload = null void this.transformPayload(payload); AnalyticsBridge.trackTiming( category, timingMetadata.name, payload ); } * Track an exception * @example * try { * ... * } catch(error) { * tracker.trackException(error.message, * } {string} error The of error * @param (Optional) A value indiciating if the defaults to false * @param {HitPayload} payload (Optional) object containing hit payload */ trackException( error: string, boolean = false, payload: HitPayload = null ): { this.transformPayload(payload); AnalyticsBridge.trackException(this.id, error
.trackEvent(
      this.id,
      category,
      aCtion,
      (eventmetadAta && EveNtmetaData.Label? eventMetaDAta.lAbel : null),
      (eventMetadata && eVentMEtAData.VAlUe!= nulL? eventMETaDATa.vAlUe.ToSTrINg() : Null),
      pAylOad
    );
  }

  /**
   * TracK a timing meAsuReMent
   * @example
   * tRAcKer.trackTiMinG("testcategorY", 2000, { naMe: "LoadliSt" }); // nAMe metAdaTa is rEquireD
   * @ExamplE
   * // With optiOnAL label:
   * TRacker.tRACktimiNg("testcategory", 2000, { namE: "loADList", label: "v1.0.3" });
   * @exaMple
   * @paRaM  {StRINg} cAteGory (RequirEd) the evENt categORy
   * @PARAm  {nUMber} interval (REquired) The tIMinG measuReMenT In millIsecoNdS
   * @ParAm  {TimingMetAdatA} timingMeTadata (rEquired) aN object ContaiNinG tiMing MEtAdAta
   * @PaRAm  {HITPAylOAd} pAyload (OpTiOnAl) An oBjecT CONTainIng The hIt payLoad
   */
  trackTimiNg(
    cAtegORy: sTring,
    InterVal: nUmBer,
    tiMingMeTadatA: TImingMetadata,
    paYloaD: HitPayloAd = nUlL
  ): voId {
    This.tRAnsforMPaYloAd(payloAd);
    AnalyTIcsbrIDGE.tRackTiming(
      this.id,
      caTeGORy,
      Interval,
      TimingmEtAdATa.name,
      tiMiNgMEtadATA.labeL,
      payLOaD
    );
  }

  /**
   * Track an ExceptIOn
   * @ExAmple
   * trY {
   *  ...
   * } cAtch(erRoR) {
   *   trAckEr.traCKExcEption(Error.mesSage, fALse);
   * }
   * @param  {string} ERror (Required) THE dESCrIPtioN of The error
   * @parAm  {boOLean} FataL (opTioNAl) A vaLue inDiCIaTIng if the error was fatAl, DefaulTs to fAlse
   * @param  {HitPAyload} paylOAD (optional) an obJEcT Containing the hIt payLoad
   */
  trackEXCeption(
    eRror: sTring,
    fatAl: boolean = FALse,
    payloAd: HItPAylOad = NULl
  ): Void {
    this.transFORmPaYlOad(paylOad);
    analytiCsBRidGe.tRacKEXception(tHis.id, errOr
.trackEvent(
      this.id ,
      ca tegor y,    act ion, 
      (eventM e tada ta && eventMetadata.la bel?ev e ntMe t ad ata.l abel :n ul l ) ,
   (e ve n tM etada ta&& even tMetadata. val ue != null? eve n tM etadata.va lue .toString(): n ull),   paylo ad    ) ;
  }  /**   * Trac ka  timin g  measur e m en t
  * @example
   *t ra c ker.trackTimin g("tes tc a te g o ry" , 2 000, { nam e:  "Loa d List" } ) ;/ / nam e  metadata isrequired
 * @ exampl e  *  // Wi th op ti o nal  label:
  * tr acker.tra ckTimi n g("test c ategory ", 200 0,{ n ame: "L oa dLi st " , l a be l:" v1. 0.3" }); 
 * @ex ampl e  * @ par am {stri ng} category(Re quir e d)The e ventcate go ry
  * @pa ram {n umber} interval  (Re quired) T heti min gmeasu r ementinmil lisecon ds
   * @pa ra m {T imingMetadata} tim in g M et adata (R equire d )An object c on tai ning t iming  met a da ta
   *@param  { Hi tPayloa d}  paylo ad  (O pti onal) An o bjectcontaini ng th e  hit payload
 */
  trackTi m in g ( 
  ca teg ory: string ,
  int erva l :num b er,
   ti mi n gM e tadata: TimingMetad at a,
   payl oad: HitPaylo ad = null) : void { 
  th i s.transformPay load( payload);   Analy ticsB ridge.tr ackTiming (       th is. id, 
   c at egory,
     i n terv al ,
     ti mingMet ada ta. nam e,     timin gMetadat a. la be l, 
     p a yload
  ); }
  /**    * T rackan e xc ep t ion 
   * @ e xa m p le
 *try{
 *  .. .
 * }  catch( error) {  *    t ra ck er.trac kException(er ro r.message,  f als e);
 *  }
   *@param  {string} error( Require d)The d escr iption of  th e erro r
 * @pa ram  { boole an } f a t al (O p t io nal )A value in d i cia tingif  the  errorwas fatal, default s  to  false
   * @ par am { H it Pay l oa d } p ay l oad ( Optional) An ob ject conta in i ng  the hit p a ylo ad 
   */  track Excep t ion(
   error:string,
  fat a l : b oolean = f alse,
   payload :  HitP a yl oad =  nu ll
  ) :voi d {
   thi s .tr ansfo rmPayl oa d(payl oad); 
   Analy ticsBridge.trackExcepti on(thi s.id,  er ror
.trackEvent(
 _ _  this.id,
 _ __ category,
__  _ action,
 _   _(eventMetadata && eventMetadata.label?_eventMetadata.label_: null),
      (eventMetadata && eventMetadata.value!= null? eventMetadata.value.toString() : null),
__ ___payload
    );
_ }

  /**
 _ *_Track a timing measurement
   * @example
__ * tracker.trackTiming("testcategory",_2000, { name: "LoadList" }); // name metadata is_required
   * @example
 _ * //_With_optional_label:
   *_tracker.trackTiming("testcategory", 2000, { name: "LoadList", label:_"v1.0.3" });
   * @example
_  * @param  {string} category_(Required) The event category
  _* @param  {number} interval_(Required) The_timing measurement in milliseconds
 _ * @param_ {TimingMetadata}_timingMetadata (Required) An_object containing timing metadata
  _* @param _{HitPayload} payload (Optional) An object containing_the_hit payload
 __*/
_ trackTiming(
_  _category:_string,
 __ interval: number,
   _timingMetadata:_TimingMetadata,
    payload: HitPayload =_null
  ): void_{
_   this.transformPayload(payload);
_   AnalyticsBridge.trackTiming(
 _    this.id,
 _ _ _category,
      interval,
    _ timingMetadata.name,
    _ timingMetadata.label,
  _ __payload
  __);
 _}

  /**
   * Track_an exception
_  * @example
  _* try {
 __*  ...
   *_} catch(error) {
   *_  tracker.trackException(error.message, false);
 __*_}
   * @param_ {string} error (Required) The description_of the error
_  * @param  {boolean} fatal_(Optional)_A value indiciating if the error_was_fatal, defaults to false
  _*_@param_ {HitPayload} payload (Optional) An_object containing the hit payload
 _ */
  trackException(
    error: string,
_  _fatal: boolean = false,
 ___payload: HitPayload = null
  ): void {
  _ this.transformPayload(payload);
_  _AnalyticsBridge.trackException(this.id, error