@swmmrs/swmmrs 0.1.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 (120) hide show
  1. package/README.md +264 -0
  2. package/dist/README.md +264 -0
  3. package/dist/serial/README.md +264 -0
  4. package/dist/serial/swmmrs.d.ts +395 -0
  5. package/dist/serial/swmmrs.js +3169 -0
  6. package/dist/serial/swmmrs_bg.wasm +0 -0
  7. package/dist/snippets/swmmrs-parallel-5d1c71108133e81d/worker-pool/browser.js +98 -0
  8. package/dist/swmmrs.d.ts +422 -0
  9. package/dist/swmmrs.js +3330 -0
  10. package/dist/swmmrs_bg.wasm +0 -0
  11. package/index.d.ts +2 -0
  12. package/index.js +2 -0
  13. package/lib/swmmrs/client.d.ts +11 -0
  14. package/lib/swmmrs/client.d.ts.map +1 -0
  15. package/lib/swmmrs/client.js +82 -0
  16. package/lib/swmmrs/client.js.map +1 -0
  17. package/lib/swmmrs/enums.d.ts +41 -0
  18. package/lib/swmmrs/enums.d.ts.map +1 -0
  19. package/lib/swmmrs/enums.js +2 -0
  20. package/lib/swmmrs/enums.js.map +1 -0
  21. package/lib/swmmrs/exceptions.d.ts +98 -0
  22. package/lib/swmmrs/exceptions.d.ts.map +1 -0
  23. package/lib/swmmrs/exceptions.js +86 -0
  24. package/lib/swmmrs/exceptions.js.map +1 -0
  25. package/lib/swmmrs/index.d.ts +27 -0
  26. package/lib/swmmrs/index.d.ts.map +1 -0
  27. package/lib/swmmrs/index.js +13 -0
  28. package/lib/swmmrs/index.js.map +1 -0
  29. package/lib/swmmrs/objects/amm.d.ts +114 -0
  30. package/lib/swmmrs/objects/amm.d.ts.map +1 -0
  31. package/lib/swmmrs/objects/amm.js +19 -0
  32. package/lib/swmmrs/objects/amm.js.map +1 -0
  33. package/lib/swmmrs/objects/collections.d.ts +109 -0
  34. package/lib/swmmrs/objects/collections.d.ts.map +1 -0
  35. package/lib/swmmrs/objects/collections.js +158 -0
  36. package/lib/swmmrs/objects/collections.js.map +1 -0
  37. package/lib/swmmrs/objects/definitions.d.ts +215 -0
  38. package/lib/swmmrs/objects/definitions.d.ts.map +1 -0
  39. package/lib/swmmrs/objects/definitions.js +69 -0
  40. package/lib/swmmrs/objects/definitions.js.map +1 -0
  41. package/lib/swmmrs/objects/lids.d.ts +446 -0
  42. package/lib/swmmrs/objects/lids.d.ts.map +1 -0
  43. package/lib/swmmrs/objects/lids.js +90 -0
  44. package/lib/swmmrs/objects/lids.js.map +1 -0
  45. package/lib/swmmrs/objects/links.d.ts +615 -0
  46. package/lib/swmmrs/objects/links.d.ts.map +1 -0
  47. package/lib/swmmrs/objects/links.js +90 -0
  48. package/lib/swmmrs/objects/links.js.map +1 -0
  49. package/lib/swmmrs/objects/nodes.d.ts +494 -0
  50. package/lib/swmmrs/objects/nodes.d.ts.map +1 -0
  51. package/lib/swmmrs/objects/nodes.js +147 -0
  52. package/lib/swmmrs/objects/nodes.js.map +1 -0
  53. package/lib/swmmrs/objects/options.d.ts +112 -0
  54. package/lib/swmmrs/objects/options.d.ts.map +1 -0
  55. package/lib/swmmrs/objects/options.js +27 -0
  56. package/lib/swmmrs/objects/options.js.map +1 -0
  57. package/lib/swmmrs/objects/rtk.d.ts +82 -0
  58. package/lib/swmmrs/objects/rtk.d.ts.map +1 -0
  59. package/lib/swmmrs/objects/rtk.js +19 -0
  60. package/lib/swmmrs/objects/rtk.js.map +1 -0
  61. package/lib/swmmrs/objects/subcatchments.d.ts +575 -0
  62. package/lib/swmmrs/objects/subcatchments.d.ts.map +1 -0
  63. package/lib/swmmrs/objects/subcatchments.js +243 -0
  64. package/lib/swmmrs/objects/subcatchments.js.map +1 -0
  65. package/lib/swmmrs/output.d.ts +412 -0
  66. package/lib/swmmrs/output.d.ts.map +1 -0
  67. package/lib/swmmrs/output.js +507 -0
  68. package/lib/swmmrs/output.js.map +1 -0
  69. package/lib/swmmrs/protocol.d.ts +80 -0
  70. package/lib/swmmrs/protocol.d.ts.map +1 -0
  71. package/lib/swmmrs/protocol.js +2 -0
  72. package/lib/swmmrs/protocol.js.map +1 -0
  73. package/lib/swmmrs/runtime.d.ts +22 -0
  74. package/lib/swmmrs/runtime.d.ts.map +1 -0
  75. package/lib/swmmrs/runtime.js +146 -0
  76. package/lib/swmmrs/runtime.js.map +1 -0
  77. package/lib/swmmrs/scenarios.d.ts +41 -0
  78. package/lib/swmmrs/scenarios.d.ts.map +1 -0
  79. package/lib/swmmrs/scenarios.js +2 -0
  80. package/lib/swmmrs/scenarios.js.map +1 -0
  81. package/lib/swmmrs/simulation.d.ts +249 -0
  82. package/lib/swmmrs/simulation.d.ts.map +1 -0
  83. package/lib/swmmrs/simulation.js +415 -0
  84. package/lib/swmmrs/simulation.js.map +1 -0
  85. package/lib/swmmrs/snapshots.d.ts +192 -0
  86. package/lib/swmmrs/snapshots.d.ts.map +1 -0
  87. package/lib/swmmrs/snapshots.js +2 -0
  88. package/lib/swmmrs/snapshots.js.map +1 -0
  89. package/lib/swmmrs/types.d.ts +123 -0
  90. package/lib/swmmrs/types.d.ts.map +1 -0
  91. package/lib/swmmrs/types.js +2 -0
  92. package/lib/swmmrs/types.js.map +1 -0
  93. package/lib/swmmrs/worker.d.ts +2 -0
  94. package/lib/swmmrs/worker.d.ts.map +1 -0
  95. package/lib/swmmrs/worker.js +488 -0
  96. package/lib/swmmrs/worker.js.map +1 -0
  97. package/package.json +33 -0
  98. package/src/swmmrs/client.ts +76 -0
  99. package/src/swmmrs/enums.ts +73 -0
  100. package/src/swmmrs/exceptions.ts +120 -0
  101. package/src/swmmrs/index.ts +79 -0
  102. package/src/swmmrs/objects/amm.ts +113 -0
  103. package/src/swmmrs/objects/collections.ts +153 -0
  104. package/src/swmmrs/objects/definitions.ts +246 -0
  105. package/src/swmmrs/objects/lids.ts +487 -0
  106. package/src/swmmrs/objects/links.ts +626 -0
  107. package/src/swmmrs/objects/nodes.ts +504 -0
  108. package/src/swmmrs/objects/options.ts +114 -0
  109. package/src/swmmrs/objects/rtk.ts +79 -0
  110. package/src/swmmrs/objects/subcatchments.ts +650 -0
  111. package/src/swmmrs/output.ts +798 -0
  112. package/src/swmmrs/protocol.ts +62 -0
  113. package/src/swmmrs/runtime.ts +188 -0
  114. package/src/swmmrs/scenarios.ts +40 -0
  115. package/src/swmmrs/simulation.ts +406 -0
  116. package/src/swmmrs/snapshots.ts +199 -0
  117. package/src/swmmrs/types.ts +123 -0
  118. package/src/swmmrs/worker.ts +233 -0
  119. package/worker-node.js +142 -0
  120. package/worker.js +1 -0
