tesla-fleet-api 0.3.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (342) hide show
  1. package/README.md +284 -1
  2. package/dist/_virtual/_rolldown/runtime.cjs +32 -0
  3. package/dist/_virtual/_rolldown/runtime.mjs +12 -0
  4. package/dist/bluetooth/adapters/shared.cjs +38 -0
  5. package/dist/bluetooth/adapters/shared.mjs +36 -0
  6. package/dist/bluetooth/async.cjs +121 -0
  7. package/dist/bluetooth/async.d.cts +10 -0
  8. package/dist/bluetooth/async.d.mts +10 -0
  9. package/dist/bluetooth/async.mjs +116 -0
  10. package/dist/bluetooth/broadcast.cjs +153 -0
  11. package/dist/bluetooth/broadcast.d.cts +59 -0
  12. package/dist/bluetooth/broadcast.d.mts +59 -0
  13. package/dist/bluetooth/broadcast.mjs +151 -0
  14. package/dist/bluetooth/constants.cjs +99 -0
  15. package/dist/bluetooth/constants.d.cts +70 -0
  16. package/dist/bluetooth/constants.d.mts +70 -0
  17. package/dist/bluetooth/constants.mjs +72 -0
  18. package/dist/bluetooth/esphome.cjs +292 -0
  19. package/dist/bluetooth/esphome.d.cts +83 -0
  20. package/dist/bluetooth/esphome.d.mts +83 -0
  21. package/dist/bluetooth/esphome.mjs +291 -0
  22. package/dist/bluetooth/framing.cjs +125 -0
  23. package/dist/bluetooth/framing.d.cts +45 -0
  24. package/dist/bluetooth/framing.d.mts +45 -0
  25. package/dist/bluetooth/framing.mjs +122 -0
  26. package/dist/bluetooth/homey.cjs +155 -0
  27. package/dist/bluetooth/homey.d.cts +75 -0
  28. package/dist/bluetooth/homey.d.mts +75 -0
  29. package/dist/bluetooth/homey.mjs +150 -0
  30. package/dist/bluetooth/names.cjs +24 -0
  31. package/dist/bluetooth/names.d.cts +10 -0
  32. package/dist/bluetooth/names.d.mts +10 -0
  33. package/dist/bluetooth/names.mjs +20 -0
  34. package/dist/bluetooth/noble.cjs +178 -0
  35. package/dist/bluetooth/noble.d.cts +58 -0
  36. package/dist/bluetooth/noble.d.mts +58 -0
  37. package/dist/bluetooth/noble.mjs +177 -0
  38. package/dist/bluetooth/streamglue.cjs +157 -0
  39. package/dist/bluetooth/streamglue.d.cts +37 -0
  40. package/dist/bluetooth/streamglue.d.mts +37 -0
  41. package/dist/bluetooth/streamglue.mjs +154 -0
  42. package/dist/bluetooth/teslabluetooth.cjs +67 -0
  43. package/dist/bluetooth/teslabluetooth.d.cts +41 -0
  44. package/dist/bluetooth/teslabluetooth.d.mts +41 -0
  45. package/dist/bluetooth/teslabluetooth.mjs +66 -0
  46. package/dist/bluetooth/transport.cjs +10 -0
  47. package/dist/bluetooth/transport.d.cts +95 -0
  48. package/dist/bluetooth/transport.d.mts +95 -0
  49. package/dist/bluetooth/transport.mjs +10 -0
  50. package/dist/bluetooth/vehiclebluetooth.cjs +1272 -0
  51. package/dist/bluetooth/vehiclebluetooth.d.cts +495 -0
  52. package/dist/bluetooth/vehiclebluetooth.d.mts +495 -0
  53. package/dist/bluetooth/vehiclebluetooth.mjs +1270 -0
  54. package/dist/bluetooth/verify.cjs +93 -0
  55. package/dist/bluetooth/verify.d.cts +35 -0
  56. package/dist/bluetooth/verify.d.mts +35 -0
  57. package/dist/bluetooth/verify.mjs +91 -0
  58. package/dist/bluetooth.cjs +53 -0
  59. package/dist/bluetooth.d.cts +10 -0
  60. package/dist/bluetooth.d.mts +10 -0
  61. package/dist/bluetooth.mjs +9 -0
  62. package/dist/charging.cjs +53 -0
  63. package/dist/charging.d.cts +31 -0
  64. package/dist/charging.d.mts +30 -0
  65. package/dist/charging.mjs +53 -0
  66. package/dist/commands.cjs +1797 -0
  67. package/dist/commands.d.cts +881 -0
  68. package/dist/commands.d.mts +881 -0
  69. package/dist/commands.mjs +1791 -0
  70. package/dist/const.cjs +322 -0
  71. package/dist/const.d.cts +308 -0
  72. package/dist/const.d.mts +308 -0
  73. package/dist/const.mjs +282 -0
  74. package/dist/energy.cjs +142 -0
  75. package/dist/energy.d.cts +101 -0
  76. package/dist/energy.d.mts +100 -0
  77. package/dist/energy.mjs +142 -0
  78. package/dist/energyisland.cjs +38 -0
  79. package/dist/energyisland.mjs +37 -0
  80. package/dist/energyparsers.cjs +118 -0
  81. package/dist/energyparsers.d.cts +39 -0
  82. package/dist/energyparsers.d.mts +39 -0
  83. package/dist/energyparsers.mjs +116 -0
  84. package/dist/energyspecific.cjs +457 -0
  85. package/dist/energyspecific.d.cts +258 -0
  86. package/dist/energyspecific.d.mts +258 -0
  87. package/dist/energyspecific.mjs +451 -0
  88. package/dist/exceptions.cjs +1488 -0
  89. package/dist/exceptions.d.cts +1143 -0
  90. package/dist/exceptions.d.mts +1143 -0
  91. package/dist/exceptions.mjs +1325 -0
  92. package/dist/funnel.cjs +297 -0
  93. package/dist/funnel.d.cts +118 -0
  94. package/dist/funnel.d.mts +118 -0
  95. package/dist/funnel.mjs +292 -0
  96. package/dist/index.cjs +287 -0
  97. package/dist/index.d.cts +28 -0
  98. package/dist/index.d.mts +28 -0
  99. package/dist/index.mjs +27 -0
  100. package/dist/log.cjs +75 -0
  101. package/dist/log.d.cts +4 -0
  102. package/dist/log.d.mts +4 -0
  103. package/dist/log.mjs +71 -0
  104. package/dist/oauth.cjs +143 -0
  105. package/dist/oauth.d.cts +69 -0
  106. package/dist/oauth.d.mts +69 -0
  107. package/dist/oauth.mjs +143 -0
  108. package/dist/partner.cjs +32 -0
  109. package/dist/partner.d.cts +24 -0
  110. package/dist/partner.d.mts +23 -0
  111. package/dist/partner.mjs +32 -0
  112. package/dist/powerwall/client.cjs +818 -0
  113. package/dist/powerwall/client.d.cts +297 -0
  114. package/dist/powerwall/client.d.mts +297 -0
  115. package/dist/powerwall/client.mjs +807 -0
  116. package/dist/powerwall/components.cjs +188 -0
  117. package/dist/powerwall/components.d.cts +45 -0
  118. package/dist/powerwall/components.d.mts +45 -0
  119. package/dist/powerwall/components.mjs +182 -0
  120. package/dist/powerwall/energysite.cjs +216 -0
  121. package/dist/powerwall/energysite.d.cts +104 -0
  122. package/dist/powerwall/energysite.d.mts +104 -0
  123. package/dist/powerwall/energysite.mjs +214 -0
  124. package/dist/powerwall/exceptions.cjs +59 -0
  125. package/dist/powerwall/exceptions.d.cts +38 -0
  126. package/dist/powerwall/exceptions.d.mts +38 -0
  127. package/dist/powerwall/exceptions.mjs +51 -0
  128. package/dist/powerwall/gateway.cjs +102 -0
  129. package/dist/powerwall/gateway.d.cts +57 -0
  130. package/dist/powerwall/gateway.d.mts +57 -0
  131. package/dist/powerwall/gateway.mjs +101 -0
  132. package/dist/powerwall/merge.cjs +163 -0
  133. package/dist/powerwall/merge.d.cts +63 -0
  134. package/dist/powerwall/merge.d.mts +63 -0
  135. package/dist/powerwall/merge.mjs +159 -0
  136. package/dist/powerwall/models.d.cts +95 -0
  137. package/dist/powerwall/models.d.mts +95 -0
  138. package/dist/powerwall/queries.cjs +17 -0
  139. package/dist/powerwall/queries.mjs +10 -0
  140. package/dist/powerwall/transport.cjs +232 -0
  141. package/dist/powerwall/transport.mjs +227 -0
  142. package/dist/powerwall.cjs +47 -0
  143. package/dist/powerwall.d.cts +9 -0
  144. package/dist/powerwall.d.mts +9 -0
  145. package/dist/powerwall.mjs +8 -0
  146. package/dist/router/base.cjs +203 -0
  147. package/dist/router/base.d.cts +112 -0
  148. package/dist/router/base.d.mts +112 -0
  149. package/dist/router/base.mjs +200 -0
  150. package/dist/router/energysite.cjs +65 -0
  151. package/dist/router/energysite.d.cts +47 -0
  152. package/dist/router/energysite.d.mts +47 -0
  153. package/dist/router/energysite.mjs +60 -0
  154. package/dist/router.cjs +13 -0
  155. package/dist/router.d.cts +3 -0
  156. package/dist/router.d.mts +3 -0
  157. package/dist/router.mjs +3 -0
  158. package/dist/signing/crypto.cjs +59 -0
  159. package/dist/signing/crypto.mjs +52 -0
  160. package/dist/signing/energy.cjs +123 -0
  161. package/dist/signing/energy.d.cts +45 -0
  162. package/dist/signing/energy.d.mts +45 -0
  163. package/dist/signing/energy.mjs +120 -0
  164. package/dist/signing/jws.cjs +229 -0
  165. package/dist/signing/jws.d.cts +45 -0
  166. package/dist/signing/jws.d.mts +45 -0
  167. package/dist/signing/jws.mjs +211 -0
  168. package/dist/signing/keys.cjs +191 -0
  169. package/dist/signing/keys.d.cts +21 -0
  170. package/dist/signing/keys.d.mts +21 -0
  171. package/dist/signing/keys.mjs +182 -0
  172. package/dist/signing/session.cjs +186 -0
  173. package/dist/signing/session.d.cts +106 -0
  174. package/dist/signing/session.d.mts +106 -0
  175. package/dist/signing/session.mjs +184 -0
  176. package/dist/tariff.cjs +319 -0
  177. package/dist/tariff.d.cts +40 -0
  178. package/dist/tariff.d.mts +40 -0
  179. package/dist/tariff.mjs +317 -0
  180. package/dist/teslafleetapi.cjs +326 -0
  181. package/dist/teslafleetapi.d.cts +160 -0
  182. package/dist/teslafleetapi.d.mts +160 -0
  183. package/dist/teslafleetapi.mjs +326 -0
  184. package/dist/teslemetry.cjs +183 -0
  185. package/dist/teslemetry.d.cts +113 -0
  186. package/dist/teslemetry.d.mts +113 -0
  187. package/dist/teslemetry.mjs +181 -0
  188. package/dist/teslemetryenergy.cjs +287 -0
  189. package/dist/teslemetryenergy.d.cts +154 -0
  190. package/dist/teslemetryenergy.d.mts +154 -0
  191. package/dist/teslemetryenergy.mjs +282 -0
  192. package/dist/teslemetryvehicle.cjs +407 -0
  193. package/dist/teslemetryvehicle.d.cts +238 -0
  194. package/dist/teslemetryvehicle.d.mts +238 -0
  195. package/dist/teslemetryvehicle.mjs +405 -0
  196. package/dist/tessie.cjs +71 -0
  197. package/dist/tessie.d.cts +69 -0
  198. package/dist/tessie.d.mts +69 -0
  199. package/dist/tessie.mjs +71 -0
  200. package/dist/tessievehicle.cjs +514 -0
  201. package/dist/tessievehicle.d.cts +333 -0
  202. package/dist/tessievehicle.d.mts +333 -0
  203. package/dist/tessievehicle.mjs +513 -0
  204. package/dist/types/commands.d.cts +28 -0
  205. package/dist/types/commands.d.mts +28 -0
  206. package/dist/types/live_status.d.cts +30 -0
  207. package/dist/types/live_status.d.mts +30 -0
  208. package/dist/types/products.d.cts +58 -0
  209. package/dist/types/products.d.mts +58 -0
  210. package/dist/types/responses.d.cts +13 -0
  211. package/dist/types/responses.d.mts +13 -0
  212. package/dist/types/site_info.d.cts +154 -0
  213. package/dist/types/site_info.d.mts +154 -0
  214. package/dist/types/vehicle.d.cts +33 -0
  215. package/dist/types/vehicle.d.mts +33 -0
  216. package/dist/types/vehicle_data.d.cts +278 -0
  217. package/dist/types/vehicle_data.d.mts +278 -0
  218. package/dist/types.cjs +0 -0
  219. package/dist/types.d.cts +9 -0
  220. package/dist/types.d.mts +9 -0
  221. package/dist/types.mjs +1 -0
  222. package/dist/user.cjs +28 -0
  223. package/dist/user.d.cts +17 -0
  224. package/dist/user.d.mts +16 -0
  225. package/dist/user.mjs +28 -0
  226. package/dist/util.cjs +41 -0
  227. package/dist/util.d.cts +18 -0
  228. package/dist/util.d.mts +18 -0
  229. package/dist/util.mjs +40 -0
  230. package/dist/vehicle.cjs +847 -0
  231. package/dist/vehicle.d.cts +566 -0
  232. package/dist/vehicle.d.mts +565 -0
  233. package/dist/vehicle.mjs +847 -0
  234. package/dist/vehiclesigned.cjs +35 -0
  235. package/dist/vehiclesigned.d.cts +23 -0
  236. package/dist/vehiclesigned.d.mts +22 -0
  237. package/dist/vehiclesigned.mjs +35 -0
  238. package/dist/vehiclespecific.cjs +715 -0
  239. package/dist/vehiclespecific.d.cts +497 -0
  240. package/dist/vehiclespecific.d.mts +496 -0
  241. package/dist/vehiclespecific.mjs +715 -0
  242. package/package.json +178 -38
  243. package/dist/charging.d.ts +0 -30
  244. package/dist/charging.js +0 -51
  245. package/dist/charging.js.map +0 -1
  246. package/dist/commands.d.ts +0 -352
  247. package/dist/commands.js +0 -875
  248. package/dist/commands.js.map +0 -1
  249. package/dist/energy.d.ts +0 -94
  250. package/dist/energy.js +0 -125
  251. package/dist/energy.js.map +0 -1
  252. package/dist/energyspecific.d.ts +0 -77
  253. package/dist/energyspecific.js +0 -97
  254. package/dist/energyspecific.js.map +0 -1
  255. package/dist/helpers.d.ts +0 -2
  256. package/dist/helpers.js +0 -10
  257. package/dist/helpers.js.map +0 -1
  258. package/dist/index.d.ts +0 -15
  259. package/dist/index.js +0 -15
  260. package/dist/index.js.map +0 -1
  261. package/dist/partner.d.ts +0 -23
  262. package/dist/partner.js +0 -31
  263. package/dist/partner.js.map +0 -1
  264. package/dist/signing/crypto.d.ts +0 -10
  265. package/dist/signing/crypto.js +0 -26
  266. package/dist/signing/crypto.js.map +0 -1
  267. package/dist/signing/errors.d.ts +0 -29
  268. package/dist/signing/errors.js +0 -40
  269. package/dist/signing/errors.js.map +0 -1
  270. package/dist/signing/session.d.ts +0 -69
  271. package/dist/signing/session.js +0 -102
  272. package/dist/signing/session.js.map +0 -1
  273. package/dist/tariff.d.ts +0 -29
  274. package/dist/tariff.js +0 -302
  275. package/dist/tariff.js.map +0 -1
  276. package/dist/teslafleetapi.d.ts +0 -58
  277. package/dist/teslafleetapi.js +0 -120
  278. package/dist/teslafleetapi.js.map +0 -1
  279. package/dist/teslemetry.d.ts +0 -29
  280. package/dist/teslemetry.js +0 -39
  281. package/dist/teslemetry.js.map +0 -1
  282. package/dist/tessie.d.ts +0 -23
  283. package/dist/tessie.js +0 -28
  284. package/dist/tessie.js.map +0 -1
  285. package/dist/types/commands.d.ts +0 -44
  286. package/dist/types/commands.js +0 -11
  287. package/dist/types/commands.js.map +0 -1
  288. package/dist/types/live_status.d.ts +0 -26
  289. package/dist/types/live_status.js +0 -2
  290. package/dist/types/live_status.js.map +0 -1
  291. package/dist/types/products.d.ts +0 -54
  292. package/dist/types/products.js +0 -2
  293. package/dist/types/products.js.map +0 -1
  294. package/dist/types/responses.d.ts +0 -5
  295. package/dist/types/responses.js +0 -2
  296. package/dist/types/responses.js.map +0 -1
  297. package/dist/types/site_info.d.ts +0 -150
  298. package/dist/types/site_info.js +0 -2
  299. package/dist/types/site_info.js.map +0 -1
  300. package/dist/types/vehicle.d.ts +0 -23
  301. package/dist/types/vehicle.js +0 -10
  302. package/dist/types/vehicle.js.map +0 -1
  303. package/dist/types/vehicle_data.d.ts +0 -274
  304. package/dist/types/vehicle_data.js +0 -2
  305. package/dist/types/vehicle_data.js.map +0 -1
  306. package/dist/user.d.ts +0 -16
  307. package/dist/user.js +0 -26
  308. package/dist/user.js.map +0 -1
  309. package/dist/vehicle.d.ts +0 -548
  310. package/dist/vehicle.js +0 -774
  311. package/dist/vehicle.js.map +0 -1
  312. package/dist/vehiclesigned.d.ts +0 -13
  313. package/dist/vehiclesigned.js +0 -19
  314. package/dist/vehiclesigned.js.map +0 -1
  315. package/dist/vehiclespecific.d.ts +0 -432
  316. package/dist/vehiclespecific.js +0 -601
  317. package/dist/vehiclespecific.js.map +0 -1
  318. package/src/charging.ts +0 -66
  319. package/src/commands.ts +0 -1134
  320. package/src/energy.ts +0 -217
  321. package/src/energyspecific.ts +0 -116
  322. package/src/helpers.ts +0 -11
  323. package/src/index.ts +0 -21
  324. package/src/partner.ts +0 -37
  325. package/src/signing/crypto.ts +0 -29
  326. package/src/signing/errors.ts +0 -50
  327. package/src/signing/session.ts +0 -132
  328. package/src/tariff.ts +0 -375
  329. package/src/teslafleetapi.ts +0 -182
  330. package/src/teslemetry.ts +0 -54
  331. package/src/tessie.ts +0 -42
  332. package/src/types/commands.ts +0 -62
  333. package/src/types/live_status.ts +0 -27
  334. package/src/types/products.ts +0 -61
  335. package/src/types/responses.ts +0 -1
  336. package/src/types/site_info.ts +0 -159
  337. package/src/types/vehicle.ts +0 -33
  338. package/src/types/vehicle_data.ts +0 -286
  339. package/src/user.ts +0 -35
  340. package/src/vehicle.ts +0 -886
  341. package/src/vehiclesigned.ts +0 -20
  342. package/src/vehiclespecific.ts +0 -818
