@tellegen/engine 0.1.1 → 0.3.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 (46) hide show
  1. package/README.md +50 -6
  2. package/dist/generated/contracts.d.ts +35 -17
  3. package/dist/generated/contracts.d.ts.map +1 -1
  4. package/dist/generated/contracts.js +3 -3
  5. package/dist/generated/study-contracts.d.ts +426 -0
  6. package/dist/generated/study-contracts.d.ts.map +1 -0
  7. package/dist/generated/study-contracts.js +4 -0
  8. package/dist/generated/study-contracts.js.map +1 -0
  9. package/dist/generated/study-schema.d.ts +2 -0
  10. package/dist/generated/study-schema.d.ts.map +1 -0
  11. package/dist/generated/study-schema.js +3 -0
  12. package/dist/generated/study-schema.js.map +1 -0
  13. package/dist/host.d.ts +12 -0
  14. package/dist/host.d.ts.map +1 -1
  15. package/dist/host.js +71 -17
  16. package/dist/host.js.map +1 -1
  17. package/dist/index.d.ts +360 -96
  18. package/dist/index.d.ts.map +1 -1
  19. package/dist/index.js +407 -89
  20. package/dist/index.js.map +1 -1
  21. package/dist/input-limit.d.ts +8 -0
  22. package/dist/input-limit.d.ts.map +1 -0
  23. package/dist/input-limit.js +14 -0
  24. package/dist/input-limit.js.map +1 -0
  25. package/dist/module.d.ts +1 -0
  26. package/dist/module.d.ts.map +1 -1
  27. package/dist/module.js.map +1 -1
  28. package/dist/protocol.d.ts +105 -20
  29. package/dist/protocol.d.ts.map +1 -1
  30. package/dist/protocol.js +67 -18
  31. package/dist/protocol.js.map +1 -1
  32. package/dist/study-document.d.ts +46 -0
  33. package/dist/study-document.d.ts.map +1 -0
  34. package/dist/study-document.js +183 -0
  35. package/dist/study-document.js.map +1 -0
  36. package/dist/study-document.test.d.ts +2 -0
  37. package/dist/study-document.test.d.ts.map +1 -0
  38. package/dist/study-document.test.js +119 -0
  39. package/dist/study-document.test.js.map +1 -0
  40. package/dist/wasm-pkg/tellegen.d.ts +191 -55
  41. package/dist/wasm-pkg/tellegen.js +754 -97
  42. package/dist/wasm-pkg/tellegen_bg.wasm +0 -0
  43. package/dist/wasm-pkg/tellegen_bg.wasm.d.ts +30 -6
  44. package/dist/worker.js +27 -3
  45. package/dist/worker.js.map +1 -1
  46. package/package.json +26 -4
@@ -2,17 +2,47 @@
2
2
  /* eslint-disable */
3
3
 