@@ -0,0 +1,90 @@
1
+ /** Owner-bound link from `simulation.links.get(id)`. No public subtype subclasses.
2
+ * Reads are detached; configuration is available in healthy states. Wrong-kind
3
+ * operations reject without changing the model. Statistics require an active run.
4
+ */
5
+ export class Link {
6
+ /** Canonical configured link ID. */
7
+ id;
8
+ #call;
9
+ constructor(id, call) { this.id = id; this.#call = call; Object.freeze(this); }
10
+ /** @internal */
11
+ static create(id, call) { return new Link(id, call); }
12
+ /** Read hydraulics in `running`, `complete`, or `ended`.
13
+ * @returns Detached current link results.
14
+ */
15
+ results() { return this.#call("link", this.id); }
16
+ /** Read common and kind-specific declarations in any healthy owner state.
17
+ * @returns Detached configuration, including cross-section and optional inlet.
18
+ */
19
+ configuration() { return this.#call("linkConfiguration", this.id); }
20
+ /** Atomically update declarations in `open` or `ended`; accepted writes return `ended` to `open`.
21
+ * @param patch - Sparse common/subtype fields; invalid fields or a wrong-kind subtype reject the whole patch.
22
+ * @returns Resolves after all fields are accepted.
23
+ */
24
+ configure(patch) { return this.#call("configureLink", this.id, patch); }
25
+ /** Change the target opening or pump speed in `running`; native control rules may change it later.
26
+ * @param setting - Finite dimensionless factor. Non-pumps clamp to [0, 1]; pumps clamp at zero and may exceed one.
27
+ * @returns Resolves after setting the target.
28
+ */
29
+ setTargetSetting(setting) { return this.#call("setLinkTargetSetting", this.id, setting); }
30
+ /** Set a persistent flow limit in `open`, `running`, or `ended`.
31
+ * @param flowLimit - Limit in project flow units.
32
+ * @returns Resolves after the forcing is updated.
33
+ */
34
+ setFlowLimit(flowLimit) { return this.#call("setLinkFlowLimit", this.id, flowLimit); }
35
+ /** Read quality in `running`, `complete`, or `ended`.
36
+ * @returns Detached pollutant-aligned concentrations and transported loads.
37
+ */
38
+ quality() { return this.#call("linkQuality", this.id); }
39
+ /** Queue sparse overrides for the next quality step in `running`; they expire after that step.
40
+ * @param values - Pollutant-ID concentration map in configured concentration units.
41
+ * @returns Resolves after valid IDs and concentrations are queued.
42
+ */
43
+ overridePollutantConcentrations(values) {
44
+ return this.#call("overrideLinkPollutantConcentrations", this.id, values);
45
+ }
46
+ /** Read persistent pollutant mass fluxes in `open`, `running`, or `ended`.
47
+ * @returns Pollutant-ID map in configured mass-flux units.
48
+ */
49
+ externalPollutantMassFlux() {
50
+ return this.#call("linkExternalPollutantMassFlux", this.id);
51
+ }
52
+ /** Read one persistent mass flux in `open`, `running`, or `ended`.
53
+ * @param pollutantId - Configured pollutant ID.
54
+ * @returns Value in configured pollutant mass-flux units; unknown IDs reject.
55
+ */
56
+ externalPollutantMassFluxValue(pollutantId) {
57
+ return this.#call("linkExternalPollutantMassFluxValue", this.id, pollutantId);
58
+ }
59
+ /** Update persistent mass fluxes in `open`, `running`, or `ended`.
60
+ * Nonzero flux requires a non-dummy conduit; other kinds accept only an all-zero clear.
61
+ * @param values - Pollutant-ID map in configured mass-flux units.
62
+ * @param replace - Defaults to false: merge. True replaces the whole map, resetting omitted IDs to zero.
63
+ * @returns Resolves after the atomic update.
64
+ */
65
+ updateExternalPollutantMassFlux(values, replace = false) {
66
+ return this.#call("updateLinkExternalPollutantMassFlux", this.id, values, replace);
67
+ }
68
+ /** Read cumulative statistics in `running` or `complete`, before ending the run.
69
+ * @returns Detached link statistics.
70
+ */
71
+ statistics() { return this.#call("linkStatistics", this.id); }
72
+ /** Read pump-only cumulative statistics in `running` or `complete`.
73
+ * @returns Detached pump statistics; non-pump calls reject.
74
+ */
75
+ pumpStatistics() { return this.#call("pumpStatistics", this.id); }
76
+ /** Read the inlet placement in any healthy owner state.
77
+ * @returns Detached inlet configuration, or null when absent.
78
+ */
79
+ inlet() { return this.#call("linkInlet", this.id); }
80
+ /** Read inlet results in `running`, `complete`, or `ended`.
81
+ * @returns Detached current inlet values, or null when no inlet is configured.
82
+ */
83
+ inletResults() { return this.#call("inletResults", this.id); }
84
+ /** Update persistent inlet controls in `open`, `running`, or `ended`.
85
+ * @param patch - Sparse clogging percentage and/or flow limit; omission retains a value.
86
+ * @returns Resolves after the update is accepted.
87
+ */
88
+ updateInlet(patch) { return this.#call("updateInlet", this.id, patch); }
89
+ }
90
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../../../src/swmmrs/objects/links.ts"],"names":[],"mappings":"AAyhBA;;;GAGG;AACH,MAAM,OAAO,IAAI;IACf,oCAAoC;IAC3B,EAAE,CAAS;IACX,KAAK,CAAO;IACrB,YAAoB,EAAU,EAAE,IAAU,IAAI,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACrG,gBAAgB;IAChB,MAAM,CAAC,MAAM,CAAC,EAAU,EAAE,IAAU,IAAU,OAAO,IAAI,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1E;;OAEG;IACH,OAAO,KAA2B,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvE;;OAEG;IACH,aAAa,KAAiC,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChG;;;OAGG;IACH,SAAS,CAAC,KAAgB,IAAmB,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClG;;;OAGG;IACH,gBAAgB,CAAC,OAAe,IAAmB,OAAO,IAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;IACjH;;;OAGG;IACH,YAAY,CAAC,SAAiB,IAAmB,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7G;;OAEG;IACH,OAAO,KAA2B,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E;;;OAGG;IACH,+BAA+B,CAAC,MAA8B;QAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,qCAAqC,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IAC5E,CAAC;IACD;;OAEG;IACH,yBAAyB;QACvB,OAAO,IAAI,CAAC,KAAK,CAAC,+BAA+B,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD;;;OAGG;IACH,8BAA8B,CAAC,WAAmB;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,oCAAoC,EAAE,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;IAChF,CAAC;IACD;;;;;OAKG;IACH,+BAA+B,CAAC,MAA8B,EAAE,OAAO,GAAG,KAAK;QAC7E,OAAO,IAAI,CAAC,KAAK,CAAC,qCAAqC,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACrF,CAAC;IACD;;OAEG;IACH,UAAU,KAA8B,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvF;;OAEG;IACH,cAAc,KAA8B,OAAO,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3F;;OAEG;IACH,KAAK,KAAyC,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxF;;OAEG;IACH,YAAY,KAAmC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5F;;;OAGG;IACH,WAAW,CAAC,KAAiB,IAAmB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;CACpG"}
@@ -0,0 +1,494 @@
1
+ import type { ModelTime, NodeKind } from "../enums.js";
2
+ import type { NodeResults } from "../snapshots.js";
3
+ /** Storage area/depth relationship represented by {@link StorageShape}. */
4
+ export type StorageShapeKind = "functional" | "tabular" | "cylindrical" | "conical" | "paraboloid" | "pyramidal";
5
+ /** Canonical storage-shape declaration returned by {@link Node.configuration}. */
6
+ export interface StorageShape {
7
+ /** Functional, tabular, or geometric shape selector. */
8
+ readonly kind: StorageShapeKind;
9
+ /** Three canonical shape coefficients; interpretation depends on {@link kind}. */
10
+ readonly coefficients: readonly [number, number, number];
11
+ /** Canonical storage-curve ID for a tabular shape; otherwise `null`. */
12
+ readonly curve: string | null;
13
+ }
14
+ /** Replacement storage shape supplied through {@link NodePatch.shape}. */
15
+ export interface StorageShapePatch {
16
+ /** Shape to install; required even when only coefficients change. */
17
+ readonly kind: StorageShapeKind;
18
+ /** Shape coefficients, defaulting to `[0, 0, 0]`. Must be zero for a tabular shape. */
19
+ readonly coefficients?: readonly [number, number, number];
20
+ /** Storage-curve ID, required for a tabular shape. */
21
+ readonly curve?: string | null;
22
+ }
23
+ /** Storage seepage or Green-Ampt exfiltration parameters. */
24
+ export interface StorageExfiltration {
25
+ /** Saturated hydraulic conductivity in project infiltration-rate units (in/h or mm/h). */
26
+ readonly conductivity: number;
27
+ /** Suction head in project rainfall-depth units (in or mm). */
28
+ readonly suctionHead: number;
29
+ /** Initial moisture deficit as a dimensionless fraction. */
30
+ readonly moistureDeficit: number;
31
+ }
32
+ /** Replacement exfiltration parameters; zero suction and deficit select seepage. */
33
+ export interface StorageExfiltrationPatch {
34
+ /** {@inheritDoc StorageExfiltration.conductivity} */
35
+ readonly conductivity: number;
36
+ /** Suction head in in or mm; defaults to zero. */
37
+ readonly suctionHead?: number;
38
+ /** Initial moisture-deficit fraction; defaults to zero. */
39
+ readonly moistureDeficit?: number;
40
+ }
41
+ /** Declared outfall boundary model; separate from a runtime stage override. */
42
+ export type OutfallBoundaryKind = "free" | "normal" | "fixed" | "tidal" | "timeseries";
43
+ /** Outfall boundary declaration, not the current runtime override. */
44
+ export interface OutfallBoundary {
45
+ /** Boundary model. */
46
+ readonly kind: OutfallBoundaryKind;
47
+ /** Fixed-stage elevation in project length units. */
48
+ readonly stage: number;
49
+ /** Canonical tidal-curve or time-series ID; `null` for other boundary kinds. */
50
+ readonly reference: string | null;
51
+ }
52
+ /** Replacement outfall boundary supplied through {@link NodePatch.boundary}. */
53
+ export interface OutfallBoundaryPatch {
54
+ /** Boundary model to install. */
55
+ readonly kind: OutfallBoundaryKind;
56
+ /** Fixed-stage elevation in project length units; defaults to zero for `fixed`. */
57
+ readonly stage?: number;
58
+ /** Required curve ID for `tidal`, or time-series ID for `timeseries`. */
59
+ readonly reference?: string | null;
60
+ }
61
+ /** Flow-diversion rule used by a divider node. */
62
+ export type DividerRuleKind = "overflow" | "cutoff" | "tabular" | "weir";
63
+ /** Canonical divider declaration returned by {@link Node.configuration}. */
64
+ export interface DividerRule {
65
+ /** Flow-diversion rule. */
66
+ readonly kind: DividerRuleKind;
67
+ /** Minimum flow, maximum head, and discharge coefficient; applicability depends on the rule. */
68
+ readonly values: readonly [number, number, number];
69
+ /** Canonical diversion-curve ID for `tabular`; otherwise `null`. */
70
+ readonly curve: string | null;
71
+ }
72
+ /** Replacement divider rule supplied through {@link NodePatch.rule}. */
73
+ export interface DividerRulePatch {
74
+ /** Flow-diversion rule to install. */
75
+ readonly kind: DividerRuleKind;
76
+ /** Rule values, defaulting to zeros. `cutoff` accepts only minimum flow; `tabular` requires zeros. */
77
+ readonly values?: readonly [number, number, number];
78
+ /** Diversion-curve ID, required for `tabular`. */
79
+ readonly curve?: string | null;
80
+ }
81
+ /**
82
+ * Sparse, atomic declaration update accepted by {@link Node.configure}.
83
+ *
84
+ * Omitted top-level fields retain their values. Nested shape, exfiltration,
85
+ * boundary, and rule records replace that declaration rather than merging it.
86
+ * Kind-specific fields require the corresponding node kind. Runtime forcings,
87
+ * results, and the node ID are not accepted here.
88
+ */
89
+ export interface NodePatch {
90
+ /** {@inheritDoc NodeConfiguration.tag} */
91
+ readonly tag?: string;
92
+ /** {@inheritDoc NodeConfiguration.invertElevation} */
93
+ readonly invertElevation?: number;
94
+ /** {@inheritDoc NodeConfiguration.fullDepth} */
95
+ readonly fullDepth?: number;
96
+ /** {@inheritDoc NodeConfiguration.surchargeDepth} */
97
+ readonly surchargeDepth?: number;
98
+ /** {@inheritDoc NodeConfiguration.pondedArea} */
99
+ readonly pondedArea?: number;
100
+ /** {@inheritDoc NodeConfiguration.initialDepth} */
101
+ readonly initialDepth?: number;
102
+ /** {@inheritDoc NodeConfiguration.includedInReport} */
103
+ readonly includedInReport?: boolean;
104
+ /** Replacement storage area/depth relationship; storage nodes only. */
105
+ readonly shape?: StorageShapePatch;
106
+ /** Storage evaporation fraction; storage nodes only. */
107
+ readonly evaporationFraction?: number;
108
+ /** Replacement storage exfiltration parameters; `null` disables exfiltration. */
109
+ readonly exfiltration?: StorageExfiltrationPatch | null;
110
+ /** Replacement declared boundary; outfalls only. */
111
+ readonly boundary?: OutfallBoundaryPatch;
112
+ /** Whether reverse flow is blocked; outfalls only. */
113
+ readonly hasFlapGate?: boolean;
114
+ /** Receiving subcatchment ID for an outfall; `null` clears the relation. */
115
+ readonly routeToSubcatchment?: string | null;
116
+ /** Replacement flow-diversion rule; dividers only. */
117
+ readonly rule?: DividerRulePatch;
118
+ /** Diverted link ID for a divider; `null` clears the relation. */
119
+ readonly divertedLink?: string | null;
120
+ }
121
+ /**
122
+ * Detached, read-only node declarations returned by {@link Node.configuration}.
123
+ * Subtype fields are `null` when they do not apply to this node kind.
124
+ */
125
+ export interface NodeConfiguration {
126
+ /** Configured node kind; handles do not have public subtype subclasses. */
127
+ readonly kind: NodeKind;
128
+ /** Object tag. */
129
+ readonly tag: string;
130
+ /** Invert elevation in project length units (ft or m). */
131
+ readonly invertElevation: number;
132
+ /** Full depth above the invert in project length units. */
133
+ readonly fullDepth: number;
134
+ /** Additional surcharge depth in project length units. */
135
+ readonly surchargeDepth: number;
136
+ /** Ponding area in project length squared (ft² or m²). */
137
+ readonly pondedArea: number;
138
+ /** Initial water depth in project length units. */
139
+ readonly initialDepth: number;
140
+ /** Whether this node is selected for detailed reporting. */
141
+ readonly includedInReport: boolean;
142
+ /** Persistent additive API inflow in project flow units; set with {@link Node.setExternalInflow}. */
143
+ readonly externalInflow: number;
144
+ /** Storage area/depth relationship; `null` for other node kinds. */
145
+ readonly shape: StorageShape | null;
146
+ /** Storage evaporation fraction; `null` for other node kinds. */
147
+ readonly evaporationFraction: number | null;
148
+ /** Storage exfiltration parameters; `null` when absent or not applicable. */
149
+ readonly exfiltration: StorageExfiltration | null;
150
+ /** Declared outfall boundary; `null` for other node kinds. */
151
+ readonly boundary: OutfallBoundary | null;
152
+ /** Outfall reverse-flow flap gate; `null` for other node kinds. */
153
+ readonly hasFlapGate: boolean | null;
154
+ /** Canonical receiving-subcatchment ID for an outfall; `null` when unset or not applicable. */
155
+ readonly routeToSubcatchment: string | null;
156
+ /** Divider flow-diversion rule; `null` for other node kinds. */
157
+ readonly rule: DividerRule | null;
158
+ /** Canonical diverted-link ID for a divider; `null` when unset or not applicable. */
159
+ readonly divertedLink: string | null;
160
+ }
161
+ /** Detached current concentrations, in each pollutant's configured concentration units. */
162
+ export interface NodeQuality {
163
+ /** Canonical pollutant IDs defining the order of every concentration array. */
164
+ readonly pollutantIds: readonly string[];
165
+ /** Current node concentrations, aligned with {@link pollutantIds}. */
166
+ readonly concentrations: readonly number[];
167
+ /** Current inflow concentrations, aligned with {@link pollutantIds}. */
168
+ readonly inflowConcentrations: readonly number[];
169
+ /** Current reactor concentrations, aligned with {@link pollutantIds}. */
170
+ readonly reactorConcentrations: readonly number[];
171
+ }
172
+ /**
173
+ * Detached quality snapshot returned by `simulation.nodes.qualitySnapshot(ids)`.
174
+ * Matrices are pollutant-major: `[pollutantIndex][objectIndex]`.
175
+ * Concentrations use each pollutant's configured concentration units.
176
+ */
177
+ export interface NodeQualitySnapshot {
178
+ /** Canonical node IDs in selection order, defining each matrix's inner dimension. */
179
+ readonly objectIds: readonly string[];
180
+ /** Canonical pollutant IDs defining each matrix's outer dimension. */
181
+ readonly pollutantIds: readonly string[];
182
+ /** Current node concentrations. */
183
+ readonly concentrations: readonly (readonly number[])[];
184
+ /** Current inflow concentrations. */
185
+ readonly inflowConcentrations: readonly (readonly number[])[];
186
+ /** Current reactor concentrations. */
187
+ readonly reactorConcentrations: readonly (readonly number[])[];
188
+ }
189
+ /** Detached cumulative statistics for the current run, read with {@link Node.statistics}. */
190
+ export interface NodeStatistics {
191
+ /** Average reported depth in project length units; zero before reporting samples exist. */
192
+ readonly averageDepth: number;
193
+ /** Maximum depth in project length units. */
194
+ readonly maximumDepth: number;
195
+ /** Model calendar time of maximum depth, without a timezone. */
196
+ readonly maximumDepthTime: ModelTime;
197
+ /** Maximum reported depth in project length units. */
198
+ readonly maximumReportedDepth: number;
199
+ /** Cumulative flooded volume in project volume units (ft³ or m³). */
200
+ readonly floodedVolume: number;
201
+ /** Cumulative time flooded, in seconds. */
202
+ readonly timeFloodedSeconds: number;
203
+ /** Cumulative time surcharged, in seconds. */
204
+ readonly timeSurchargedSeconds: number;
205
+ /** Cumulative time Courant-critical, in seconds. */
206
+ readonly timeCourantCriticalSeconds: number;
207
+ /** Cumulative lateral inflow volume in project volume units, not a flow rate. */
208
+ readonly totalLateralInflow: number;
209
+ /** Maximum lateral inflow in project flow units. */
210
+ readonly maximumLateralInflow: number;
211
+ /** Maximum total inflow in project flow units. */
212
+ readonly maximumInflow: number;
213
+ /** Maximum overflow in project flow units. */
214
+ readonly maximumOverflow: number;
215
+ /** Maximum ponded volume in project volume units. */
216
+ readonly maximumPondedVolume: number;
217
+ /** Number of nonconverged routing steps. */
218
+ readonly nonconvergedCount: number;
219
+ /** Model calendar time of maximum inflow, without a timezone. */
220
+ readonly maximumInflowTime: ModelTime;
221
+ /** Model calendar time of maximum overflow, without a timezone. */
222
+ readonly maximumOverflowTime: ModelTime;
223
+ }
224
+ /** Detached storage-only cumulative statistics, read with {@link Node.storageStatistics}. */
225
+ export interface StorageStatistics {
226
+ /** Initial stored volume in project volume units (ft³ or m³). */
227
+ readonly initialVolume: number;
228
+ /** Average reported volume in project volume units; zero before reporting samples exist. */
229
+ readonly averageVolume: number;
230
+ /** Maximum stored volume in project volume units. */
231
+ readonly maximumVolume: number;
232
+ /** Maximum inflow in project flow units. */
233
+ readonly maximumInflow: number;
234
+ /** Cumulative evaporated volume in project volume units. */
235
+ readonly evaporationLosses: number;
236
+ /** Cumulative exfiltrated volume in project volume units. */
237
+ readonly exfiltrationLosses: number;
238
+ /** Model calendar time of maximum volume, without a timezone. */
239
+ readonly maximumVolumeTime: ModelTime;
240
+ }
241
+ /** Detached outfall-only cumulative statistics, read with {@link Node.outfallStatistics}. */
242
+ export interface OutfallStatistics {
243
+ /** Average discharge in project flow units; zero before discharge periods exist. */
244
+ readonly averageFlow: number;
245
+ /** Maximum discharge in project flow units. */
246
+ readonly maximumFlow: number;
247
+ /** Cumulative discharged loads keyed by canonical pollutant ID, in configured load units. */
248
+ readonly pollutantLoads: Readonly<Record<string, number>>;
249
+ /** Number of discharge periods used for the average. */
250
+ readonly periodCount: number;
251
+ }
252
+ /**
253
+ * Detached cumulative statistics from `simulation.nodes.statisticsSnapshot(ids)`.
254
+ * Every column follows {@link objectIds}; values and units match {@link NodeStatistics}.
255
+ */
256
+ export interface NodeStatisticsSnapshot {
257
+ /** Canonical node IDs in selection order. */
258
+ readonly objectIds: readonly string[];
259
+ /** {@inheritDoc NodeStatistics.averageDepth} */
260
+ readonly averageDepth: readonly number[];
261
+ /** {@inheritDoc NodeStatistics.maximumDepth} */
262
+ readonly maximumDepth: readonly number[];
263
+ /** {@inheritDoc NodeStatistics.maximumDepthTime} */
264
+ readonly maximumDepthTime: readonly ModelTime[];
265
+ /** {@inheritDoc NodeStatistics.maximumReportedDepth} */
266
+ readonly maximumReportedDepth: readonly number[];
267
+ /** {@inheritDoc NodeStatistics.floodedVolume} */
268
+ readonly floodedVolume: readonly number[];
269
+ /** {@inheritDoc NodeStatistics.timeFloodedSeconds} */
270
+ readonly timeFloodedSeconds: readonly number[];
271
+ /** {@inheritDoc NodeStatistics.timeSurchargedSeconds} */
272
+ readonly timeSurchargedSeconds: readonly number[];
273
+ /** {@inheritDoc NodeStatistics.timeCourantCriticalSeconds} */
274
+ readonly timeCourantCriticalSeconds: readonly number[];
275
+ /** {@inheritDoc NodeStatistics.totalLateralInflow} */
276
+ readonly totalLateralInflow: readonly number[];
277
+ /** {@inheritDoc NodeStatistics.maximumLateralInflow} */
278
+ readonly maximumLateralInflow: readonly number[];
279
+ /** {@inheritDoc NodeStatistics.maximumInflow} */
280
+ readonly maximumInflow: readonly number[];
281
+ /** {@inheritDoc NodeStatistics.maximumOverflow} */
282
+ readonly maximumOverflow: readonly number[];
283
+ /** {@inheritDoc NodeStatistics.maximumPondedVolume} */
284
+ readonly maximumPondedVolume: readonly number[];
285
+ /** {@inheritDoc NodeStatistics.nonconvergedCount} */
286
+ readonly nonconvergedCount: readonly number[];
287
+ /** {@inheritDoc NodeStatistics.maximumInflowTime} */
288
+ readonly maximumInflowTime: readonly ModelTime[];
289
+ /** {@inheritDoc NodeStatistics.maximumOverflowTime} */
290
+ readonly maximumOverflowTime: readonly ModelTime[];
291
+ }
292
+ /**
293
+ * Pollutant-ID-to-value mapping. Concentration overrides use configured concentration
294
+ * units; external mass fluxes use configured pollutant mass per project time units.
295
+ * Inputs may be sparse. Returned mappings are detached and read-only.
296
+ */
297
+ export type PollutantValues = Readonly<Record<string, number>>;
298
+ export interface NodeOperations {
299
+ nodeConfiguration: {
300
+ args: [string];
301
+ result: NodeConfiguration;
302
+ };
303
+ configureNode: {
304
+ args: [string, NodePatch];
305
+ result: void;
306
+ };
307
+ nodeExternalInflow: {
308
+ args: [string];
309
+ result: number;
310
+ };
311
+ outfallFixedStage: {
312
+ args: [string];
313
+ result: number | null;
314
+ };
315
+ nodeQuality: {
316
+ args: [string];
317
+ result: NodeQuality;
318
+ };
319
+ nodeQualitySnapshot: {
320
+ args: [readonly string[] | undefined];
321
+ result: NodeQualitySnapshot;
322
+ };
323
+ overrideNodePollutantConcentrations: {
324
+ args: [string, PollutantValues];
325
+ result: void;
326
+ };
327
+ nodeExternalPollutantMassFlux: {
328
+ args: [string];
329
+ result: PollutantValues;
330
+ };
331
+ nodeExternalPollutantMassFluxValue: {
332
+ args: [string, string];
333
+ result: number;
334
+ };
335
+ updateNodeExternalPollutantMassFlux: {
336
+ args: [string, PollutantValues, boolean];
337
+ result: void;
338
+ };
339
+ nodeStatistics: {
340
+ args: [string];
341
+ result: NodeStatistics;
342
+ };
343
+ storageStatistics: {
344
+ args: [string];
345
+ result: StorageStatistics;
346
+ };
347
+ outfallStatistics: {
348
+ args: [string];
349
+ result: OutfallStatistics;
350
+ };
351
+ nodeStatisticsSnapshot: {
352
+ args: [readonly string[] | undefined];
353
+ result: NodeStatisticsSnapshot;
354
+ };
355
+ nodeTotalInflowVolume: {
356
+ args: [string];
357
+ result: number;
358
+ };
359
+ }
360
+ /**
361
+ * Owner-bound node handle obtained with `simulation.nodes.get(id)`.
362
+ *
363
+ * The constructor is private. Use {@link NodeConfiguration.kind} to distinguish
364
+ * junctions, storage nodes, outfalls, and dividers; there are no public subtype
365
+ * classes. Reads return detached, frozen records. Mutations require explicit
366
+ * methods, not assignments to those records.
367
+ *
368
+ * Operations reject when the owner is closed or failed, or the requested operation
369
+ * is invalid for its lifecycle state or node kind. Wrong-kind calls do not mutate
370
+ * the model. Read {@link statistics} before ending the run; hydraulic and quality
371
+ * reads remain available in `ended`.
372
+ */
373
+ export declare class Node {
374
+ #private;
375
+ /** Canonical configured node ID. */
376
+ readonly id: string;
377
+ private constructor();
378
+ /**
379
+ * Read current hydraulics in `running`, `complete`, or `ended`.
380
+ * @returns A detached {@link NodeResults} record in project units, not a time series.
381
+ */
382
+ results(): Promise<NodeResults>;
383
+ /**
384
+ * Read common and kind-specific declarations in any healthy owner state.
385
+ * @returns A detached {@link NodeConfiguration}; non-applicable subtype fields are `null`.
386
+ */
387
+ configuration(): Promise<NodeConfiguration>;
388
+ /**
389
+ * Atomically update declarations in `open` or `ended`.
390
+ * An accepted edit in `ended` returns the owner to `open`.
391
+ * @param patch - Sparse {@link NodePatch}. Omitted top-level fields retain their values.
392
+ * @returns Resolves after the complete patch is accepted.
393
+ * @throws Rejects for an invalid patch, wrong node kind, or invalid lifecycle state;
394
+ * no part of a rejected patch is applied.
395
+ * @example
396
+ * ```typescript
397
+ * import type { Node } from "@swmmrs/swmmrs";
398
+ * declare const node: Node;
399
+ * await node.configure({ fullDepth: 4.5, initialDepth: 0.25 });
400
+ * ```
401
+ */
402
+ configure(patch: NodePatch): Promise<void>;
403
+ /**
404
+ * Read the persistent additive API inflow in any healthy owner state.
405
+ * @returns Inflow in project flow units, excluding other inflow sources.
406
+ */
407
+ externalInflow(): Promise<number>;
408
+ /**
409
+ * Set persistent additive API inflow in `open`, `running`, or `ended`.
410
+ * @param flow - Inflow in project flow units. Zero removes the API contribution.
411
+ * @returns Resolves after the forcing is updated.
412
+ */
413
+ setExternalInflow(flow: number): Promise<void>;
414
+ /**
415
+ * Set a persistent fixed-stage override in `open`, `running`, or `ended`.
416
+ * This runtime forcing is separate from {@link NodePatch.boundary}.
417
+ * @param stage - Outfall boundary elevation in project length units (ft or m).
418
+ * @returns Resolves after the forcing is updated.
419
+ * @throws Rejects for a non-outfall node or an invalid stage or lifecycle state.
420
+ */
421
+ setOutfallStage(stage: number): Promise<void>;
422
+ /**
423
+ * Read the effective fixed stage in any healthy owner state; outfalls only.
424
+ * @returns Runtime override if set, otherwise the declared fixed stage, in project
425
+ * length units; `null` when neither supplies a fixed stage.
426
+ * @throws Rejects for a non-outfall node.
427
+ */
428
+ fixedStage(): Promise<number | null>;
429
+ /**
430
+ * Read current pollutant concentrations in `running`, `complete`, or `ended`.
431
+ * @returns Detached {@link NodeQuality} arrays aligned with their pollutant IDs.
432
+ */
433
+ quality(): Promise<NodeQuality>;
434
+ /**
435
+ * Queue concentration overrides for the next quality-routing step; requires `running`.
436
+ * The override expires after that step rather than becoming a persistent forcing.
437
+ * @param values - Sparse pollutant-ID map of nonnegative concentrations in each
438
+ * pollutant's configured concentration units.
439
+ * @returns Resolves after the overrides are queued.
440
+ * @throws Rejects invalid IDs, concentrations, or lifecycle states.
441
+ */
442
+ overridePollutantConcentrations(values: PollutantValues): Promise<void>;
443
+ /**
444
+ * Read persistent external pollutant mass fluxes in `open`, `running`, or `ended`.
445
+ * @returns A detached {@link PollutantValues} map in configured pollutant mass-flux units.
446
+ */
447
+ externalPollutantMassFlux(): Promise<PollutantValues>;
448
+ /**
449
+ * Read one persistent external mass flux in `open`, `running`, or `ended`.
450
+ * @param pollutantId - Configured pollutant ID.
451
+ * @returns The pollutant's external mass flux in its configured mass-flux units.
452
+ * @throws Rejects an unknown pollutant ID or invalid lifecycle state.
453
+ */
454
+ externalPollutantMassFluxValue(pollutantId: string): Promise<number>;
455
+ /**
456
+ * Update persistent external pollutant mass fluxes in `open`, `running`, or `ended`.
457
+ * @param values - Sparse pollutant-ID map in configured pollutant mass-flux units.
458
+ * @param replace - Defaults to `false`: merge supplied IDs. With `true`, replace
459
+ * the complete mapping and reset omitted pollutants to zero.
460
+ * @returns Resolves after the atomic update.
461
+ * @throws Rejects invalid pollutant IDs, values, or lifecycle states.
462
+ */
463
+ updateExternalPollutantMassFlux(values: PollutantValues, replace?: boolean): Promise<void>;
464
+ /**
465
+ * Reset all persistent external pollutant mass fluxes to zero.
466
+ * Requires `open`, `running`, or `ended`; equivalent to
467
+ * `updateExternalPollutantMassFlux({}, true)`.
468
+ * @returns Resolves after the complete mapping is cleared.
469
+ */
470
+ clearExternalPollutantMassFlux(): Promise<void>;
471
+ /**
472
+ * Read cumulative node statistics in `running` or `complete`, before ending the run.
473
+ * @returns A detached {@link NodeStatistics} record for the current run.
474
+ */
475
+ statistics(): Promise<NodeStatistics>;
476
+ /**
477
+ * Read storage-only statistics in `running` or `complete`.
478
+ * @returns A detached {@link StorageStatistics} record for the current run.
479
+ * @throws Rejects for a non-storage node or invalid lifecycle state.
480
+ */
481
+ storageStatistics(): Promise<StorageStatistics>;
482
+ /**
483
+ * Read outfall-only statistics in `running` or `complete`.
484
+ * @returns A detached {@link OutfallStatistics} record for the current run.
485
+ * @throws Rejects for a non-outfall node or invalid lifecycle state.
486
+ */
487
+ outfallStatistics(): Promise<OutfallStatistics>;
488
+ /**
489
+ * Read cumulative total inflow volume in `running` or `complete`.
490
+ * @returns Volume in project volume units (ft³ or m³), not a flow rate.
491
+ */
492
+ totalInflowVolume(): Promise<number>;
493
+ }
494
+ //# sourceMappingURL=nodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nodes.d.ts","sourceRoot":"","sources":["../../../src/swmmrs/objects/nodes.ts"],"names":[],"mappings":"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"}