@@ -0,0 +1,258 @@
1
+ import { AuthorizedClientKeyType, AuthorizedClientType, EnergyDeviceIdentifierType, EnergyIslandMode, TeslaEnergyPeriod } from "./const.cjs";
2
+ import Energy from "./energy.cjs";
3
+ import { LiveStatusResponse } from "./types/live_status.cjs";
4
+ import { ResponseEnvelope } from "./types/responses.cjs";
5
+ import { SiteInfoResponse } from "./types/site_info.cjs";
6
+ import { KeyObject } from "crypto";
7
+ /**
8
+ * The only device commands Tesla's cloud accepts unsigned, as
9
+ * `category.command`: the reads a gateway answers before any key is paired.
10
+ * Unsigned, every other command was refused with HTTP 400 live on a Powerwall 3
11
+ * (2026-10-29), and signed, each one reached the gateway. A site with a signing
12
+ * key signs everything else.
13
+ */
14
+ export declare const UNSIGNED_DEVICE_COMMANDS: ReadonlySet<string>;
15
+ /** Upper bound on a `dispatch_battery_power` setpoint duration (one day). */
16
+ export declare const MAX_DISPATCH_DURATION_SECONDS = 86400;
17
+ /**
18
+ * Check `dispatch_battery_power` arguments before any request.
19
+ * @throws TypeError unless both are numbers.
20
+ * @throws RangeError on a non-finite power or a duration that is not a whole number from 1 to `MAX_DISPATCH_DURATION_SECONDS`.
21
+ */
22
+ export declare function validate_dispatch_battery_power(power_watts: number, duration_seconds: number): void;
23
+ export default class EnergySpecific {
24
+ #private;
25
+ parent: Energy;
26
+ energy_site_id: number;
27
+ /** Gateway DIN (the energy site's `gateway_id` in `products`), the target of device commands. */
28
+ din?: string;
29
+ /**
30
+ * Pass `private_key` and `din` to send client-signed device commands through
31
+ * the cloud `device_command` endpoint. With a signer, every device command is
32
+ * signed except the four pre-pairing reads in `UNSIGNED_DEVICE_COMMANDS`.
33
+ * Without one, device commands are sent unsigned, and Tesla's cloud refuses
34
+ * most of them with 400.
35
+ * @param parent
36
+ * @param energy_site_id
37
+ * @param private_key RSA key `VERIFIED` on this gateway. Without one the site is unsigned: unlike vehicles, there is no fallback to the parent's key.
38
+ * @param din Gateway DIN (the energy site's `gateway_id` in `products`). Required with `private_key`.
39
+ * @throws TypeError for a key that is not RSA.
40
+ */
41
+ constructor(parent: Energy, energy_site_id: number, private_key?: KeyObject, din?: string);
42
+ /** Whether device commands are signed with a client key. */
43
+ get signing(): boolean;
44
+ /**
45
+ * Send a gRPC command to the energy device gateway.
46
+ *
47
+ * With a signing key, this signs every command except the ones in
48
+ * `UNSIGNED_DEVICE_COMMANDS`. Otherwise it sends the unsigned `grpc_command`.
49
+ * Energy device gRPC commands are based on research from
50
+ * https://github.com/jasonacox/pypowerwall (MIT licensed).
51
+ */
52
+ _command(category: string, command: string, params?: Record<string, any> | null, identifier_type?: EnergyDeviceIdentifierType): Promise<Record<string, any>>;
53
+ /** Send an unsigned `grpc_command` to the energy device gateway. */
54
+ _unsigned_command(category: string, command: string, params?: Record<string, any> | null, identifier_type?: EnergyDeviceIdentifierType): Promise<Record<string, any>>;
55
+ /** Build the flat `device_command` body around a signed message. */
56
+ protected _device_command_body(routable_message: Uint8Array, target_id: string, identifier_type: EnergyDeviceIdentifierType): Record<string, any>;
57
+ /**
58
+ * Send a signed `RoutableMessage` to the energy device. Tesla requires the
59
+ * body wrapped in `data` and `identifier_type` as an integer. The reply is
60
+ * returned unchanged; `_signed_command` checks it for a gateway error.
61
+ */
62
+ _device_command(routable_message: Uint8Array, target_id: string, identifier_type?: EnergyDeviceIdentifierType): Promise<Record<string, any>>;
63
+ /**
64
+ * Sign a gRPC command with the site's key and send it to the gateway.
65
+ *
66
+ * A resend of the same signed bytes inside the TTL executes again, so this
67
+ * never retries.
68
+ * @throws SignedCommandRequired when the site has no signing key.
69
+ * @throws InvalidCommand when the gateway firmware has no handler for the command.
70
+ * @throws DeviceUnexpectedResponse when the gateway refuses the command.
71
+ */
72
+ _signed_command(category: string, command: string, params?: Record<string, any> | null): Promise<Record<string, any>>;
73
+ /** Get energy device system information including firmware version, device type, part number, serial number, and DIN. */
74
+ get_system_info(): Promise<Record<string, any>>;
75
+ /** Get raw energy device networking status including WiFi, Ethernet, and cellular connectivity. */
76
+ raw_networking_status(): Promise<Record<string, any>>;
77
+ /** Get energy device networking status including WiFi, Ethernet, and cellular connectivity. */
78
+ get_networking_status(): Promise<Record<string, any>>;
79
+ /** Scan for available WiFi networks from the energy gateway. */
80
+ wifi_scan(): Promise<Record<string, any>>;
81
+ /** Get the energy device certificate including subject, issuer, and validity. */
82
+ get_device_cert(): Promise<Record<string, any>>;
83
+ /** Get cellular modem information from the energy gateway including the embedded SIM identifier (EID) and supported cellular profiles. */
84
+ get_cellular_info(): Promise<Record<string, any>>;
85
+ /** Check if a firmware update is available for the energy gateway. */
86
+ check_for_update(): Promise<Record<string, any>>;
87
+ /** Check the urgency level of any available firmware update for the energy gateway. */
88
+ check_for_update_urgency(): Promise<Record<string, any>>;
89
+ /** Test internet connectivity on the energy gateway across all network interfaces (WiFi, Ethernet, GSM). */
90
+ check_internet(): Promise<Record<string, any>>;
91
+ /**
92
+ * Update local site configuration on the energy gateway. This writes gateway
93
+ * configuration and is an undocumented energy device gRPC command.
94
+ * @param params Raw protobuf request fields.
95
+ */
96
+ set_local_site_config(params?: Record<string, any> | null): Promise<Record<string, any>>;
97
+ /** List authorized clients (paired keys) on the energy gateway including their roles and state. */
98
+ list_authorized_clients(): Promise<Record<string, any>>;
99
+ /**
100
+ * Register an authorized client (public key) with the energy gateway, to
101
+ * pair a local key with a Powerwall for the LAN TEDapi v1r protocol. The
102
+ * encoding follows `key_type`: RSA is raw PKCS#1 `RSAPublicKey` DER
103
+ * (`rsa_public_der_pkcs1`), and ECC is DER SubjectPublicKeyInfo
104
+ * (`ec_public_der_spki`), not a raw point, which the gateway rejects. A
105
+ * VERIFIED ECC key still cannot sign v1r: `SignatureData` has no ECDSA member.
106
+ *
107
+ * The key stays PENDING_VERIFICATION until a physical breaker toggle confirms
108
+ * it inside a window of about 9 minutes. A missed window is the terminal
109
+ * PENDING_VERIFICATION_TIMEOUT; registering the same key again resets it
110
+ * without a second record.
111
+ * @param public_key Raw DER bytes, which are base64-encoded, or an already base64-encoded string.
112
+ * @param description Human-readable description of the client.
113
+ * @param key_type The type of key being registered.
114
+ * @param authorized_client_type The authorized client type.
115
+ */
116
+ add_authorized_client(public_key: Uint8Array | string, description?: string, key_type?: AuthorizedClientKeyType, authorized_client_type?: AuthorizedClientType): Promise<Record<string, any>>;
117
+ /**
118
+ * Remove an authorized client (public key) from the energy gateway. Removal
119
+ * needs no physical presence proof, so any paired key can revoke every other
120
+ * key, including the owner's. The reply is empty, and some firmware may
121
+ * return no body at all. This cloud route is inferred from
122
+ * `add_authorized_client`; removal was only live-verified over local v1r.
123
+ * @param public_key Raw DER bytes, which are base64-encoded, or an already base64-encoded string as `list_authorized_clients` reports it.
124
+ */
125
+ remove_authorized_client(public_key: Uint8Array | string): Promise<Record<string, any>>;
126
+ /** Get the energy gateway's public key for signed commands. */
127
+ get_signed_commands_public_key(): Promise<Record<string, any>>;
128
+ /** Get backup events from the energy gateway. May time out on some firmware versions. */
129
+ get_backup_events(): Promise<Record<string, any>>;
130
+ /**
131
+ * Schedule a manual backup event on the energy gateway.
132
+ * @param start_time ISO 8601 timestamp for when the backup event should start.
133
+ * @param duration_seconds Duration of the backup event in seconds.
134
+ * @param priority Priority level for the backup event. A string carries values beyond 2^53.
135
+ */
136
+ schedule_backup_event(start_time?: string | null, duration_seconds?: number | null, priority?: number | string | null): Promise<Record<string, any>>;
137
+ /** Cancel a scheduled manual backup event on the energy gateway. */
138
+ cancel_backup_event(): Promise<Record<string, any>>;
139
+ /** Get Tesla Energy Gateway configuration from the TEG service. */
140
+ get_teg_config(): Promise<Record<string, any>>;
141
+ /**
142
+ * Request a timed battery power setpoint on the energy gateway.
143
+ *
144
+ * The gateway holds the setpoint for `duration_seconds`, then returns to its
145
+ * configured operating mode by itself. A new call replaces an active
146
+ * setpoint. Keep durations short and re-send to renew, so a caller that stops
147
+ * cannot leave the battery on a stale setpoint.
148
+ *
149
+ * The reply is an empty acknowledgement, not readback. A setpoint was seen to
150
+ * discharge below the backup reserve and to export with export set to
151
+ * `pv_only` or `never`. The gateway refuses a request above its power limit
152
+ * rather than clamping it: the signed path raises `DeviceUnexpectedResponse`
153
+ * with code 11.
154
+ *
155
+ * Tesla's cloud refuses this command unsigned (HTTP 400), so it acts only on
156
+ * a site with a signing key.
157
+ * @param power_watts Battery power in watts: positive discharges, negative charges.
158
+ * @param duration_seconds Whole seconds from 1 to 86400.
159
+ * @throws RangeError or TypeError before any request on invalid arguments.
160
+ */
161
+ dispatch_battery_power(power_watts: number, duration_seconds: number): Promise<Record<string, any>>;
162
+ /**
163
+ * Release a `dispatch_battery_power` setpoint, returning the gateway to its
164
+ * configured operating mode. The gateway also acknowledges this when no
165
+ * setpoint is active. It acts only on a site with a signing key.
166
+ */
167
+ resume_battery_operation(): Promise<Record<string, any>>;
168
+ /**
169
+ * Set the island mode on the energy gateway.
170
+ *
171
+ * Signed only: gateways acknowledge the unsigned `grpc_command` without
172
+ * operating the grid contactor, so this never sends one. A success-shaped
173
+ * reply still does not prove the contactor moved: confirm `island_status`
174
+ * with a status read before relying on it.
175
+ * @param mode `EnergyIslandMode.OFF_GRID` (6) or `ON_GRID` (1).
176
+ * @param force Sent when given. Some gateways need `true` to open the contactor.
177
+ * @throws TypeError on any other mode, before signing.
178
+ * @throws SignedCommandRequired without a signing key, before any request.
179
+ * @throws DeviceUnexpectedResponse when the gateway refuses, as `REJECTED_LOW_ENERGY` and the like.
180
+ */
181
+ set_island_mode(mode: EnergyIslandMode | number, force?: boolean | null): Promise<Record<string, any>>;
182
+ /** Request off-grid mode, with `force`. Signed only: see `set_island_mode`. */
183
+ go_off_grid(): Promise<Record<string, any>>;
184
+ /** Request on-grid mode. Signed only: see `set_island_mode`. */
185
+ reconnect_grid(): Promise<Record<string, any>>;
186
+ /**
187
+ * Adjust the site's backup reserve.
188
+ * @param backup_reserve_percent The desired backup reserve percent.
189
+ * @returns
190
+ */
191
+ backup(backup_reserve_percent: number): Promise<Record<string, any>>;
192
+ /**
193
+ * Returns the backup (off-grid) event history of the site in duration of seconds.
194
+ * @param period Period of the window to retrieve backup events. This can be day, week, month, year, lifetime and should align with the window requested.
195
+ * @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
196
+ * @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
197
+ * @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
198
+ * @returns
199
+ */
200
+ backup_history(period: TeslaEnergyPeriod | string | null, start_date?: string | null, end_date?: string | null, time_zone?: string | null): Promise<Record<string, any>>;
201
+ /**
202
+ * Returns the charging history of a wall connector.
203
+ * @param start_date Start date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
204
+ * @param end_date End date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
205
+ * @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
206
+ * @returns
207
+ */
208
+ charge_history(start_date: string, end_date: string, time_zone?: string | null): Promise<Record<string, any>>;
209
+ /**
210
+ * Returns the energy measurements of the site, aggregated to the requested period.
211
+ * @param period Period of the window to retrieve energy measurements. This can be day, week, month, year, lifetime and should align with the window requested.
212
+ * @param start_date Start date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
213
+ * @param end_date End date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
214
+ * @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
215
+ * @returns
216
+ */
217
+ energy_history(period: TeslaEnergyPeriod | string | null, start_date?: string | null, end_date?: string | null, time_zone?: string | null): Promise<Record<string, any>>;
218
+ /**
219
+ * Allow/disallow charging from the grid and exporting energy to the grid.
220
+ * @param disallow_charge_from_grid_with_solar_installed The desired behavior towards importing from the grid. Charging from the grid is disabled when set to true and enabled when set to false.
221
+ * @param customer_preferred_export_rule The desired behavior for grid exporting. The available options are battery_ok, pv_only, and never.
222
+ * @returns
223
+ */
224
+ grid_import_export(disallow_charge_from_grid_with_solar_installed?: boolean | null, customer_preferred_export_rule?: string | null): Promise<Record<string, any>>;
225
+ /**
226
+ * Returns the live status of the site.
227
+ * @returns
228
+ */
229
+ live_status(): Promise<ResponseEnvelope<LiveStatusResponse>>;
230
+ /**
231
+ * Adjust the site's off-grid vehicle charging backup reserve.
232
+ * @param off_grid_vehicle_charging_reserve_percent The desired off grid vehicle charging reserve percent.
233
+ * @returns
234
+ */
235
+ off_grid_vehicle_charging_reserve(off_grid_vehicle_charging_reserve_percent: number): Promise<Record<string, any>>;
236
+ /**
237
+ * Set the site's mode.
238
+ * @param default_real_mode
239
+ * @returns
240
+ */
241
+ operation(default_real_mode: string): Promise<Record<string, any>>;
242
+ /**
243
+ * Returns information about the site. Things like assets (has solar, etc), settings (backup reserve, etc), and features (storm_mode_capable, etc).
244
+ */
245
+ site_info(): Promise<ResponseEnvelope<SiteInfoResponse>>;
246
+ /**
247
+ * Update storm watch participation.
248
+ * @param enabled The storm mode participation value to set.
249
+ * @returns
250
+ */
251
+ storm_mode(enabled: boolean): Promise<Record<string, any>>;
252
+ /**
253
+ * Update the time of use settings for the energy site.
254
+ * @param settings The `tariff_content_v2` document.
255
+ * @returns
256
+ */
257
+ time_of_use_settings(settings: Record<string, any>): Promise<Record<string, any>>;
258
+ }
@@ -0,0 +1,258 @@
1
+ import { AuthorizedClientKeyType, AuthorizedClientType, EnergyDeviceIdentifierType, EnergyIslandMode, TeslaEnergyPeriod } from "./const.mjs";
2
+ import Energy from "./energy.mjs";
3
+ import { LiveStatusResponse } from "./types/live_status.mjs";
4
+ import { ResponseEnvelope } from "./types/responses.mjs";
5
+ import { SiteInfoResponse } from "./types/site_info.mjs";
6
+ import { KeyObject } from "crypto";
7
+ /**
8
+ * The only device commands Tesla's cloud accepts unsigned, as
9
+ * `category.command`: the reads a gateway answers before any key is paired.
10
+ * Unsigned, every other command was refused with HTTP 400 live on a Powerwall 3
11
+ * (2026-10-29), and signed, each one reached the gateway. A site with a signing
12
+ * key signs everything else.
13
+ */
14
+ export declare const UNSIGNED_DEVICE_COMMANDS: ReadonlySet<string>;
15
+ /** Upper bound on a `dispatch_battery_power` setpoint duration (one day). */
16
+ export declare const MAX_DISPATCH_DURATION_SECONDS = 86400;
17
+ /**
18
+ * Check `dispatch_battery_power` arguments before any request.
19
+ * @throws TypeError unless both are numbers.
20
+ * @throws RangeError on a non-finite power or a duration that is not a whole number from 1 to `MAX_DISPATCH_DURATION_SECONDS`.
21
+ */
22
+ export declare function validate_dispatch_battery_power(power_watts: number, duration_seconds: number): void;
23
+ export default class EnergySpecific {
24
+ #private;
25
+ parent: Energy;
26
+ energy_site_id: number;
27
+ /** Gateway DIN (the energy site's `gateway_id` in `products`), the target of device commands. */
28
+ din?: string;
29
+ /**
30
+ * Pass `private_key` and `din` to send client-signed device commands through
31
+ * the cloud `device_command` endpoint. With a signer, every device command is
32
+ * signed except the four pre-pairing reads in `UNSIGNED_DEVICE_COMMANDS`.
33
+ * Without one, device commands are sent unsigned, and Tesla's cloud refuses
34
+ * most of them with 400.
35
+ * @param parent
36
+ * @param energy_site_id
37
+ * @param private_key RSA key `VERIFIED` on this gateway. Without one the site is unsigned: unlike vehicles, there is no fallback to the parent's key.
38
+ * @param din Gateway DIN (the energy site's `gateway_id` in `products`). Required with `private_key`.
39
+ * @throws TypeError for a key that is not RSA.
40
+ */
41
+ constructor(parent: Energy, energy_site_id: number, private_key?: KeyObject, din?: string);
42
+ /** Whether device commands are signed with a client key. */
43
+ get signing(): boolean;
44
+ /**
45
+ * Send a gRPC command to the energy device gateway.
46
+ *
47
+ * With a signing key, this signs every command except the ones in
48
+ * `UNSIGNED_DEVICE_COMMANDS`. Otherwise it sends the unsigned `grpc_command`.
49
+ * Energy device gRPC commands are based on research from
50
+ * https://github.com/jasonacox/pypowerwall (MIT licensed).
51
+ */
52
+ _command(category: string, command: string, params?: Record<string, any> | null, identifier_type?: EnergyDeviceIdentifierType): Promise<Record<string, any>>;
53
+ /** Send an unsigned `grpc_command` to the energy device gateway. */
54
+ _unsigned_command(category: string, command: string, params?: Record<string, any> | null, identifier_type?: EnergyDeviceIdentifierType): Promise<Record<string, any>>;
55
+ /** Build the flat `device_command` body around a signed message. */
56
+ protected _device_command_body(routable_message: Uint8Array, target_id: string, identifier_type: EnergyDeviceIdentifierType): Record<string, any>;
57
+ /**
58
+ * Send a signed `RoutableMessage` to the energy device. Tesla requires the
59
+ * body wrapped in `data` and `identifier_type` as an integer. The reply is
60
+ * returned unchanged; `_signed_command` checks it for a gateway error.
61
+ */
62
+ _device_command(routable_message: Uint8Array, target_id: string, identifier_type?: EnergyDeviceIdentifierType): Promise<Record<string, any>>;
63
+ /**
64
+ * Sign a gRPC command with the site's key and send it to the gateway.
65
+ *
66
+ * A resend of the same signed bytes inside the TTL executes again, so this
67
+ * never retries.
68
+ * @throws SignedCommandRequired when the site has no signing key.
69
+ * @throws InvalidCommand when the gateway firmware has no handler for the command.
70
+ * @throws DeviceUnexpectedResponse when the gateway refuses the command.
71
+ */
72
+ _signed_command(category: string, command: string, params?: Record<string, any> | null): Promise<Record<string, any>>;
73
+ /** Get energy device system information including firmware version, device type, part number, serial number, and DIN. */
74
+ get_system_info(): Promise<Record<string, any>>;
75
+ /** Get raw energy device networking status including WiFi, Ethernet, and cellular connectivity. */
76
+ raw_networking_status(): Promise<Record<string, any>>;
77
+ /** Get energy device networking status including WiFi, Ethernet, and cellular connectivity. */
78
+ get_networking_status(): Promise<Record<string, any>>;
79
+ /** Scan for available WiFi networks from the energy gateway. */
80
+ wifi_scan(): Promise<Record<string, any>>;
81
+ /** Get the energy device certificate including subject, issuer, and validity. */
82
+ get_device_cert(): Promise<Record<string, any>>;
83
+ /** Get cellular modem information from the energy gateway including the embedded SIM identifier (EID) and supported cellular profiles. */
84
+ get_cellular_info(): Promise<Record<string, any>>;
85
+ /** Check if a firmware update is available for the energy gateway. */
86
+ check_for_update(): Promise<Record<string, any>>;
87
+ /** Check the urgency level of any available firmware update for the energy gateway. */
88
+ check_for_update_urgency(): Promise<Record<string, any>>;
89
+ /** Test internet connectivity on the energy gateway across all network interfaces (WiFi, Ethernet, GSM). */
90
+ check_internet(): Promise<Record<string, any>>;
91
+ /**
92
+ * Update local site configuration on the energy gateway. This writes gateway
93
+ * configuration and is an undocumented energy device gRPC command.
94
+ * @param params Raw protobuf request fields.
95
+ */
96
+ set_local_site_config(params?: Record<string, any> | null): Promise<Record<string, any>>;
97
+ /** List authorized clients (paired keys) on the energy gateway including their roles and state. */
98
+ list_authorized_clients(): Promise<Record<string, any>>;
99
+ /**
100
+ * Register an authorized client (public key) with the energy gateway, to
101
+ * pair a local key with a Powerwall for the LAN TEDapi v1r protocol. The
102
+ * encoding follows `key_type`: RSA is raw PKCS#1 `RSAPublicKey` DER
103
+ * (`rsa_public_der_pkcs1`), and ECC is DER SubjectPublicKeyInfo
104
+ * (`ec_public_der_spki`), not a raw point, which the gateway rejects. A
105
+ * VERIFIED ECC key still cannot sign v1r: `SignatureData` has no ECDSA member.
106
+ *
107
+ * The key stays PENDING_VERIFICATION until a physical breaker toggle confirms
108
+ * it inside a window of about 9 minutes. A missed window is the terminal
109
+ * PENDING_VERIFICATION_TIMEOUT; registering the same key again resets it
110
+ * without a second record.
111
+ * @param public_key Raw DER bytes, which are base64-encoded, or an already base64-encoded string.
112
+ * @param description Human-readable description of the client.
113
+ * @param key_type The type of key being registered.
114
+ * @param authorized_client_type The authorized client type.
115
+ */
116
+ add_authorized_client(public_key: Uint8Array | string, description?: string, key_type?: AuthorizedClientKeyType, authorized_client_type?: AuthorizedClientType): Promise<Record<string, any>>;
117
+ /**
118
+ * Remove an authorized client (public key) from the energy gateway. Removal
119
+ * needs no physical presence proof, so any paired key can revoke every other
120
+ * key, including the owner's. The reply is empty, and some firmware may
121
+ * return no body at all. This cloud route is inferred from
122
+ * `add_authorized_client`; removal was only live-verified over local v1r.
123
+ * @param public_key Raw DER bytes, which are base64-encoded, or an already base64-encoded string as `list_authorized_clients` reports it.
124
+ */
125
+ remove_authorized_client(public_key: Uint8Array | string): Promise<Record<string, any>>;
126
+ /** Get the energy gateway's public key for signed commands. */
127
+ get_signed_commands_public_key(): Promise<Record<string, any>>;
128
+ /** Get backup events from the energy gateway. May time out on some firmware versions. */
129
+ get_backup_events(): Promise<Record<string, any>>;
130
+ /**
131
+ * Schedule a manual backup event on the energy gateway.
132
+ * @param start_time ISO 8601 timestamp for when the backup event should start.
133
+ * @param duration_seconds Duration of the backup event in seconds.
134
+ * @param priority Priority level for the backup event. A string carries values beyond 2^53.
135
+ */
136
+ schedule_backup_event(start_time?: string | null, duration_seconds?: number | null, priority?: number | string | null): Promise<Record<string, any>>;
137
+ /** Cancel a scheduled manual backup event on the energy gateway. */
138
+ cancel_backup_event(): Promise<Record<string, any>>;
139
+ /** Get Tesla Energy Gateway configuration from the TEG service. */
140
+ get_teg_config(): Promise<Record<string, any>>;
141
+ /**
142
+ * Request a timed battery power setpoint on the energy gateway.
143
+ *
144
+ * The gateway holds the setpoint for `duration_seconds`, then returns to its
145
+ * configured operating mode by itself. A new call replaces an active
146
+ * setpoint. Keep durations short and re-send to renew, so a caller that stops
147
+ * cannot leave the battery on a stale setpoint.
148
+ *
149
+ * The reply is an empty acknowledgement, not readback. A setpoint was seen to
150
+ * discharge below the backup reserve and to export with export set to
151
+ * `pv_only` or `never`. The gateway refuses a request above its power limit
152
+ * rather than clamping it: the signed path raises `DeviceUnexpectedResponse`
153
+ * with code 11.
154
+ *
155
+ * Tesla's cloud refuses this command unsigned (HTTP 400), so it acts only on
156
+ * a site with a signing key.
157
+ * @param power_watts Battery power in watts: positive discharges, negative charges.
158
+ * @param duration_seconds Whole seconds from 1 to 86400.
159
+ * @throws RangeError or TypeError before any request on invalid arguments.
160
+ */
161
+ dispatch_battery_power(power_watts: number, duration_seconds: number): Promise<Record<string, any>>;
162
+ /**
163
+ * Release a `dispatch_battery_power` setpoint, returning the gateway to its
164
+ * configured operating mode. The gateway also acknowledges this when no
165
+ * setpoint is active. It acts only on a site with a signing key.
166
+ */
167
+ resume_battery_operation(): Promise<Record<string, any>>;
168
+ /**
169
+ * Set the island mode on the energy gateway.
170
+ *
171
+ * Signed only: gateways acknowledge the unsigned `grpc_command` without
172
+ * operating the grid contactor, so this never sends one. A success-shaped
173
+ * reply still does not prove the contactor moved: confirm `island_status`
174
+ * with a status read before relying on it.
175
+ * @param mode `EnergyIslandMode.OFF_GRID` (6) or `ON_GRID` (1).
176
+ * @param force Sent when given. Some gateways need `true` to open the contactor.
177
+ * @throws TypeError on any other mode, before signing.
178
+ * @throws SignedCommandRequired without a signing key, before any request.
179
+ * @throws DeviceUnexpectedResponse when the gateway refuses, as `REJECTED_LOW_ENERGY` and the like.
180
+ */
181
+ set_island_mode(mode: EnergyIslandMode | number, force?: boolean | null): Promise<Record<string, any>>;
182
+ /** Request off-grid mode, with `force`. Signed only: see `set_island_mode`. */
183
+ go_off_grid(): Promise<Record<string, any>>;
184
+ /** Request on-grid mode. Signed only: see `set_island_mode`. */
185
+ reconnect_grid(): Promise<Record<string, any>>;
186
+ /**
187
+ * Adjust the site's backup reserve.
188
+ * @param backup_reserve_percent The desired backup reserve percent.
189
+ * @returns
190
+ */
191
+ backup(backup_reserve_percent: number): Promise<Record<string, any>>;
192
+ /**
193
+ * Returns the backup (off-grid) event history of the site in duration of seconds.
194
+ * @param period Period of the window to retrieve backup events. This can be day, week, month, year, lifetime and should align with the window requested.
195
+ * @param start_date Start date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
196
+ * @param end_date End date of the window to retrieve backup events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
197
+ * @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
198
+ * @returns
199
+ */
200
+ backup_history(period: TeslaEnergyPeriod | string | null, start_date?: string | null, end_date?: string | null, time_zone?: string | null): Promise<Record<string, any>>;
201
+ /**
202
+ * Returns the charging history of a wall connector.
203
+ * @param start_date Start date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
204
+ * @param end_date End date of the window to retrieve charging events in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
205
+ * @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
206
+ * @returns
207
+ */
208
+ charge_history(start_date: string, end_date: string, time_zone?: string | null): Promise<Record<string, any>>;
209
+ /**
210
+ * Returns the energy measurements of the site, aggregated to the requested period.
211
+ * @param period Period of the window to retrieve energy measurements. This can be day, week, month, year, lifetime and should align with the window requested.
212
+ * @param start_date Start date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
213
+ * @param end_date End date of the window to retrieve energy measurements in RFC3339 format. i.e. 2023-01-01T00:00:00-08:00
214
+ * @param time_zone Timezone of the requested window in IANA name format. i.e. 'America/Los_Angeles'
215
+ * @returns
216
+ */
217
+ energy_history(period: TeslaEnergyPeriod | string | null, start_date?: string | null, end_date?: string | null, time_zone?: string | null): Promise<Record<string, any>>;
218
+ /**
219
+ * Allow/disallow charging from the grid and exporting energy to the grid.
220
+ * @param disallow_charge_from_grid_with_solar_installed The desired behavior towards importing from the grid. Charging from the grid is disabled when set to true and enabled when set to false.
221
+ * @param customer_preferred_export_rule The desired behavior for grid exporting. The available options are battery_ok, pv_only, and never.
222
+ * @returns
223
+ */
224
+ grid_import_export(disallow_charge_from_grid_with_solar_installed?: boolean | null, customer_preferred_export_rule?: string | null): Promise<Record<string, any>>;
225
+ /**
226
+ * Returns the live status of the site.
227
+ * @returns
228
+ */
229
+ live_status(): Promise<ResponseEnvelope<LiveStatusResponse>>;
230
+ /**
231
+ * Adjust the site's off-grid vehicle charging backup reserve.
232
+ * @param off_grid_vehicle_charging_reserve_percent The desired off grid vehicle charging reserve percent.
233
+ * @returns
234
+ */
235
+ off_grid_vehicle_charging_reserve(off_grid_vehicle_charging_reserve_percent: number): Promise<Record<string, any>>;
236
+ /**
237
+ * Set the site's mode.
238
+ * @param default_real_mode
239
+ * @returns
240
+ */
241
+ operation(default_real_mode: string): Promise<Record<string, any>>;
242
+ /**
243
+ * Returns information about the site. Things like assets (has solar, etc), settings (backup reserve, etc), and features (storm_mode_capable, etc).
244
+ */
245
+ site_info(): Promise<ResponseEnvelope<SiteInfoResponse>>;
246
+ /**
247
+ * Update storm watch participation.
248
+ * @param enabled The storm mode participation value to set.
249
+ * @returns
250
+ */
251
+ storm_mode(enabled: boolean): Promise<Record<string, any>>;
252
+ /**
253
+ * Update the time of use settings for the energy site.
254
+ * @param settings The `tariff_content_v2` document.
255
+ * @returns
256
+ */
257
+ time_of_use_settings(settings: Record<string, any>): Promise<Record<string, any>>;
258
+ }