@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.
Files changed (70) hide show
  1. package/README.md +245 -5
  2. package/dist/cjs/energy-app-package-definition.cjs +1 -0
  3. package/dist/cjs/energy-app-package-definition.d.cts +1 -0
  4. package/dist/cjs/energy-app-permission.type.cjs +2 -0
  5. package/dist/cjs/energy-app-permission.type.d.cts +3 -1
  6. package/dist/cjs/energy-app.cjs +22 -0
  7. package/dist/cjs/energy-app.d.cts +21 -0
  8. package/dist/cjs/enyo-energy-app-sdk.d.cts +3 -0
  9. package/dist/cjs/implementations/appliances/appliance-manager.cjs +6 -0
  10. package/dist/cjs/implementations/pricing/compose-electricity-prices.cjs +255 -0
  11. package/dist/cjs/implementations/pricing/compose-electricity-prices.d.cts +125 -0
  12. package/dist/cjs/implementations/pricing/price-component-validators.cjs +238 -0
  13. package/dist/cjs/implementations/pricing/price-component-validators.d.cts +57 -0
  14. package/dist/cjs/implementations/pricing/price-schedule-resolver.cjs +182 -0
  15. package/dist/cjs/implementations/pricing/price-schedule-resolver.d.cts +95 -0
  16. package/dist/cjs/index.cjs +7 -0
  17. package/dist/cjs/index.d.cts +7 -0
  18. package/dist/cjs/packages/energy-app-charge.d.cts +8 -81
  19. package/dist/cjs/packages/energy-app-electricity-tariff.d.cts +153 -41
  20. package/dist/cjs/packages/energy-app-grid-fee.cjs +2 -0
  21. package/dist/cjs/packages/energy-app-grid-fee.d.cts +199 -0
  22. package/dist/cjs/packages/energy-app-modbus.d.cts +12 -0
  23. package/dist/cjs/types/enyo-charge.d.cts +0 -71
  24. package/dist/cjs/types/enyo-data-bus-value.d.cts +7 -0
  25. package/dist/cjs/types/enyo-electricity-tariff.cjs +73 -13
  26. package/dist/cjs/types/enyo-electricity-tariff.d.cts +260 -50
  27. package/dist/cjs/types/enyo-energy-prices.d.cts +9 -3
  28. package/dist/cjs/types/enyo-grid-fee.cjs +26 -0
  29. package/dist/cjs/types/enyo-grid-fee.d.cts +247 -0
  30. package/dist/cjs/types/enyo-price-composition.cjs +15 -0
  31. package/dist/cjs/types/enyo-price-composition.d.cts +147 -0
  32. package/dist/cjs/types/enyo-price-schedule.cjs +45 -0
  33. package/dist/cjs/types/enyo-price-schedule.d.cts +137 -0
  34. package/dist/cjs/version.cjs +1 -1
  35. package/dist/cjs/version.d.cts +1 -1
  36. package/dist/energy-app-package-definition.d.ts +1 -0
  37. package/dist/energy-app-package-definition.js +1 -0
  38. package/dist/energy-app-permission.type.d.ts +3 -1
  39. package/dist/energy-app-permission.type.js +2 -0
  40. package/dist/energy-app.d.ts +21 -0
  41. package/dist/energy-app.js +22 -0
  42. package/dist/enyo-energy-app-sdk.d.ts +3 -0
  43. package/dist/implementations/appliances/appliance-manager.js +6 -0
  44. package/dist/implementations/pricing/compose-electricity-prices.d.ts +125 -0
  45. package/dist/implementations/pricing/compose-electricity-prices.js +248 -0
  46. package/dist/implementations/pricing/price-component-validators.d.ts +57 -0
  47. package/dist/implementations/pricing/price-component-validators.js +230 -0
  48. package/dist/implementations/pricing/price-schedule-resolver.d.ts +95 -0
  49. package/dist/implementations/pricing/price-schedule-resolver.js +175 -0
  50. package/dist/index.d.ts +7 -0
  51. package/dist/index.js +7 -0
  52. package/dist/packages/energy-app-charge.d.ts +8 -81
  53. package/dist/packages/energy-app-electricity-tariff.d.ts +153 -41
  54. package/dist/packages/energy-app-grid-fee.d.ts +199 -0
  55. package/dist/packages/energy-app-grid-fee.js +1 -0
  56. package/dist/packages/energy-app-modbus.d.ts +12 -0
  57. package/dist/types/enyo-charge.d.ts +0 -71
  58. package/dist/types/enyo-data-bus-value.d.ts +7 -0
  59. package/dist/types/enyo-electricity-tariff.d.ts +260 -50
  60. package/dist/types/enyo-electricity-tariff.js +71 -11
  61. package/dist/types/enyo-energy-prices.d.ts +9 -3
  62. package/dist/types/enyo-grid-fee.d.ts +247 -0
  63. package/dist/types/enyo-grid-fee.js +23 -0
  64. package/dist/types/enyo-price-composition.d.ts +147 -0
  65. package/dist/types/enyo-price-composition.js +12 -0
  66. package/dist/types/enyo-price-schedule.d.ts +137 -0
  67. package/dist/types/enyo-price-schedule.js +42 -0
  68. package/dist/version.d.ts +1 -1
  69. package/dist/version.js +1 -1
  70. 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.ElectricityTariffTypeEnum = void 0;
4
- /**
5
- * Enum representing the type of electricity tariff pricing model
6
- */
7
- var ElectricityTariffTypeEnum;
8
- (function (ElectricityTariffTypeEnum) {
9
- /** Fixed price that doesn't change over time */
10
- ElectricityTariffTypeEnum["Static"] = "static";
11
- /** Price varies based on time of day (e.g., peak/off-peak) */
12
- ElectricityTariffTypeEnum["TimeVariable"] = "time-variable";
13
- /** Price changes dynamically based on market conditions */
14
- ElectricityTariffTypeEnum["Dynamic"] = "dynamic";
15
- })(ElectricityTariffTypeEnum || (exports.ElectricityTariffTypeEnum = ElectricityTariffTypeEnum = {}));
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 = {}));