@enyo-energy/energy-app-sdk 1.2.0 → 1.4.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.
- package/README.md +245 -5
- package/dist/cjs/energy-app-package-definition.cjs +1 -0
- package/dist/cjs/energy-app-package-definition.d.cts +1 -0
- package/dist/cjs/energy-app-permission.type.cjs +2 -0
- package/dist/cjs/energy-app-permission.type.d.cts +3 -1
- package/dist/cjs/energy-app.cjs +22 -0
- package/dist/cjs/energy-app.d.cts +21 -0
- package/dist/cjs/enyo-energy-app-sdk.d.cts +3 -0
- package/dist/cjs/implementations/appliances/appliance-manager.cjs +6 -0
- package/dist/cjs/implementations/pricing/compose-electricity-prices.cjs +255 -0
- package/dist/cjs/implementations/pricing/compose-electricity-prices.d.cts +125 -0
- package/dist/cjs/implementations/pricing/price-component-validators.cjs +238 -0
- package/dist/cjs/implementations/pricing/price-component-validators.d.cts +57 -0
- package/dist/cjs/implementations/pricing/price-schedule-resolver.cjs +182 -0
- package/dist/cjs/implementations/pricing/price-schedule-resolver.d.cts +95 -0
- package/dist/cjs/index.cjs +7 -0
- package/dist/cjs/index.d.cts +7 -0
- package/dist/cjs/packages/energy-app-charge.d.cts +8 -81
- package/dist/cjs/packages/energy-app-electricity-tariff.d.cts +153 -41
- package/dist/cjs/packages/energy-app-grid-fee.cjs +2 -0
- package/dist/cjs/packages/energy-app-grid-fee.d.cts +199 -0
- package/dist/cjs/packages/energy-app-modbus.d.cts +12 -0
- package/dist/cjs/types/enyo-charge.d.cts +0 -71
- package/dist/cjs/types/enyo-data-bus-value.d.cts +7 -0
- package/dist/cjs/types/enyo-electricity-tariff.cjs +73 -13
- package/dist/cjs/types/enyo-electricity-tariff.d.cts +260 -50
- package/dist/cjs/types/enyo-energy-prices.d.cts +9 -3
- package/dist/cjs/types/enyo-grid-fee.cjs +26 -0
- package/dist/cjs/types/enyo-grid-fee.d.cts +247 -0
- package/dist/cjs/types/enyo-price-composition.cjs +15 -0
- package/dist/cjs/types/enyo-price-composition.d.cts +147 -0
- package/dist/cjs/types/enyo-price-schedule.cjs +45 -0
- package/dist/cjs/types/enyo-price-schedule.d.cts +137 -0
- package/dist/cjs/version.cjs +1 -1
- package/dist/cjs/version.d.cts +1 -1
- package/dist/energy-app-package-definition.d.ts +1 -0
- package/dist/energy-app-package-definition.js +1 -0
- package/dist/energy-app-permission.type.d.ts +3 -1
- package/dist/energy-app-permission.type.js +2 -0
- package/dist/energy-app.d.ts +21 -0
- package/dist/energy-app.js +22 -0
- package/dist/enyo-energy-app-sdk.d.ts +3 -0
- package/dist/implementations/appliances/appliance-manager.js +6 -0
- package/dist/implementations/pricing/compose-electricity-prices.d.ts +125 -0
- package/dist/implementations/pricing/compose-electricity-prices.js +248 -0
- package/dist/implementations/pricing/price-component-validators.d.ts +57 -0
- package/dist/implementations/pricing/price-component-validators.js +230 -0
- package/dist/implementations/pricing/price-schedule-resolver.d.ts +95 -0
- package/dist/implementations/pricing/price-schedule-resolver.js +175 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.js +7 -0
- package/dist/packages/energy-app-charge.d.ts +8 -81
- package/dist/packages/energy-app-electricity-tariff.d.ts +153 -41
- package/dist/packages/energy-app-grid-fee.d.ts +199 -0
- package/dist/packages/energy-app-grid-fee.js +1 -0
- package/dist/packages/energy-app-modbus.d.ts +12 -0
- package/dist/types/enyo-charge.d.ts +0 -71
- package/dist/types/enyo-data-bus-value.d.ts +7 -0
- package/dist/types/enyo-electricity-tariff.d.ts +260 -50
- package/dist/types/enyo-electricity-tariff.js +71 -11
- package/dist/types/enyo-energy-prices.d.ts +9 -3
- package/dist/types/enyo-grid-fee.d.ts +247 -0
- package/dist/types/enyo-grid-fee.js +23 -0
- package/dist/types/enyo-price-composition.d.ts +147 -0
- package/dist/types/enyo-price-composition.js +12 -0
- package/dist/types/enyo-price-schedule.d.ts +137 -0
- package/dist/types/enyo-price-schedule.js +42 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { EnyoDynamicGridFee, EnyoDynamicGridFeeRegistration, EnyoGridFeeChangeEvent, EnyoGridFeeInfo, EnyoGridFeeSeries, EnyoGridFeeValuesFilter } from '../types/enyo-grid-fee.cjs';
|
|
2
|
+
/**
|
|
3
|
+
* Interface for publishing and consuming grid fees (network charges).
|
|
4
|
+
*
|
|
5
|
+
* Five methods, split by role. A **producer** — an app that knows the local grid
|
|
6
|
+
* operator's tariff sheet or fetches a published series — owns
|
|
7
|
+
* {@link registerGridFee} and {@link removeGridFee}. A **consumer** asks
|
|
8
|
+
* {@link getGridFee} what applies and {@link getGridFeeValues} for the numbers
|
|
9
|
+
* over a range, and subscribes with {@link onGridFeeChanged}. Nothing else is
|
|
10
|
+
* needed, so nothing else is offered.
|
|
11
|
+
*
|
|
12
|
+
* Publishing requires the `GridFeeRegister` permission; consuming requires
|
|
13
|
+
* `GridFeeUse`.
|
|
14
|
+
*
|
|
15
|
+
* A grid fee describes the site's **grid connection**, not a supplier contract:
|
|
16
|
+
* it is registered and resolved independently of any tariff, and the same fee
|
|
17
|
+
* applies whichever supplier the site buys from. This API is the *only* place a
|
|
18
|
+
* grid fee lives — a tariff declares nothing about how the fee is determined,
|
|
19
|
+
* so there is no second source to reconcile against.
|
|
20
|
+
*
|
|
21
|
+
* **A site has exactly one grid fee.** It has one grid connection, and the
|
|
22
|
+
* operator of that connection publishes one network charge for it. So nothing
|
|
23
|
+
* here takes an identifier: registering replaces whatever was there, and reading
|
|
24
|
+
* needs no selector.
|
|
25
|
+
*
|
|
26
|
+
* **Nothing here is applied to a price automatically.** The host never folds a
|
|
27
|
+
* grid fee into {@link EnergyAppEnergyPrices.getPrices}, because provider APIs
|
|
28
|
+
* differ: some already return grid-fee-inclusive prices, some do not. The app
|
|
29
|
+
* that owns the tariff knows which is the case — it declares it via the
|
|
30
|
+
* price series' `includes` list and composes the effective price
|
|
31
|
+
* itself with `composeElectricityPrices()`. That flag is the one thing a tariff
|
|
32
|
+
* says about grid fees, and it describes the provider's price feed rather than
|
|
33
|
+
* the fee.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```typescript
|
|
37
|
+
* // Producer: a §14a EnWG module 3 HT/NT network charge
|
|
38
|
+
* const gridFee = energyApp.useGridFee();
|
|
39
|
+
* await gridFee.registerGridFee({
|
|
40
|
+
* name: 'Netzentgelt HT/NT 2026',
|
|
41
|
+
* gridOperator: 'Netze BW',
|
|
42
|
+
* currency: EnyoCurrencyEnum.EUR,
|
|
43
|
+
* timezone: 'Europe/Berlin',
|
|
44
|
+
* appliesTo: EnyoPriceAppliesToEnum.Consumption,
|
|
45
|
+
* moduleThreeCompliant: true,
|
|
46
|
+
* schedule: {
|
|
47
|
+
* type: EnyoPriceScheduleTypeEnum.Recurring,
|
|
48
|
+
* windows: [
|
|
49
|
+
* { startTimeOfDay: '06:00', endTimeOfDay: '22:00', amountPerKwh: 0.0912 },
|
|
50
|
+
* { startTimeOfDay: '22:00', endTimeOfDay: '06:00', amountPerKwh: 0.0431 },
|
|
51
|
+
* ],
|
|
52
|
+
* },
|
|
53
|
+
* });
|
|
54
|
+
*
|
|
55
|
+
* // Consumer: resolve it for the next 24 hours
|
|
56
|
+
* const fees = await gridFee.getGridFeeValues({
|
|
57
|
+
* fromIso: new Date().toISOString(),
|
|
58
|
+
* untilIso: new Date(Date.now() + 86_400_000).toISOString(),
|
|
59
|
+
* });
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export interface EnergyAppGridFee {
|
|
63
|
+
/**
|
|
64
|
+
* Sets the site's grid fee, replacing whatever was registered before.
|
|
65
|
+
*
|
|
66
|
+
* Full replacement is the only write there is, and it is enough for every
|
|
67
|
+
* case — correcting a name, moving to next year's tariff sheet, or
|
|
68
|
+
* republishing a day-ahead schedule are all "here is the fee now". A partial
|
|
69
|
+
* update would only add a second way to say the same thing, and a
|
|
70
|
+
* schedule-only write would let metadata and windows drift apart.
|
|
71
|
+
*
|
|
72
|
+
* There is no identifier and no create-versus-update distinction: the site
|
|
73
|
+
* has one grid connection and therefore one grid fee. Two apps that both
|
|
74
|
+
* register one will overwrite each other, so an app should only publish a
|
|
75
|
+
* fee it is actually authoritative for.
|
|
76
|
+
*
|
|
77
|
+
* Requires the `GridFeeRegister` permission.
|
|
78
|
+
*
|
|
79
|
+
* @param registration - The complete grid fee, including its schedule
|
|
80
|
+
* @returns Promise that resolves to the stored grid fee, including the host-assigned `publishedAtIso`
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Republishing tomorrow's day-ahead windows is the same call.
|
|
85
|
+
* await gridFee.registerGridFee({...fee, schedule: {
|
|
86
|
+
* type: EnyoPriceScheduleTypeEnum.Absolute,
|
|
87
|
+
* windows: tomorrowsWindows,
|
|
88
|
+
* }});
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
registerGridFee(registration: EnyoDynamicGridFeeRegistration): Promise<EnyoDynamicGridFee>;
|
|
92
|
+
/**
|
|
93
|
+
* Removes the site's grid fee. {@link getGridFee} and
|
|
94
|
+
* {@link getGridFeeValues} resolve to `null` afterwards. If no fee is
|
|
95
|
+
* registered, this operation is a no-op.
|
|
96
|
+
*
|
|
97
|
+
* Requires the `GridFeeRegister` permission.
|
|
98
|
+
*
|
|
99
|
+
* @returns Promise that resolves when the grid fee has been removed
|
|
100
|
+
*/
|
|
101
|
+
removeGridFee(): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Answers "what grid fee applies here?" in one call.
|
|
104
|
+
*
|
|
105
|
+
* This is the entry point for consuming a grid fee. The returned
|
|
106
|
+
* {@link EnyoGridFeeInfo} says whether the fee is
|
|
107
|
+
* {@link EnyoGridFeeTypeEnum.Static static} or
|
|
108
|
+
* {@link EnyoGridFeeTypeEnum.Dynamic dynamic}, carries the gross cent per
|
|
109
|
+
* kWh outright when it is static, and reports any additional fixed charges
|
|
110
|
+
* separately. A static fee needs no second call; a dynamic one is fetched
|
|
111
|
+
* interval by interval with {@link getGridFeeValues}.
|
|
112
|
+
*
|
|
113
|
+
* Takes no arguments — the site has one grid fee, so there is nothing to
|
|
114
|
+
* select. Returns `null` when none is registered, which is a normal answer
|
|
115
|
+
* and not an error.
|
|
116
|
+
*
|
|
117
|
+
* Requires the `GridFeeUse` permission.
|
|
118
|
+
*
|
|
119
|
+
* @returns Promise resolving to the site's grid fee, or `null` when none is registered
|
|
120
|
+
*
|
|
121
|
+
* @example
|
|
122
|
+
* ```typescript
|
|
123
|
+
* const fee = await gridFee.getGridFee();
|
|
124
|
+
* if (fee?.type === EnyoGridFeeTypeEnum.Static) {
|
|
125
|
+
* show(fee.grossCentPerKwh, fee.additionalFeesGrossCentPerKwh);
|
|
126
|
+
* } else if (fee) {
|
|
127
|
+
* const series = await gridFee.getGridFeeValues({fromIso, untilIso});
|
|
128
|
+
* }
|
|
129
|
+
* ```
|
|
130
|
+
*/
|
|
131
|
+
getGridFee(): Promise<EnyoGridFeeInfo | null>;
|
|
132
|
+
/**
|
|
133
|
+
* Resolves the applicable grid fee to a flat **15-minute series** of gross
|
|
134
|
+
* cent per kWh over the requested range — the same resolution
|
|
135
|
+
* {@link EnergyAppEnergyPrices.getPrices} uses, so both series can be
|
|
136
|
+
* combined interval by interval.
|
|
137
|
+
*
|
|
138
|
+
* Works for every fee, static or dynamic: a flat charge resolves to a series
|
|
139
|
+
* whose entries all carry the same amount, so a caller that only wants
|
|
140
|
+
* numbers over a range never has to branch on {@link EnyoGridFeeInfo.type}
|
|
141
|
+
* at all.
|
|
142
|
+
*
|
|
143
|
+
* Set `includeAdditionalFees` to fold the fee's fixed charges into every
|
|
144
|
+
* interval and get the full gross charge per kWh; leave it off for the
|
|
145
|
+
* network charge alone. The result reports which of the two you got in
|
|
146
|
+
* {@link EnyoGridFeeSeries.includesAdditionalFees}, so a fee that declares
|
|
147
|
+
* no additional charges is never mistaken for a total.
|
|
148
|
+
*
|
|
149
|
+
* Returns `null` when the site has no grid fee registered. Intervals no
|
|
150
|
+
* window covers resolve to `0`, and intervals outside the fee's
|
|
151
|
+
* `validFromIso` / `validUntilIso` window are omitted.
|
|
152
|
+
*
|
|
153
|
+
* Requires the `GridFeeUse` permission.
|
|
154
|
+
*
|
|
155
|
+
* @param filter - The time range and whether to include additional fees
|
|
156
|
+
* @returns Promise that resolves to the 15-minute fee series, or `null` when no fee applies
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* // network charge only
|
|
161
|
+
* const net = await gridFee.getGridFeeValues({fromIso, untilIso});
|
|
162
|
+
*
|
|
163
|
+
* // everything the customer pays per kWh
|
|
164
|
+
* const total = await gridFee.getGridFeeValues({
|
|
165
|
+
* fromIso,
|
|
166
|
+
* untilIso,
|
|
167
|
+
* includeAdditionalFees: true,
|
|
168
|
+
* });
|
|
169
|
+
* total?.entries.forEach(e => console.log(e.timestampIso, e.grossCentPerKwh));
|
|
170
|
+
* ```
|
|
171
|
+
*/
|
|
172
|
+
getGridFeeValues(filter: EnyoGridFeeValuesFilter): Promise<EnyoGridFeeSeries | null>;
|
|
173
|
+
/**
|
|
174
|
+
* Registers a listener invoked whenever any grid fee is registered, replaced
|
|
175
|
+
* or removed.
|
|
176
|
+
*
|
|
177
|
+
* Use it to recompute composed prices without polling: a grid operator that
|
|
178
|
+
* publishes a new day-ahead series mid-day changes the cost of every future
|
|
179
|
+
* interval.
|
|
180
|
+
*
|
|
181
|
+
* Returns the unsubscribe function directly rather than an id to hand back
|
|
182
|
+
* to a second method — calling it twice is a no-op.
|
|
183
|
+
*
|
|
184
|
+
* Requires the `GridFeeUse` permission.
|
|
185
|
+
*
|
|
186
|
+
* @param listener - Callback invoked with the change event
|
|
187
|
+
* @returns A function that removes this listener when called
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* ```typescript
|
|
191
|
+
* const unsubscribe = gridFee.onGridFeeChanged(async () => {
|
|
192
|
+
* await recomputePrices();
|
|
193
|
+
* });
|
|
194
|
+
* // later
|
|
195
|
+
* unsubscribe();
|
|
196
|
+
* ```
|
|
197
|
+
*/
|
|
198
|
+
onGridFeeChanged(listener: (event: EnyoGridFeeChangeEvent) => void | Promise<void>): () => void;
|
|
199
|
+
}
|
|
@@ -53,6 +53,18 @@ export interface ModbusOptions {
|
|
|
53
53
|
staleSocketMs?: number;
|
|
54
54
|
/** TCP keepalive idle interval in ms on the live socket, so a dead peer surfaces fast. Default 10000; 0 disables. */
|
|
55
55
|
keepAliveMs?: number;
|
|
56
|
+
/**
|
|
57
|
+
* When `true`, the connection is taken from a shared pool of sockets keyed by the target
|
|
58
|
+
* device (host, port, unit id and transport settings) instead of opening a socket that belongs
|
|
59
|
+
* exclusively to this caller. Pooling lets several parts of an app — or several `connect()`
|
|
60
|
+
* calls for the same device — reuse one TCP connection, which matters for devices that accept
|
|
61
|
+
* only a small number of simultaneous Modbus clients. A pooled instance's `disconnect()`
|
|
62
|
+
* releases the connection back to the pool rather than necessarily closing the socket, and the
|
|
63
|
+
* socket stays open while other users still hold it.
|
|
64
|
+
*
|
|
65
|
+
* Defaults to `true` (a dedicated connection per `connect()` call).
|
|
66
|
+
*/
|
|
67
|
+
pooledConnection?: boolean;
|
|
56
68
|
}
|
|
57
69
|
/**
|
|
58
70
|
* Interface for Modbus TCP/IP communication in enyo packages.
|
|
@@ -118,77 +118,6 @@ export interface EnyoCharge {
|
|
|
118
118
|
/** Target completion time for the charging session as an ISO 8601 timestamp */
|
|
119
119
|
completeAtIsoTimestamp?: string;
|
|
120
120
|
}
|
|
121
|
-
/**
|
|
122
|
-
* What is known when a charging session opens — the input to
|
|
123
|
-
* {@link EnergyAppCharge.startCharge}.
|
|
124
|
-
*
|
|
125
|
-
* Everything here is fact at plug-in time. The totals a session is judged by
|
|
126
|
-
* ({@link EnyoCharge.totalEnergyKwh}, {@link EnyoCharge.paidPriceEuroCent}) are
|
|
127
|
-
* absent on purpose: they are the host's to compute when the session ends, from
|
|
128
|
-
* the meter readings and the tariff in force while the energy flowed.
|
|
129
|
-
*/
|
|
130
|
-
export interface EnyoStartChargeRequest {
|
|
131
|
-
/** The appliance (charger) running the session. */
|
|
132
|
-
applianceId: string;
|
|
133
|
-
/**
|
|
134
|
-
* The charger's transaction ID for this session (OCPP `transactionId` or
|
|
135
|
-
* the protocol's equivalent).
|
|
136
|
-
*
|
|
137
|
-
* Together with `applianceId` this identifies the session: two chargers may
|
|
138
|
-
* independently issue the same transaction ID, so it is unique per
|
|
139
|
-
* appliance, not globally. It is also the idempotency key —
|
|
140
|
-
* {@link EnergyAppCharge.startCharge} returns the existing session rather
|
|
141
|
-
* than opening a second one when this pair is already active.
|
|
142
|
-
*/
|
|
143
|
-
transactionId: string;
|
|
144
|
-
/** When charging started. Defaults to the moment the host handles the call. */
|
|
145
|
-
startTime?: Date;
|
|
146
|
-
/** The charger's meter reading at session start, in Watt hours. */
|
|
147
|
-
meterStartValueWh?: number;
|
|
148
|
-
/** Connector on the charge point the vehicle is plugged into. */
|
|
149
|
-
connectorId?: number;
|
|
150
|
-
/** The charging card that authorized the session, if any. */
|
|
151
|
-
chargingCardId?: string;
|
|
152
|
-
/** The vehicle being charged, if known. */
|
|
153
|
-
vehicleId?: string;
|
|
154
|
-
/** Number of phases charging over. Defaults to 3. */
|
|
155
|
-
numberOfPhases?: number;
|
|
156
|
-
/** Charging mode to apply. Defaults to the appliance's configured default. */
|
|
157
|
-
chargeMode?: EnyoChargeModeEnum;
|
|
158
|
-
/** Target completion time as an ISO 8601 timestamp, for optimized modes. */
|
|
159
|
-
completeAtIsoTimestamp?: string;
|
|
160
|
-
}
|
|
161
|
-
/**
|
|
162
|
-
* How a charging session ended — the input to
|
|
163
|
-
* {@link EnergyAppCharge.stopCharge}.
|
|
164
|
-
*
|
|
165
|
-
* Meter readings, not totals: give the host what the charger reported and it
|
|
166
|
-
* derives the delivered energy and the price. See
|
|
167
|
-
* {@link EnergyAppCharge.stopCharge}.
|
|
168
|
-
*/
|
|
169
|
-
export interface EnyoStopChargeRequest {
|
|
170
|
-
/** When charging ended. Defaults to the moment the host handles the call. */
|
|
171
|
-
endTime?: Date;
|
|
172
|
-
/** The charger's meter reading at session end, in Watt hours. */
|
|
173
|
-
meterEndValueWh?: number;
|
|
174
|
-
/**
|
|
175
|
-
* Energy delivered over the session in Watt hours, when the charger reports
|
|
176
|
-
* it directly (OCPP `StopTransaction`).
|
|
177
|
-
*
|
|
178
|
-
* Preferred over the meter delta when present — a charger that meters its
|
|
179
|
-
* own session knows better than a subtraction across two readings that may
|
|
180
|
-
* span a meter reset.
|
|
181
|
-
*/
|
|
182
|
-
energyDeliveredWh?: number;
|
|
183
|
-
/**
|
|
184
|
-
* How the session ended. Defaults to {@link EnyoChargeStatus.Completed};
|
|
185
|
-
* pass {@link EnyoChargeStatus.Failed} for a session cut short by a fault.
|
|
186
|
-
*
|
|
187
|
-
* Both are terminal and both fire the stopped listener — a handler that
|
|
188
|
-
* assumes success will mis-report faulted sessions.
|
|
189
|
-
*/
|
|
190
|
-
status?: EnyoChargeStatus;
|
|
191
|
-
}
|
|
192
121
|
/**
|
|
193
122
|
* Represents a single entry in a charging schedule.
|
|
194
123
|
* Defines a time-bound current limit for smart charging.
|
|
@@ -646,6 +646,13 @@ export interface EnyoDataBusChargingStartedV1 extends EnyoDataBusMessage {
|
|
|
646
646
|
vehicleId?: string;
|
|
647
647
|
/** Meter reading at session start in Watt hours */
|
|
648
648
|
meterValueWh: number;
|
|
649
|
+
/**
|
|
650
|
+
* Number of phases the vehicle is charging over, when the charger
|
|
651
|
+
* reports it. Defaults to 3 when omitted — a single-phase session left
|
|
652
|
+
* unset is billed and forecast as if it drew three times the current it
|
|
653
|
+
* really does.
|
|
654
|
+
*/
|
|
655
|
+
numberOfPhases?: number;
|
|
649
656
|
};
|
|
650
657
|
}
|
|
651
658
|
export interface EnyoDataBusChargingMeterValuesV1 extends EnyoDataBusMessage {
|
|
@@ -1,15 +1,75 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
/**
|
|
5
|
-
*
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
3
|
+
exports.EnyoTariffChangeTypeEnum = exports.EnyoTariffActivationStatusEnum = exports.EnyoPriceComponentEnum = exports.EnyoTariffPricingTypeEnum = exports.EnyoTariffDirectionEnum = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Which direction of energy flow a tariff prices.
|
|
6
|
+
*
|
|
7
|
+
* A site has exactly one tariff per direction: what it pays for energy drawn
|
|
8
|
+
* from the grid, and what it earns for energy fed back. These are the two slots
|
|
9
|
+
* the whole tariff API is built around — a tariff is not registered into a list
|
|
10
|
+
* and later marked default, it is set into one of these two places.
|
|
11
|
+
*
|
|
12
|
+
* Deliberately not {@link EnyoPriceAppliesToEnum}, which carries a third member
|
|
13
|
+
* (`Both`) that a slot cannot be.
|
|
14
|
+
*/
|
|
15
|
+
var EnyoTariffDirectionEnum;
|
|
16
|
+
(function (EnyoTariffDirectionEnum) {
|
|
17
|
+
/** Energy drawn from the grid — what the customer pays. */
|
|
18
|
+
EnyoTariffDirectionEnum["Consumption"] = "consumption";
|
|
19
|
+
/** Energy fed into the grid — what the customer earns. */
|
|
20
|
+
EnyoTariffDirectionEnum["FeedIn"] = "feed-in";
|
|
21
|
+
})(EnyoTariffDirectionEnum || (exports.EnyoTariffDirectionEnum = EnyoTariffDirectionEnum = {}));
|
|
22
|
+
/**
|
|
23
|
+
* The pricing model a tariff follows.
|
|
24
|
+
*/
|
|
25
|
+
var EnyoTariffPricingTypeEnum;
|
|
26
|
+
(function (EnyoTariffPricingTypeEnum) {
|
|
27
|
+
/** One price that does not change over time. */
|
|
28
|
+
EnyoTariffPricingTypeEnum["Static"] = "static";
|
|
29
|
+
/** Price varies by time of day, weekday or season (e.g. peak/off-peak). */
|
|
30
|
+
EnyoTariffPricingTypeEnum["TimeVariable"] = "time-variable";
|
|
31
|
+
/** Price changes with the market and is published as a dated series. */
|
|
32
|
+
EnyoTariffPricingTypeEnum["Dynamic"] = "dynamic";
|
|
33
|
+
})(EnyoTariffPricingTypeEnum || (exports.EnyoTariffPricingTypeEnum = EnyoTariffPricingTypeEnum = {}));
|
|
34
|
+
/**
|
|
35
|
+
* A cost component that may or may not already be contained in a published
|
|
36
|
+
* price.
|
|
37
|
+
*
|
|
38
|
+
* Provider APIs differ: some return all-in prices with network charges, levies
|
|
39
|
+
* and discounts baked in, others return the pure energy price. A consumer must
|
|
40
|
+
* never add a component that is already there, so the publishing app declares
|
|
41
|
+
* what its prices contain — see {@link EnyoTariffPriceSeries.includes}.
|
|
42
|
+
*/
|
|
43
|
+
var EnyoPriceComponentEnum;
|
|
44
|
+
(function (EnyoPriceComponentEnum) {
|
|
45
|
+
/** The grid operator's network charge. */
|
|
46
|
+
EnyoPriceComponentEnum["GridFee"] = "grid-fee";
|
|
47
|
+
/** Taxes and statutory levies. */
|
|
48
|
+
EnyoPriceComponentEnum["TaxesAndLevies"] = "taxes-and-levies";
|
|
49
|
+
/** Discounts granted on top of the tariff. */
|
|
50
|
+
EnyoPriceComponentEnum["Bonuses"] = "bonuses";
|
|
51
|
+
})(EnyoPriceComponentEnum || (exports.EnyoPriceComponentEnum = EnyoPriceComponentEnum = {}));
|
|
52
|
+
/**
|
|
53
|
+
* The outcome of a user choosing a tariff.
|
|
54
|
+
*/
|
|
55
|
+
var EnyoTariffActivationStatusEnum;
|
|
56
|
+
(function (EnyoTariffActivationStatusEnum) {
|
|
57
|
+
/** The tariff is set and usable; prices can be published. */
|
|
58
|
+
EnyoTariffActivationStatusEnum["Success"] = "success";
|
|
59
|
+
/** The user must authenticate with the provider before the tariff works. */
|
|
60
|
+
EnyoTariffActivationStatusEnum["AuthenticationRequired"] = "authentication-required";
|
|
61
|
+
/** The user must complete an onboarding guide before the tariff works. */
|
|
62
|
+
EnyoTariffActivationStatusEnum["OnboardingRequired"] = "onboarding-required";
|
|
63
|
+
/** The tariff could not be activated. */
|
|
64
|
+
EnyoTariffActivationStatusEnum["Failed"] = "failed";
|
|
65
|
+
})(EnyoTariffActivationStatusEnum || (exports.EnyoTariffActivationStatusEnum = EnyoTariffActivationStatusEnum = {}));
|
|
66
|
+
/**
|
|
67
|
+
* What happened to a direction slot.
|
|
68
|
+
*/
|
|
69
|
+
var EnyoTariffChangeTypeEnum;
|
|
70
|
+
(function (EnyoTariffChangeTypeEnum) {
|
|
71
|
+
/** A tariff was set into a slot that was empty, or replaced the one in it. */
|
|
72
|
+
EnyoTariffChangeTypeEnum["Set"] = "set";
|
|
73
|
+
/** The slot was emptied. */
|
|
74
|
+
EnyoTariffChangeTypeEnum["Cleared"] = "cleared";
|
|
75
|
+
})(EnyoTariffChangeTypeEnum || (exports.EnyoTariffChangeTypeEnum = EnyoTariffChangeTypeEnum = {}));
|