1+ import { EventEmitter } from "events" ;
12import { Teslemetry } from "./Teslemetry.js" ;
23import {
34 postApi1EnergySitesByIdBackup ,
@@ -9,13 +10,55 @@ import {
910 postApi1EnergySitesByIdOperation ,
1011 postApi1EnergySitesByIdStormMode ,
1112 getApi1EnergySitesByIdTelemetryHistory ,
13+ GetApi1EnergySitesByIdSiteInfoResponse ,
14+ GetApi1EnergySitesByIdLiveStatusResponse ,
1215} from "./client/index.js" ;
1316
14- export class TeslemetryEnergyApi {
17+ // TypeScript interface for event type safety
18+ export declare interface TeslemetryEnergyApi {
19+ on (
20+ event : "siteInfo" ,
21+ listener : ( data : GetApi1EnergySitesByIdSiteInfoResponse ) => void ,
22+ ) : this;
23+ on (
24+ event : "liveStatus" ,
25+ listener : ( data : GetApi1EnergySitesByIdLiveStatusResponse ) => void ,
26+ ) : this;
27+
28+ off (
29+ event : "siteInfo" ,
30+ listener : ( data : GetApi1EnergySitesByIdSiteInfoResponse ) => void ,
31+ ) : this;
32+ off (
33+ event : "liveStatus" ,
34+ listener : ( data : GetApi1EnergySitesByIdLiveStatusResponse ) => void ,
35+ ) : this;
36+
37+ once (
38+ event : "siteInfo" ,
39+ listener : ( data : GetApi1EnergySitesByIdSiteInfoResponse ) => void ,
40+ ) : this;
41+ once (
42+ event : "liveStatus" ,
43+ listener : ( data : GetApi1EnergySitesByIdLiveStatusResponse ) => void ,
44+ ) : this;
45+
46+ emit (
47+ event : "siteInfo" ,
48+ data : GetApi1EnergySitesByIdSiteInfoResponse ,
49+ ) : boolean ;
50+ emit (
51+ event : "liveStatus" ,
52+ data : GetApi1EnergySitesByIdLiveStatusResponse ,
53+ ) : boolean ;
54+ }
55+
56+ export class TeslemetryEnergyApi extends EventEmitter {
1557 private root : Teslemetry ;
1658 public siteId : number ;
1759
1860 constructor ( root : Teslemetry , siteId : number ) {
61+ super ( ) ;
1962 this . root = root ;
2063 this . siteId = siteId ;
2164 }
@@ -91,6 +134,7 @@ export class TeslemetryEnergyApi {
91134 path : { id : this . siteId } ,
92135 client : this . root . client ,
93136 } ) ;
137+ this . emit ( "liveStatus" , data ) ;
94138 return data ;
95139 }
96140
@@ -103,6 +147,7 @@ export class TeslemetryEnergyApi {
103147 path : { id : this . siteId } ,
104148 client : this . root . client ,
105149 } ) ;
150+ this . emit ( "siteInfo" , data ) ;
106151 return data ;
107152 }
108153
@@ -173,4 +218,18 @@ export class TeslemetryEnergyApi {
173218 } ) ;
174219 return data ;
175220 }
221+
222+ public onSiteInfo (
223+ callback : ( data : GetApi1EnergySitesByIdSiteInfoResponse ) => void ,
224+ ) : ( ) => void {
225+ this . on ( "siteInfo" , callback ) ;
226+ return ( ) => this . off ( "siteInfo" , callback ) ;
227+ }
228+
229+ public onLiveStatus (
230+ callback : ( data : GetApi1EnergySitesByIdLiveStatusResponse ) => void ,
231+ ) : ( ) => void {
232+ this . on ( "liveStatus" , callback ) ;
233+ return ( ) => this . off ( "liveStatus" , callback ) ;
234+ }
176235}
0 commit comments