4
4
  /**
5
- * A build-once handle over the engine, exported to JS. Construct once per case (the
6
- * network is parsed and the model built here); then [`replace_edits`](Study::replace_edits)
5
+ * A retained fixed-point current-injection session. The prepared network,
6
+ * sparse LU, and last converged voltage remain in this WASM object across
7
+ * load edits.
8
+ */
9
+ export class McPfSession {
10
+ free(): void;
11
+ [Symbol.dispose](): void;
12
+ /**
13
+ * Materialize the current edited input as PowerIO IR.
14
+ */
15
+ input_module(): string;
16
+ /**
17
+ * Editable load branches with base and current P/Q values.
18
+ */
19
+ load_branches(): string;
20
+ constructor(module_json: string, options_json: string);
21
+ /**
22
+ * Replace the absolute branch-power edit state and solve with the retained
23
+ * factorization and previous converged voltage.
24
+ */
25
+ replace_load_powers(edits_json: string): string;
26
+ /**
27
+ * The current complete solver result.
28
+ */
29
+ result(): string;
30
+ /**
31
+ * Save the current edited point and result without re-solving.
32
+ */
33
+ snapshot(study_id: string, study_title: string): string;
34
+ }
35
+
36
+ /**
37
+ * A retained handle over the engine, exported to JS. Construct once per PowerIO module;
38
+ * then [`replace_edits`](Study::replace_edits)
7
39
  * solves exactly at an absolute edit state and [`preview_replacement`](Study::preview_replacement)
8
- * returns a first-order linearization toward an absolute edit state — neither re-parses
9
- * the network, unlike `solve_json` which rebuilds it on every call. This is
10
- * the path a reactive drag should use.
40
+ * returns a first order linearization toward an absolute edit state.
11
41
  *
12
42
  * Arguments and results are JSON in the engine's `Study` shapes: edits are a
13
43
  * `NetworkEdit[]` (e.g. `[{"kind":"add_load","bus":2,"p_mw":50}]`; the element key
14
- * also accepts the powerio row uid string `ingest_case` stamps, e.g.
15
- * `"bus":"buses:1"`), `preview` watches an
44
+ * also accepts a powerio row uid string when the source format carries uids,
45
+ * e.g. `"bus":"buses:1"`), `preview` watches an
16
46
  * `Operand[]` (e.g. `[{"Price":"Active"}]`) and returns a `Preview`. `commit` takes the
17
47
  * edits plus a `SensRequest[]` of watched cells and returns `{ solution, iterations,
18
48
  * sensitivities }` — the committed [`SolveResponse`] plus the requested ∂operand/∂param
@@ -25,7 +55,7 @@ export class Study {
25
55
  /**
26
56
  * Apply a geographic layer (a canonical `.geo.json` from [`parse_geo`] or
27
57
  * [`apply_layout`]) onto this study's base network, so a later
28
- * [`save_package`](Study::save_package) or export carries the coordinates
58
+ * [`save_module`](Study::save_module) or export carries the coordinates
29
59
  * on screen. Locations are metadata the model never reads; nothing
30
60
  * re-solves. Returns the apply report JSON.
31
61
  */
