@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,412 @@
1
+ import type { ModelTime, NodeKind, LinkKind } from "./enums.js";
2
+ import type { FileContents } from "./types.js";
3
+ /** Supported result families in a binary output file. */
4
+ export type ResultElementType = "subcatchment" | "node" | "link" | "system";
5
+ /** Concentration units recorded for one pollutant. */
6
+ export type ConcentrationUnits = "milligrams_per_liter" | "micrograms_per_liter" | "counts_per_liter";
7
+ /** Flow units recorded in an output header. */
8
+ export type OutputFlowUnits = "cfs" | "gpm" | "mgd" | "cms" | "lps" | "mld";
9
+ /** Unit system inferred from recognized output flow units. */
10
+ export type OutputUnitSystem = "us" | "si";
11
+ /** Preserve one unknown signed 32-bit categorical code. */
12
+ export interface UnknownCode {
13
+ /** Unrecognized signed 32-bit value, retained without interpretation. */
14
+ readonly code: number;
15
+ }
16
+ /** Select one unknown result attribute by its stored signed code. */
17
+ export interface ResultAttributeCode {
18
+ /** Stored signed 32-bit result code; must be present in the selected family schema. */
19
+ readonly code: number;
20
+ }
21
+ /** Select one pollutant column by index, exact text, bytes, or metadata name. */
22
+ export interface PollutantAttribute {
23
+ /** Exact configured output pollutant selector; not supported for system results. */
24
+ readonly selector: OutputElementSelector;
25
+ }
26
+ /** Known subcatchment columns. Rainfall/infiltration use in/h or mm/h; evaporation uses in/day or mm/day; snow depth uses in or mm; runoff and groundwater outflow use header flow units; groundwater elevation uses ft or m; soil moisture is a fraction. */
27
+ export type SubcatchmentResultAttribute = "rainfall" | "snow_depth" | "evap_loss" | "infil_loss" | "runoff_rate" | "gw_outflow_rate" | "gw_table_elev" | "soil_moisture";
28
+ /** Known node columns. Depth/head use ft or m; ponded volume uses ft³ or m³; lateral/total inflow and flooding losses use header flow units. */
29
+ export type NodeResultAttribute = "invert_depth" | "hydraulic_head" | "ponded_volume" | "lateral_inflow" | "total_inflow" | "flooding_losses";
30
+ /** Known link columns. Flow uses header flow units; depth uses ft or m; velocity uses ft/s or m/s; volume uses ft³ or m³; capacity is dimensionless. */
31
+ export type LinkResultAttribute = "flow_rate" | "flow_depth" | "flow_velocity" | "flow_volume" | "capacity";
32
+ /** Known system columns. Temperature uses °F or °C; rainfall and `evap_infil_loss` use in/h or mm/h; `evap_rate` and `ptnl_evap_rate` use in/day or mm/day; snow depth uses in or mm; stored volume uses ft³ or m³; runoff and inflow/outflow/loss columns use header flow units. */
33
+ export type SystemResultAttribute = "air_temp" | "rainfall" | "snow_depth" | "evap_infil_loss" | "runoff_flow" | "dry_weather_inflow" | "gw_inflow" | "rdii_inflow" | "direct_inflow" | "total_lateral_inflow" | "flood_losses" | "outfall_flows" | "volume_stored" | "evap_rate" | "ptnl_evap_rate";
34
+ /** One subcatchment schema column, including pollutant and unknown codes. */
35
+ export type SubcatchmentSchemaEntry = SubcatchmentResultAttribute | PollutantAttribute | ResultAttributeCode;
36
+ /** One node schema column, including pollutant and unknown codes. */
37
+ export type NodeSchemaEntry = NodeResultAttribute | PollutantAttribute | ResultAttributeCode;
38
+ /** One link schema column, including pollutant and unknown codes. */
39
+ export type LinkSchemaEntry = LinkResultAttribute | PollutantAttribute | ResultAttributeCode;
40
+ /** One system schema column; system results have no pollutant columns. */
41
+ export type SystemSchemaEntry = SystemResultAttribute | ResultAttributeCode;
42
+ /** Result-column selector; the attribute must belong to the selected element family. */
43
+ export type OutputAttribute = SubcatchmentSchemaEntry | NodeSchemaEntry | LinkSchemaEntry | SystemSchemaEntry;
44
+ /** Zero-based integer index or exact stored name. Text is UTF-8 encoded; byte/name comparisons are case-sensitive, unlike Simulation collection lookups. Missing or ambiguous names reject. */
45
+ export type OutputElementSelector = number | string | Uint8Array | OutputName;
46
+ /** Ordered family, element, and result-attribute selection. */
47
+ export interface SeriesSelection {
48
+ /** Result family whose schema is queried. */
49
+ readonly elementType: ResultElementType;
50
+ /** Required element selector for object families; must be null for system results. */
51
+ readonly element: OutputElementSelector | null;
52
+ /** Family-compatible built-in attribute, pollutant selector, or stored result code. */
53
+ readonly attribute: OutputAttribute;
54
+ }
55
+ /** Lossless stored output name, retaining bytes even when UTF-8 decoding fails. */
56
+ export declare class OutputName {
57
+ #private;
58
+ /** Decoded UTF-8 text, or null for invalid UTF-8. A leading byte-order mark is preserved. */
59
+ readonly text: string | null;
60
+ /** Copy an exact stored name byte sequence.
61
+ * @param raw - Byte values copied into owned storage.
62
+ */
63
+ constructor(raw: ArrayLike<number>);
64
+ /** Return a defensive copy of the exact stored name bytes. */
65
+ get raw(): Uint8Array;
66
+ }
67
+ /** Finalized status code, or null when no output trailer was present. */
68
+ export interface RunStatus {
69
+ /** Trailer status code, or null for incomplete output without a trailer. */
70
+ readonly code: number | null;
71
+ /** Whether a valid finalized trailer was present. */
72
+ readonly isFinalized: boolean;
73
+ /** Whether the finalized status code is zero. */
74
+ readonly isSuccess: boolean;
75
+ }
76
+ /** Fixed report schedule and available complete-period count. */
77
+ export declare class ReportTiming {
78
+ /** Nominal schedule origin in SWMM serial days, not an epoch-millisecond timestamp. */
79
+ readonly reportScheduleOrigin: number;
80
+ /** Fixed interval between report periods in seconds. */
81
+ readonly reportStepSeconds: number;
82
+ /** Number of available complete periods. */
83
+ readonly periodCount: number;
84
+ /** Construct report timing, normally obtained from reader metadata.
85
+ * @param reportScheduleOrigin - SWMM serial-day schedule origin.
86
+ * @param reportStepSeconds - Report interval in seconds.
87
+ * @param periodCount - Available complete-period count.
88
+ */
89
+ constructor(reportScheduleOrigin: number, reportStepSeconds: number, periodCount: number);
90
+ /** Return the rounded timezone-free nominal date, not the exact stored serial-day value.
91
+ * @param period - Zero-based integer period index; period zero is one report step after the origin.
92
+ * @returns Nominal date, or null if the integer is outside the available range.
93
+ * @throws `TypeError` when the index is not an integer.
94
+ */
95
+ nominalDate(period: number): ModelTime | null;
96
+ }
97
+ /** Stored subcatchment identity and static area. */
98
+ export interface SubcatchmentMetadata {
99
+ /** Zero-based stored subcatchment index. */
100
+ readonly index: number;
101
+ /** Exact stored name. */
102
+ readonly name: OutputName;
103
+ /** Stored area in acres or hectares, according to header units. */
104
+ readonly area: number;
105
+ }
106
+ /** Stored node identity and static properties. */
107
+ export interface NodeMetadata {
108
+ /** Zero-based stored node index. */
109
+ readonly index: number;
110
+ /** Exact stored name. */
111
+ readonly name: OutputName;
112
+ /** Recognized node subtype or unrecognized stored code. */
113
+ readonly kind: NodeKind | UnknownCode;
114
+ /** Invert elevation in ft or m, according to header units. */
115
+ readonly invertElevation: number;
116
+ /** Maximum depth in ft or m. */
117
+ readonly maximumDepth: number;
118
+ }
119
+ /** Stored link identity and static properties. */
120
+ export interface LinkMetadata {
121
+ /** Zero-based stored link index. */
122
+ readonly index: number;
123
+ /** Exact stored name. */
124
+ readonly name: OutputName;
125
+ /** Recognized link subtype or unrecognized stored code. */
126
+ readonly kind: LinkKind | UnknownCode;
127
+ /** Inlet offset in ft or m, according to header units. */
128
+ readonly inletOffset: number;
129
+ /** Outlet offset in ft or m. */
130
+ readonly outletOffset: number;
131
+ /** Maximum depth in ft or m. */
132
+ readonly maximumDepth: number;
133
+ /** Stored link length in ft or m. */
134
+ readonly length: number;
135
+ }
136
+ /** Stored pollutant identity, name, and concentration units. */
137
+ export interface PollutantMetadata {
138
+ /** Zero-based stored pollutant index. */
139
+ readonly index: number;
140
+ /** Exact stored name. */
141
+ readonly name: OutputName;
142
+ /** Recognized concentration units or an unrecognized stored code. */
143
+ readonly concentrationUnits: ConcentrationUnits | UnknownCode;
144
+ }
145
+ /** Ordered physical result schemas for every output family. */
146
+ export interface ResultSchema {
147
+ /** Subcatchment columns in stored order. */
148
+ readonly subcatchment: readonly SubcatchmentSchemaEntry[];
149
+ /** Node columns in stored order. */
150
+ readonly node: readonly NodeSchemaEntry[];
151
+ /** Link columns in stored order. */
152
+ readonly link: readonly LinkSchemaEntry[];
153
+ /** System columns in stored order. */
154
+ readonly system: readonly SystemSchemaEntry[];
155
+ }
156
+ /** Immutable metadata parsed from one output byte buffer. */
157
+ export interface OutputMetadata {
158
+ /** Stored numeric solver release identifier. */
159
+ readonly solverRelease: number;
160
+ /** Trailer finalization and success status. */
161
+ readonly runStatus: RunStatus;
162
+ /** Recognized flow units or an unrecognized header code. */
163
+ readonly flowUnits: OutputFlowUnits | UnknownCode;
164
+ /** Unit system inferred from recognized flow units; null otherwise. */
165
+ readonly unitSystem: OutputUnitSystem | null;
166
+ /** Validated nominal report schedule and complete-period count. */
167
+ readonly reportTiming: ReportTiming;
168
+ /** Subcatchment metadata in stored order. */
169
+ readonly subcatchments: readonly SubcatchmentMetadata[];
170
+ /** Node metadata in stored order. */
171
+ readonly nodes: readonly NodeMetadata[];
172
+ /** Link metadata in stored order. */
173
+ readonly links: readonly LinkMetadata[];
174
+ /** Pollutant metadata in stored order. */
175
+ readonly pollutants: readonly PollutantMetadata[];
176
+ /** Physical column schemas, including unknown codes. */
177
+ readonly resultSchema: ResultSchema;
178
+ }
179
+ /** Immutable selection-labelled values aligned to a bulk result axis. */
180
+ export interface OutputValueSeries {
181
+ /** Resolved selection, with numeric element/pollutant indices. */
182
+ readonly selection: SeriesSelection;
183
+ /** Values aligned to the enclosing result's time axis, in stored output units. */
184
+ readonly values: readonly number[];
185
+ }
186
+ /** Immutable values and nominal dates for one selected series. */
187
+ export interface OutputTimeSeries {
188
+ /** Resolved selection, with numeric element/pollutant indices. */
189
+ readonly selection: SeriesSelection;
190
+ /** Rounded nominal dates for the selected period range. */
191
+ readonly times: readonly ModelTime[];
192
+ /** Values aligned to `times`, in stored output units. */
193
+ readonly values: readonly number[];
194
+ }
195
+ /** Immutable column-oriented result for an ordered bulk request. */
196
+ export declare class BulkSeriesResult {
197
+ /** Shared rounded nominal dates for the selected period range. */
198
+ readonly times: readonly ModelTime[];
199
+ /** Columns in requested selection order, including duplicates. */
200
+ readonly series: readonly OutputValueSeries[];
201
+ /** Copy the outer axis and column arrays; normally constructed by the reader with immutable, aligned columns.
202
+ * @param times - Shared nominal date axis.
203
+ * @param series - Selection-labelled columns aligned to that axis.
204
+ */
205
+ constructor(times: readonly ModelTime[], series: readonly OutputValueSeries[]);
206
+ /** Read one value using offsets local to this result, not absolute file periods.
207
+ * @param periodOffset - Zero-based offset into `times`.
208
+ * @param selectionOffset - Zero-based offset into `series`.
209
+ * @returns Selected value in stored output units.
210
+ * @throws `RangeError` if either offset is non-integral or out of range.
211
+ */
212
+ value(periodOffset: number, selectionOffset: number): number;
213
+ }
214
+ /** Range and I/O strategy for output queries. Bounds are half-open. */
215
+ export interface OutputReadOptions {
216
+ /** Inclusive integer period offset or timezone-free date; null/omission starts at zero. Dates resolve to the first nominal period at or after the bound. */
217
+ readonly start?: number | ModelTime | null;
218
+ /** Exclusive integer period offset or timezone-free date; null/omission ends at periodCount. Integer bounds must lie within 0…periodCount; reversed ranges reject. */
219
+ readonly end?: number | ModelTime | null;
220
+ /** Defaults to false (whole-period reads). True uses selective adjacent-run reads to reduce working memory without changing values. */
221
+ readonly lowMemory?: boolean;
222
+ }
223
+ /** Alias for callers that only need period/date bounds. */
224
+ export type OutputRange = Omit<OutputReadOptions, "lowMemory">;
225
+ /** Worker override for one standalone reader. */
226
+ export interface OutputReaderOptions {
227
+ /** Override the bundled worker asset location; resolved by the runtime when opening the reader. */
228
+ readonly workerUrl?: string | URL;
229
+ }
230
+ /** Structured output-reader failure preserved across the worker boundary. */
231
+ export declare class OutputError extends Error {
232
+ /** Machine-readable failure category, such as `invalid_period_range`, `element_not_found`, or `ambiguous_element`. */
233
+ readonly category: string;
234
+ /** Failing reader operation when available. */
235
+ readonly operation: string | undefined;
236
+ /** Construct a structured reader error.
237
+ * @param category - Failure classification.
238
+ * @param message - Human-readable diagnostic.
239
+ * @param operation - Optional operation context; omitted when unavailable.
240
+ */
241
+ constructor(category: string, message: string, operation?: string);
242
+ }
243
+ type Operation<A extends unknown[], R> = {
244
+ args: A;
245
+ result: R;
246
+ };
247
+ type NativeSelection = [ResultElementType, number, number];
248
+ type NativeAttribute = string | {
249
+ readonly pollutant: number;
250
+ } | {
251
+ readonly code: number;
252
+ };
253
+ type NativeName = {
254
+ readonly raw: readonly number[];
255
+ readonly text: string | null;
256
+ };
257
+ type NativeMetadataPayload = {
258
+ readonly solverRelease: number;
259
+ readonly runStatus: {
260
+ readonly code: number | null;
261
+ readonly isFinalized: boolean;
262
+ readonly isSuccess: boolean;
263
+ };
264
+ readonly flowUnits: string | {
265
+ readonly code: number;
266
+ };
267
+ readonly unitSystem: "us" | "si" | null;
268
+ readonly reportTiming: {
269
+ readonly reportScheduleOrigin: number;
270
+ readonly reportStepSeconds: number;
271
+ readonly periodCount: number;
272
+ };
273
+ readonly subcatchments: readonly {
274
+ readonly index: number;
275
+ readonly name: NativeName;
276
+ readonly area: number;
277
+ }[];
278
+ readonly nodes: readonly {
279
+ readonly index: number;
280
+ readonly name: NativeName;
281
+ readonly kind: string | {
282
+ readonly code: number;
283
+ };
284
+ readonly invertElevation: number;
285
+ readonly maximumDepth: number;
286
+ }[];
287
+ readonly links: readonly {
288
+ readonly index: number;
289
+ readonly name: NativeName;
290
+ readonly kind: string | {
291
+ readonly code: number;
292
+ };
293
+ readonly inletOffset: number;
294
+ readonly outletOffset: number;
295
+ readonly maximumDepth: number;
296
+ readonly length: number;
297
+ }[];
298
+ readonly pollutants: readonly {
299
+ readonly index: number;
300
+ readonly name: NativeName;
301
+ readonly concentrationUnits: string | {
302
+ readonly code: number;
303
+ };
304
+ }[];
305
+ readonly resultSchema: {
306
+ readonly subcatchment: readonly NativeAttribute[];
307
+ readonly node: readonly NativeAttribute[];
308
+ readonly link: readonly NativeAttribute[];
309
+ readonly system: readonly NativeAttribute[];
310
+ };
311
+ };
312
+ type NativeBulkPayload = {
313
+ readonly times: readonly number[];
314
+ readonly series: readonly {
315
+ readonly selection: {
316
+ readonly elementType: ResultElementType;
317
+ readonly element: number | null;
318
+ readonly attribute: NativeAttribute;
319
+ };
320
+ readonly values: readonly number[];
321
+ }[];
322
+ };
323
+ /** Operations consumed by the standalone output worker. Main extends the shared worker contract with these entries. */
324
+ export interface OutputOperations {
325
+ openOutput: Operation<[Uint8Array], NativeMetadataPayload>;
326
+ outputMetadata: Operation<[], NativeMetadataPayload>;
327
+ outputReadBulkSeries: Operation<[readonly NativeSelection[], number, number], NativeBulkPayload>;
328
+ outputReadBulkSeriesByPeriod: Operation<[readonly NativeSelection[], number, number], NativeBulkPayload>;
329
+ outputReadStoredDates: Operation<[number, number], readonly number[]>;
330
+ outputSubcatchmentSeries: Operation<[number, number, number, number], NativeBulkPayload>;
331
+ outputNodeSeries: Operation<[number, number, number, number], NativeBulkPayload>;
332
+ outputLinkSeries: Operation<[number, number, number, number], NativeBulkPayload>;
333
+ outputSystemSeries: Operation<[number, number, number], NativeBulkPayload>;
334
+ closeOutput: Operation<[], void>;
335
+ }
336
+ /** Byte-owned standalone output reader with its own worker, independent of Simulation. Always await `close()`; copied results and metadata remain usable afterward. */
337
+ export declare class OutputReader implements AsyncDisposable {
338
+ #private;
339
+ /** Immutable parsed metadata, available without another worker query. */
340
+ readonly metadata: OutputMetadata;
341
+ private constructor();
342
+ /** Open finalized or incomplete SWMM output in an independent worker.
343
+ * @param input - File contents, never a host path. In Node, pass bytes from `fs.readFile`.
344
+ * @param options - Worker asset override; defaults to the bundled worker.
345
+ * @returns Reader with immutable validated metadata and available complete periods.
346
+ * @throws {@link OutputError} for invalid output; a worker created during a failed open is stopped.
347
+ */
348
+ static open(input: FileContents, options?: OutputReaderOptions): Promise<OutputReader>;
349
+ /** True when the opened bytes contained a valid finalized trailer. */
350
+ get isFinalized(): boolean;
351
+ /** Lazily derive the shared nominal report-date axis from validated metadata. */
352
+ get times(): readonly ModelTime[];
353
+ /** Read ordered selections; duplicates remain repeated columns and empty dimensions are preserved.
354
+ * @param selections - Family-compatible element/attribute selections in desired column order.
355
+ * @param options - Half-open range and I/O strategy; defaults to all periods and whole-period reads.
356
+ * @returns Detached immutable columns sharing one nominal date axis.
357
+ * @throws {@link OutputError} for missing/ambiguous elements, absent attributes, or invalid ranges; TypeError/RangeError for malformed selectors. Reads after close reject with LifecycleError.
358
+ * @example
359
+ * ```typescript
360
+ * import type { OutputReader } from "@swmmrs/swmmrs";
361
+ * declare const reader: OutputReader;
362
+ * const result = await reader.readBulkSeries([
363
+ * { elementType: "node", element: "J1", attribute: "hydraulic_head" },
364
+ * ], { start: 0, end: 24, lowMemory: true });
365
+ * console.log(result.times, result.series[0]?.values);
366
+ * ```
367
+ */
368
+ readBulkSeries(selections: readonly SeriesSelection[], options?: OutputReadOptions): Promise<BulkSeriesResult>;
369
+ /** Read one subcatchment column with the validation and lifecycle contract of `readBulkSeries`.
370
+ * @param element - Zero-based index or exact stored name selector.
371
+ * @param attribute - Subcatchment attribute, pollutant, or stored result code.
372
+ * @param options - Half-open range and I/O strategy; defaults to all periods and whole-period reads.
373
+ * @returns Immutable selection, nominal dates, and aligned values.
374
+ */
375
+ subcatchmentSeries(element: OutputElementSelector, attribute: SubcatchmentResultAttribute | PollutantAttribute | ResultAttributeCode, options?: OutputReadOptions): Promise<OutputTimeSeries>;
376
+ /** Read one node column with the validation and lifecycle contract of `readBulkSeries`.
377
+ * @param element - Zero-based index or exact stored name selector.
378
+ * @param attribute - Node attribute, pollutant, or stored result code.
379
+ * @param options - Half-open range and I/O strategy; defaults to all periods and whole-period reads.
380
+ * @returns Immutable selection, nominal dates, and aligned values.
381
+ */
382
+ nodeSeries(element: OutputElementSelector, attribute: NodeResultAttribute | PollutantAttribute | ResultAttributeCode, options?: OutputReadOptions): Promise<OutputTimeSeries>;
383
+ /** Read one link column with the validation and lifecycle contract of `readBulkSeries`.
384
+ * @param element - Zero-based index or exact stored name selector.
385
+ * @param attribute - Link attribute, pollutant, or stored result code.
386
+ * @param options - Half-open range and I/O strategy; defaults to all periods and whole-period reads.
387
+ * @returns Immutable selection, nominal dates, and aligned values.
388
+ */
389
+ linkSeries(element: OutputElementSelector, attribute: LinkResultAttribute | PollutantAttribute | ResultAttributeCode, options?: OutputReadOptions): Promise<OutputTimeSeries>;
390
+ /** Read one system column with the validation and lifecycle contract of `readBulkSeries`.
391
+ * @param attribute - System attribute or stored result code; pollutants are not supported.
392
+ * @param options - Half-open range and I/O strategy; defaults to all periods and whole-period reads.
393
+ * @returns Immutable selection with null element, nominal dates, and aligned values.
394
+ */
395
+ systemSeries(attribute: SystemResultAttribute | ResultAttributeCode, options?: OutputReadOptions): Promise<OutputTimeSeries>;
396
+ /** Read exact stored report dates rather than the rounded nominal date axis; requires an open reader.
397
+ * @param options - Half-open period/date bounds; defaults to all complete periods.
398
+ * @returns Immutable SWMM serial-day values read from the output bytes.
399
+ * @throws {@link OutputError} for invalid ranges or unreadable output; LifecycleError after close.
400
+ */
401
+ readStoredDates(options?: OutputRange): Promise<readonly number[]>;
402
+ /** Release the reader worker. Repeated calls share one cleanup request; future reads reject.
403
+ * @returns Resolves after cleanup. Previously copied metadata/results remain usable.
404
+ */
405
+ close(): Promise<void>;
406
+ /** Delegate asynchronous disposal to `close()`.
407
+ * @returns Reader cleanup completion.
408
+ */
409
+ [Symbol.asyncDispose](): Promise<void>;
410
+ }
411
+ export {};
412
+ //# sourceMappingURL=output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/swmmrs/output.ts"],"names":[],"mappings":"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"}