@@ -40,16 +70,34 @@ export class Study {
40
70
  * columns so the UI renders the ∂LMP/∂d column without a second solve.
41
71
  */
42
72
  commit(edits_json: string, sensitivities_json: string): string;
73
+ /**
74
+ * Export the committed operating point to a powerio `format` (`matpower`,
75
+ * `psse`, ...). Returns `{ text, diagnostics, format,
76
+ * extension }` as JSON: the serialized case, this output operation's
77
+ * structured diagnostics, and the format token and file extension.
78
+ */
79
+ export(format: string): string;
43
80
  /**
44
81
  * The formulation tag (`"dcopf"` / `"acpf"`).
45
82
  */
46
83
  formulation(): string;
47
84
  /**
48
- * Build a study over `network_json` for `formulation` (`"dcopf"` / `"acpf"`, and —
85
+ * Build a study over `module_json` for `formulation` (`"dcopf"` / `"acpf"`, and —
49
86
  * in a build that includes them — `"socwr"` / `"acopf"`), solving the base case.
50
- * Errors on an unknown or not-built formulation.
87
+ * Bare model JSON and unknown or unavailable formulations are rejected.
51
88
  */
52
- constructor(network_json: string, formulation: string);
89
+ constructor(module_json: string, formulation: string);
90
+ /**
91
+ * Run a bounded differentiable planning search over the committed
92
+ * operating point: the implicit gradient of the serializable outer
93
+ * objective through the exact DC OPF KKT orders capacity trials
94
+ * whose every step is verified by an exact re-solve. Read only — the
95
+ * committed case, edits, and revision are untouched. `spec_json` is a
96
+ * [`tellegen::plan::CapacityPlanSpec`]; the returned JSON is the complete
97
+ * [`tellegen::plan::CapacityPlanOutcome`] trace with the unapplied
98
+ * proposal. A non-DC formulation returns a typed error.
99
+ */
100
+ plan(spec_json: string): string;
53
101
  /**
54
102
  * First-order preview of `edits_json` (a `NetworkEdit[]`) for the `watched_json`
55
103
  * operands (an `Operand[]`), at the committed point, without re-solving. Returns the
@@ -69,12 +117,21 @@ export class Study {
69
117
  */
70
118
  replace_edits(edits_json: string, sensitivities_json: string): string;
71
119
  /**
72
- * Serialize this study as a `.pio.json` package: the base network is the payload,
73
- * the edit log is the study block (one commit per `commit` call, keyed by row uid),
74
- * and the formulation and solve options ride under `study.app["tellegen"]`. Returns
75
- * the package JSON, ready to download or hand to [`export_study`].
120
+ * Serialize the exact problem instance, including its inner objective and constraints.
121
+ */
122
+ save_instance_module(): string;
123
+ /**
124
+ * Serialize the committed operating point as a stored PowerIO module:
125
+ * the materialized network with one descriptive `Edit` history entry per
126
+ * committed edit, ready to download as `.pio.json`. Any PowerIO reader
127
+ * understands the file; reloading it starts a fresh session.
76
128
  */
77
- save_package(): string;
129
+ save_module(): string;
130
+ /**
131
+ * Save the committed exact DC OPF result as a PowerIO solution module.
132
+ * The embedded instance contains the materialized case that was solved.
133
+ */
134
+ save_solution_module(): string;
78
135
  /**
79
136
  * The most recent committed solution as `SolveResponse` JSON.
80
137
  */
@@ -87,7 +144,7 @@ export class Study {
87
144
  * `SubNum` extras key. Returns the refreshed `ingest_case` payload plus a
88
145
  * `report`; errors when no bus joined.
89
146
  */
90
- export function apply_display_geo(network_json: string, bytes: Uint8Array): string;
147
+ export function apply_display_geo(module_json: string, bytes: Uint8Array): string;
91
148
 
92
149
  /**
93
150
  * Apply a [`parse_geo`] layer onto a case network: matched bus points land in
@@ -96,7 +153,7 @@ export function apply_display_geo(network_json: string, bytes: Uint8Array): stri
96
153
  * the refreshed `ingest_case` payload plus a `report` of matched/unmatched
97
154
  * counts; errors when nothing matched.
98
155
  */
99
- export function apply_geo(network_json: string, layer_geojson: string): string;
156
+ export function apply_geo(module_json: string, layer_geojson: string): string;
100
157
 
101
158
  /**
102
159
  * Stamp a computed layout (bus id => `[lon, lat]`) onto a case network with
@@ -104,7 +161,12 @@ export function apply_geo(network_json: string, layer_geojson: string): string;
104
161
  * `ingest_case` payload plus `layer`, the stamped layout as a canonical
105
162
  * `.geo.json` document.
106
163
  */
107
- export function apply_layout(network_json: string, coords_json: string, kind: string): string;
164
+ export function apply_layout(module_json: string, coords_json: string, kind: string): string;
165
+
166
+ /**
167
+ * Attach geographic or drawing positions to a saved multiconductor result.
168
+ */
169
+ export function apply_mc_study_geo(snapshot_json: string, layer_geojson: string): string;
108
170
 
109
171
  /**
110
172
  * The capability matrix as JSON: which `(formulation, operand, parameter)` cells this
@@ -113,116 +175,190 @@ export function apply_layout(network_json: string, coords_json: string, kind: st
113
175
  export function capabilities_json(): string;
114
176
 
115
177
  /**
116
- * Export the balanced study state at commit `commit` to a powerio `format`
117
- * (`matpower`, `psse`, `powerio-json`, ...). Returns `{ text, warnings, format,
118
- * extension }` as JSON: the serialized case, the writer's fidelity warnings so the
119
- * frontend can surface them, and the format token and file extension. The package
120
- * JSON is untrusted; malformed input returns a `JsError`, never a panic.
178
+ * Classify JSON bytes for the browser drop router. Invalid UTF-8 is never
179
+ * replaced; it follows powerio's unknown classification.
121
180
  */
122
- export function export_study(package_json: string, commit: number, format: string): string;
181
+ export function classify_json(bytes: Uint8Array): string;
123
182
 
124
183
  /**
125
184
  * A case's coordinates as a canonical `.geo.json` document (one point per
126
185
  * located bus, one route per routed branch, provenance preserved). Errors
127
186
  * when the case carries none.
128
187
  */
129
- export function extract_geo(network_json: string): string;
188
+ export function extract_geo(module_json: string): string;
130
189
 
131
190
  /**
132
191
  * Everything the drop panel needs from one parse: counts, total load and
133
- * capacity, parse warnings, and a `view` of buses and branches in the shape
192
+ * capacity, parse diagnostics, and a `view` of buses and branches in the shape
134
193
  * the tellegen API serves, placed at the coordinates the file carries
135
194
  * (PowerWorld complete case aux exports). `view` is null when the file has no
136
195
  * coordinates.
196
+ *
197
+ * Takes the dropped file's bytes, as [`parse_case`] does and for the same
198
+ * reason.
137
199
  */
138
- export function ingest_case(text: string, format: string): string;
200
+ export function ingest_case(bytes: Uint8Array, format: string): string;
139
201
 
140
202
  /**
141
203
  * The distribution counterpart of [`ingest_case`]: view a multiconductor case
142
204
  * with no solve. `format` is a distribution reader token (`dss`, `bmopf`,
143
- * `pmd`) parsed by [`powerio_dist`], or `pio` for a `.pio.json` package
144
- * carrying a multiconductor payload. Returns the drop-panel payload JSON:
145
- * name, element counts, connected load/generation (kW), parse warnings,
205
+ * `pmd`) parsed by [`powerio_dist`], or `pio` for a `.pio.json` stored module
206
+ * holding a supported multiconductor network, instance, or solution. Returns
207
+ * the drop-panel payload JSON:
208
+ * name, element counts, connected load/generation (kW), parse diagnostics,
146
209
  * coordinate provenance, and the bus/terminal graph the frontend renders (see
147
- * [`dist`]).
210
+ * the private `dist` adapter).
148
211
  *
149
- * Untrusted input: the parse and package restore return error strings (mapped
212
+ * Untrusted input: the parse and module restore return error strings (mapped
150
213
  * to `JsError` here), so a malformed, truncated, or oversized `.dss`/JSON
151
214
  * rejects cleanly and never panics the wasm instance.
152
215
  */
153
216
  export function ingest_dist_case(text: string, format: string): string;
154
217
 
155
218
  /**
156
- * Restore a study saved by [`Study::save_package`]. Returns a JSON bundle the frontend
157
- * reads to rebuild its case, edit sliders, formulation, and solve options in one step.
158
- * See [`load_package_bundle`] for the shape and the fail-closed contract.
219
+ * Byte counterpart of [`ingest_dist_case`] for dropped files.
159
220
  */
160
- export function load_package(package_json: string): string;
221
+ export function ingest_dist_case_bytes(bytes: Uint8Array, format: string): string;
222
+
223
+ /**
224
+ * Classify and ingest one dropped JSON byte buffer. Known inputs return their
225
+ * render-ready payload; ambiguous and unknown documents return a null payload
226
+ * so the caller can request an explicit format without decoding the bytes a
227
+ * second time. A stored module is read once and its value routed to the
228
+ * balanced or multiconductor view. The TS drop-classify layer must mirror
229
+ * the kinds (`module` and powerio's families).
230
+ */
231
+ export function ingest_json_drop(bytes: Uint8Array): string;
161
232
 
162
233
  /**
163
234
  * Parse a case file (MATPOWER, PSS/E RAW, PowerWorld aux, PowerModels or
164
- * egret JSON) and return `{"network": ..., "warnings": [...]}` as JSON.
235
+ * egret JSON) and return `{"network": ..., "diagnostics": [...]}` as JSON.
236
+ *
237
+ * Takes the upload's bytes, not decoded text: powerio refuses a text format
238
+ * whose bytes are not UTF-8, where a browser side `File.text()` would have
239
+ * replaced each offending byte with U+FFFD and parsed on. It also reaches
240
+ * PowerWorld `.pwb`, which has no text form at all.
165
241
  */
166
- export function parse_case(text: string, format: string): string;
242
+ export function parse_case(bytes: Uint8Array, format: string): string;
167
243
 
168
244
  /**
169
- * Decode a PowerWorld `.pwd` display file (binary). Returns the substation
170
- * symbols at the diagram coordinates the file stores (x east, y north) plus
171
- * the canvas size, each with the approximate `lon`/`lat` projection
172
- * (`pwd_mercator_to_lonlat`; hand edited diagrams drift from it). A `.pwd`
173
- * carries no buses or branches. `format` is "pwd". Pure in-memory parsing,
174
- * no filesystem, so it runs in the browser.
245
+ * Decode a PowerWorld drawing as a canonical PowerIO GeoLayer in diagram units.
175
246
  */
176
247
  export function parse_display(bytes: Uint8Array, format: string): string;
177
248
 
178
249
  /**
179
250
  * Parse a geographic sidecar (buscoords CSV, aliased CSV/JSON records,
180
251
  * GeoJSON) from raw dropped bytes; `hint` is the file name ("" to sniff).
181
- * Returns `{ layer, warnings, n_points, n_routes }` — the layer as its
252
+ * Returns `{ layer, diagnostics, n_points, n_routes }` — the layer as its
182
253
  * canonical `.geo.json` document, ready for [`apply_geo`]. Untrusted input
183
254
  * rejects as a `JsError`, never a panic.
184
255
  */
185
256
  export function parse_geo(bytes: Uint8Array, hint: string): string;
186
257
 
187
258
  /**
188
- * The stateless solve front door: a [`SolveRequest`](tellegen::SolveRequest) JSON
189
- * in, a [`SolveResponse`](tellegen::SolveResponse) JSON out. One-shot callers only;
259
+ * Validate and canonicalize a saved multiconductor Study snapshot without
260
+ * re-solving it.
261
+ */
262
+ export function replay_mc_study(snapshot_json: string): string;
263
+
264
+ /**
265
+ * Solve a raw BMOPF multiconductor constant-power case. The parser and
266
+ * fixed-point implementation remain in the engine crate; this export only
267
+ * performs the bounded text/JSON conversion at the browser boundary.
268
+ */
269
+ export function solve_mc_bmopf(text: string, options_json: string): string;
270
+
271
+ /**
272
+ * Solve a stored PowerIO multiconductor module. This accepts the portable
273
+ * module form used by browser persistence in addition to raw BMOPF text.
274
+ */
275
+ export function solve_mc_module(module_json: string, options_json: string): string;
276
+
277
+ /**
278
+ * Solve a supported multiconductor Study input and return a self-contained,
279
+ * replayable snapshot containing the typed input, PowerIO solution module, and
280
+ * terminal-aware result view.
281
+ */
282
+ export function solve_mc_study(module_json: string, study_id: string, study_title: string, options_json: string): string;
283
+
284
+ /**
285
+ * The stateless solve front door: a retained PowerIO module and a
286
+ * [`tellegen::SolveRequest`] JSON in, a [`tellegen::SolveResponse`] JSON out. One-shot callers only;
190
287
  * the reactive hot path is the [`Study`].
191
288
  */
192
- export function solve_json(network_json: string, request_json: string): string;
289
+ export function solve_module(module_json: string, request_json: string): string;
290
+
291
+ /**
292
+ * Create a portable application Study through the shared native controller.
293
+ */
294
+ export function study_document_create(request_json: string): string;
295
+
296
+ /**
297
+ * Validate and normalize a portable bundle without executing its contents.
298
+ */
299
+ export function study_document_import(bundle_json: string): string;
300
+
301
+ /**
302
+ * Execute a revision-checked Study operation and return the completed bundle.
303
+ */
304
+ export function study_document_run(bundle_json: string, request_json: string, cancelled: Function): Promise<string>;
193
305
 
194
306
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
195
307
 
196
308
  export interface InitOutput {
197
309
  readonly memory: WebAssembly.Memory;
310
+ readonly __wbg_mcpfsession_free: (a: number, b: number) => void;
198
311
  readonly __wbg_study_free: (a: number, b: number) => void;
199
312
  readonly apply_display_geo: (a: number, b: number, c: number, d: number) => [number, number, number, number];
200
313
  readonly apply_geo: (a: number, b: number, c: number, d: number) => [number, number, number, number];
201
314
  readonly apply_layout: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number, number, number];
315
+ readonly apply_mc_study_geo: (a: number, b: number, c: number, d: number) => [number, number, number, number];
202
316
  readonly capabilities_json: () => [number, number];
203
- readonly export_study: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
317
+ readonly classify_json: (a: number, b: number) => [number, number, number, number];
204
318
  readonly extract_geo: (a: number, b: number) => [number, number, number, number];
205
319
  readonly ingest_case: (a: number, b: number, c: number, d: number) => [number, number, number, number];
206
320
  readonly ingest_dist_case: (a: number, b: number, c: number, d: number) => [number, number, number, number];
207
- readonly load_package: (a: number, b: number) => [number, number, number, number];
321
+ readonly ingest_dist_case_bytes: (a: number, b: number, c: number, d: number) => [number, number, number, number];
322
+ readonly ingest_json_drop: (a: number, b: number) => [number, number, number, number];
323
+ readonly mcpfsession_input_module: (a: number) => [number, number, number, number];
324
+ readonly mcpfsession_load_branches: (a: number) => [number, number, number, number];
325
+ readonly mcpfsession_new: (a: number, b: number, c: number, d: number) => [number, number, number];
326
+ readonly mcpfsession_replace_load_powers: (a: number, b: number, c: number) => [number, number, number, number];
327
+ readonly mcpfsession_result: (a: number) => [number, number, number, number];
328
+ readonly mcpfsession_snapshot: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
208
329
  readonly parse_case: (a: number, b: number, c: number, d: number) => [number, number, number, number];
209
330
  readonly parse_display: (a: number, b: number, c: number, d: number) => [number, number, number, number];
210
331
  readonly parse_geo: (a: number, b: number, c: number, d: number) => [number, number, number, number];
211
- readonly solve_json: (a: number, b: number, c: number, d: number) => [number, number, number, number];
332
+ readonly replay_mc_study: (a: number, b: number) => [number, number, number, number];
333
+ readonly solve_mc_bmopf: (a: number, b: number, c: number, d: number) => [number, number, number, number];
334
+ readonly solve_mc_module: (a: number, b: number, c: number, d: number) => [number, number, number, number];
335
+ readonly solve_mc_study: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number, number];
336
+ readonly solve_module: (a: number, b: number, c: number, d: number) => [number, number, number, number];
212
337
  readonly study_apply_geo: (a: number, b: number, c: number) => [number, number, number, number];
213
338
  readonly study_commit: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
339
+ readonly study_document_create: (a: number, b: number) => [number, number, number, number];
340
+ readonly study_document_import: (a: number, b: number) => [number, number, number, number];
341
+ readonly study_document_run: (a: number, b: number, c: number, d: number, e: any) => any;
342
+ readonly study_export: (a: number, b: number, c: number) => [number, number, number, number];
214
343
  readonly study_formulation: (a: number) => [number, number];
215
344
  readonly study_new: (a: number, b: number, c: number, d: number) => [number, number, number];
345
+ readonly study_plan: (a: number, b: number, c: number) => [number, number, number, number];
216
346
  readonly study_preview: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
217
347
  readonly study_preview_replacement: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
218
348
  readonly study_replace_edits: (a: number, b: number, c: number, d: number, e: number) => [number, number, number, number];
219
- readonly study_save_package: (a: number) => [number, number, number, number];
349
+ readonly study_save_instance_module: (a: number) => [number, number, number, number];
350
+ readonly study_save_module: (a: number) => [number, number, number, number];
351
+ readonly study_save_solution_module: (a: number) => [number, number, number, number];
220
352
  readonly study_solution: (a: number) => [number, number, number, number];
353
+ readonly wasm_bindgen__convert__closures_____invoke__h0178a8f776e4ef73: (a: number, b: number, c: any, d: any) => void;
354
+ readonly wasm_bindgen__convert__closures_____invoke__h42fc1c09ce4112c3: (a: number, b: number, c: any) => [number, number];
355
+ readonly __wbindgen_exn_store: (a: number) => void;
356
+ readonly __externref_table_alloc: () => number;
357
+ readonly __wbindgen_externrefs: WebAssembly.Table;
221
358
  readonly __wbindgen_free: (a: number, b: number, c: number) => void;
222
359
  readonly __wbindgen_malloc: (a: number, b: number) => number;
223
360
  readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
224
- readonly __externref_table_alloc: () => number;
225
- readonly __wbindgen_externrefs: WebAssembly.Table;
361
+ readonly __wbindgen_destroy_closure: (a: number, b: number) => void;
226
362
  readonly __externref_table_dealloc: (a: number) => void;
227
363
  readonly __wbindgen_start: () => void;
228
364
  }