@sheetwrite/wasm 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.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Sheetwrite contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,19 @@
1
+ # @sheetwrite/wasm
2
+
3
+ Sheetwrite's Rust/WASM columnar store and calculation engine. Most consumers receive it transitively through `@sheetwrite/core` or a framework adapter.
4
+
5
+ ```ts
6
+ import { load } from "@sheetwrite/wasm";
7
+
8
+ await load();
9
+ ```
10
+
11
+ The package boundary selects a browser loader with no Node imports or a Node loader that reads the co-located binary. `load(source?)` accepts `BufferSource | URL | string | Request | WebAssembly.Module`, shares concurrent same-source initialization, rejects conflicting concurrent sources, retries after failure, and no-ops after success. `isLoaded()` is the authoritative readiness check.
12
+
13
+ `@sheetwrite/wasm/wasm` remains the explicit raw-asset escape hatch for unsupported or custom bundlers; ordinary consumers should use zero-argument initialization.
14
+
15
+ ## Build
16
+
17
+ ```sh
18
+ bun run build
19
+ ```
@@ -0,0 +1,14 @@
1
+ import { createLoader } from "./loader-state.mjs";
2
+ import init from "./pkg/sheetwrite_wasm.js";
3
+
4
+ export * from "./pkg/sheetwrite_wasm.js";
5
+
6
+ const loader = createLoader(async (source) => {
7
+ if (source === undefined) {
8
+ await init();
9
+ return;
10
+ }
11
+ await init({ module_or_path: source });
12
+ });
13
+
14
+ export const { load, isLoaded } = loader;
@@ -0,0 +1,17 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { createLoader } from "./loader-state.mjs";
3
+ import init, { initSync } from "./pkg/sheetwrite_wasm.js";
4
+
5
+ export * from "./pkg/sheetwrite_wasm.js";
6
+
7
+ const loader = createLoader(async (source) => {
8
+ if (source !== undefined) {
9
+ await init({ module_or_path: source });
10
+ return;
11
+ }
12
+
13
+ const url = new URL("./pkg/sheetwrite_wasm_bg.wasm", import.meta.url);
14
+ initSync({ module: await readFile(url) });
15
+ });
16
+
17
+ export const { load, isLoaded } = loader;
@@ -0,0 +1,54 @@
1
+ const DIFFERENT_SOURCE_IN_FLIGHT =
2
+ "Sheetwrite: concurrent load() with a different source while initialization is in flight";
3
+ const DIFFERENT_SOURCE_AFTER_INIT =
4
+ "Sheetwrite: load() called with a different source after initialization; keeping the first module.";
5
+
6
+ /**
7
+ * Own the environment-neutral initialization lifecycle.
8
+ *
9
+ * @param {(source: BufferSource | URL | string | Request | WebAssembly.Module | undefined) => Promise<void>} initialize
10
+ */
11
+ export function createLoader(initialize) {
12
+ let ready = false;
13
+ /** @type {Promise<void> | null} */
14
+ let inFlight = null;
15
+ /** @type {unknown} */
16
+ let selectedSource;
17
+
18
+ /**
19
+ * @param {BufferSource | URL | string | Request | WebAssembly.Module} [source]
20
+ */
21
+ async function load(source) {
22
+ if (ready) {
23
+ if (source !== undefined && source !== selectedSource) {
24
+ console.warn(DIFFERENT_SOURCE_AFTER_INIT);
25
+ }
26
+ return;
27
+ }
28
+
29
+ if (inFlight) {
30
+ if (source !== undefined && source !== selectedSource) {
31
+ throw new Error(DIFFERENT_SOURCE_IN_FLIGHT);
32
+ }
33
+ return inFlight;
34
+ }
35
+
36
+ selectedSource = source;
37
+ inFlight = initialize(source);
38
+
39
+ try {
40
+ await inFlight;
41
+ ready = true;
42
+ } catch (error) {
43
+ inFlight = null;
44
+ selectedSource = undefined;
45
+ throw error;
46
+ }
47
+ }
48
+
49
+ function isLoaded() {
50
+ return ready;
51
+ }
52
+
53
+ return { load, isLoaded };
54
+ }
package/loader.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ export * from "./pkg/sheetwrite_wasm.js";
2
+
3
+ /** Sources accepted by asynchronous initialization: a fetchable URL/request/response, raw module bytes, or a precompiled `WebAssembly.Module`. */
4
+ export type { InitInput } from "./pkg/sheetwrite_wasm.js";
5
+
6
+ /** Result of module initialization: the instantiated exports plus the shared linear memory. */
7
+ export type { InitOutput } from "./pkg/sheetwrite_wasm.js";
8
+
9
+ /** Sources accepted by synchronous initialization: raw module bytes or a precompiled `WebAssembly.Module`. */
10
+ export type { SyncInitInput } from "./pkg/sheetwrite_wasm.js";
11
+
12
+ /**
13
+ * Initialize the WASM module. Idempotent and re-entrant: concurrent
14
+ * same-source callers share one in-flight init; a concurrent different-source
15
+ * call rejects; a different-source call after success warns and no-ops; a
16
+ * rejected init is retryable. When `source` is omitted the loader picks the
17
+ * right strategy for the runtime.
18
+ */
19
+ export declare function load(
20
+ source?: BufferSource | URL | string | Request | WebAssembly.Module,
21
+ ): Promise<void>;
22
+
23
+ /** Whether the WASM module has finished initializing. */
24
+ export declare function isLoaded(): boolean;
package/loader.mjs ADDED
@@ -0,0 +1 @@
1
+ export * from "./loader-browser.mjs";
package/package.json ADDED
@@ -0,0 +1,56 @@
1
+ {
2
+ "name": "@sheetwrite/wasm",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Sheetwrite columnar store and data engine (Rust/WASM).",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/chh-ay/Sheetwrite.git",
10
+ "directory": "packages/wasm"
11
+ },
12
+ "homepage": "https://chh-ay.github.io/Sheetwrite/",
13
+ "bugs": {
14
+ "url": "https://github.com/chh-ay/Sheetwrite/issues"
15
+ },
16
+ "keywords": [
17
+ "spreadsheet",
18
+ "wasm",
19
+ "rust",
20
+ "columnar",
21
+ "formula-engine"
22
+ ],
23
+ "main": "./loader.mjs",
24
+ "module": "./loader.mjs",
25
+ "types": "./loader.d.ts",
26
+ "exports": {
27
+ ".": {
28
+ "types": "./loader.d.ts",
29
+ "browser": "./loader-browser.mjs",
30
+ "node": "./loader-node.mjs",
31
+ "default": "./loader-browser.mjs"
32
+ },
33
+ "./wasm": "./pkg/sheetwrite_wasm_bg.wasm"
34
+ },
35
+ "files": [
36
+ "loader.mjs",
37
+ "loader-browser.mjs",
38
+ "loader-node.mjs",
39
+ "loader-state.mjs",
40
+ "loader.d.ts",
41
+ "pkg/sheetwrite_wasm.js",
42
+ "pkg/sheetwrite_wasm.d.ts",
43
+ "pkg/sheetwrite_wasm_bg.wasm",
44
+ "pkg/sheetwrite_wasm_bg.wasm.d.ts"
45
+ ],
46
+ "publishConfig": {
47
+ "access": "public",
48
+ "provenance": true
49
+ },
50
+ "sideEffects": false,
51
+ "scripts": {
52
+ "build": "wasm-pack build --target web --out-dir pkg",
53
+ "typecheck": "tsc --noEmit -p tsconfig.json",
54
+ "clean": "rm -rf pkg target"
55
+ }
56
+ }
@@ -0,0 +1,415 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ /**
5
+ * Result of a single-cell read.
6
+ */
7
+ export class CellOut {
8
+ private constructor();
9
+ free(): void;
10
+ [Symbol.dispose](): void;
11
+ readonly kind: number;
12
+ readonly num: number;
13
+ readonly string: string | undefined;
14
+ readonly style: number;
15
+ }
16
+
17
+ /**
18
+ * The workbook-wide store: every sheet, one string pool.
19
+ */
20
+ export class CellStore {
21
+ free(): void;
22
+ [Symbol.dispose](): void;
23
+ /**
24
+ * Allocate a logical sheet whose cell chunks materialize on page load or edit.
25
+ */
26
+ addPagedSheet(n_cols: number, row_count: number, chunk_rows: number, byte_budget: number): number;
27
+ addRows(sheet: number, at: number, count: number): void;
28
+ /**
29
+ * Allocate a sheet grid and return its numeric handle.
30
+ */
31
+ addSheet(n_cols: number, row_count: number): number;
32
+ /**
33
+ * Column aggregate over numeric cells. op: 0 sum, 1 avg, 2 min, 3 max, 4 count.
34
+ */
35
+ aggregate(sheet: number, col: number, op: number): number;
36
+ beginPageLoad(): void;
37
+ /**
38
+ * Capture a dense rectangle into an opaque store-local history resource.
39
+ */
40
+ captureRange(sheet: number, r0: number, c0: number, rows: number, cols: number): RangeSnapshot | undefined;
41
+ /**
42
+ * 0 unloaded, 1 loaded-empty, 2 loaded-value, 3 dirty local edit.
43
+ */
44
+ cellState(sheet: number, row: number, col: number): number;
45
+ clearCell(sheet: number, row: number, col: number, style: number): void;
46
+ /**
47
+ * Clear a rectangle while independently controlling contents and style.
48
+ */
49
+ clearRange(sheet: number, r0: number, c0: number, r1: number, c1: number, contents: boolean, style: boolean): boolean;
50
+ colCount(sheet: number): number;
51
+ /**
52
+ * Ctrl+Arrow destination: from `(row, col)` stepping by `(d_row, d_col)`
53
+ * (exactly one of them ±1), return the destination row (vertical moves) or
54
+ * column (horizontal moves), Google Sheets semantics:
55
+ *
56
+ * - current and adjacent cell non-empty → end of the contiguous non-empty
57
+ * run;
58
+ * - otherwise → the next non-empty cell in that direction;
59
+ * - nothing ahead → the sheet edge.
60
+ */
61
+ dataEdge(sheet: number, row: number, col: number, d_row: number, d_col: number): number;
62
+ dataEdgeOrdered(sheet: number, order: Uint32Array, row: number, col: number, d_row: number, d_col: number): number;
63
+ distinctValues(sheet: number, col: number, limit: number): DistinctColumn;
64
+ endPageLoad(): void;
65
+ /**
66
+ * Data-row indices whose column text contains `needle` (case-insensitive).
67
+ */
68
+ filterRows(sheet: number, col: number, needle: string): Uint32Array;
69
+ filterRowsMulti(sheet: number, cols: Uint32Array, kinds: Uint8Array, flags: Uint8Array, nums: Float64Array, num_counts: Uint32Array, text_counts: Uint32Array, value_nums: Float64Array, value_texts: string[]): Uint32Array;
70
+ formulaSource(sheet: number, row: number, col: number): string | undefined;
71
+ /**
72
+ * Single-cell read for interactions/tests — never the render hot path.
73
+ */
74
+ getCell(sheet: number, row: number, col: number): CellOut;
75
+ /**
76
+ * One bulk read of a rectangular window for the renderer. Returns
77
+ * contiguous typed arrays (row-major over `rows x cols`) plus the unique
78
+ * strings referenced by the window, so the host paints without crossing
79
+ * the boundary per cell.
80
+ */
81
+ getWindow(sheet: number, row_start: number, row_end: number, cols: Uint32Array): WindowView;
82
+ /**
83
+ * Bulk read of an explicit row list (sorted/filtered views) — same output
84
+ * shape as `get_window`, rows taken from `rows` rather than a range.
85
+ */
86
+ getWindowRows(sheet: number, rows: Uint32Array, cols: Uint32Array): WindowView;
87
+ insertCols(sheet: number, at: number, count: number): void;
88
+ isFullyLoaded(sheet: number): boolean;
89
+ isPaged(sheet: number): boolean;
90
+ isSheetAlive(sheet: number): boolean;
91
+ markRangeClean(sheet: number, start_row: number, end_row: number, start_col: number, end_col: number): void;
92
+ constructor();
93
+ /**
94
+ * `[chunks, loaded cells, dirty cells, allocated bytes, fully loaded]`.
95
+ */
96
+ pagedStats(sheet: number): Float64Array;
97
+ pinRange(sheet: number, start_row: number, end_row: number, cols: Uint32Array): void;
98
+ poolStrings(ids: Uint32Array): string[];
99
+ /**
100
+ * `[contains cache constructions, owned distinct strings]`.
101
+ */
102
+ queryResourceStats(): Float64Array;
103
+ rangeFullyLoaded(sheet: number, r0: number, c0: number, r1: number, c1: number): boolean;
104
+ /**
105
+ * Unique style ids present in a rectangle; cost stays inside WASM.
106
+ */
107
+ rangeStyleIds(sheet: number, r0: number, c0: number, r1: number, c1: number): Uint32Array;
108
+ /**
109
+ * Recompute formulas affected by cells changed since the last call.
110
+ *
111
+ * The pass first grows the dirty cell set through formula read-sets to find
112
+ * all dependent formulas. It then evaluates only those formulas, using a
113
+ * per-pass memo table so each formula cell is evaluated at most once even
114
+ * when many downstream formulas reference it.
115
+ */
116
+ recompute(sheet: number): void;
117
+ /**
118
+ * Explicit volatile barrier. `serial` is a UTC spreadsheet serial using
119
+ * the 1899-12-30 epoch; only TODAY/NOW formulas and their dependents dirty.
120
+ */
121
+ recomputeVolatile(serial: number): boolean;
122
+ /**
123
+ * Remap styles over a rectangle using parallel old/new id tables.
124
+ */
125
+ remapRangeStyles(sheet: number, r0: number, c0: number, r1: number, c1: number, old_ids: Uint32Array, new_ids: Uint32Array): boolean;
126
+ removeCols(sheet: number, at: number, count: number): void;
127
+ removeNamedRange(name: string, scope: number): boolean;
128
+ removeRows(sheet: number, at: number, count: number): void;
129
+ /**
130
+ * Tombstone a stable sheet handle and invalidate every formula reference to it.
131
+ */
132
+ removeSheet(sheet: number): boolean;
133
+ /**
134
+ * Rename a live stable sheet handle and rewrite every resolved formula AST reference.
135
+ */
136
+ renameSheet(sheet: number, id: string, name: string): boolean;
137
+ resetQueryResourceStats(): void;
138
+ /**
139
+ * Restore a captured block at a destination of the same dimensions.
140
+ */
141
+ restoreRange(sheet: number, r0: number, c0: number, snapshot: RangeSnapshot): boolean;
142
+ rowCount(sheet: number): number;
143
+ /**
144
+ * Cell coordinates whose text matches `query`, as a flat `[row, col, ...]`
145
+ * list. Scans the requested columns column-major (cache-local), then sorts
146
+ * row-major so search navigation runs top-to-bottom, left-to-right.
147
+ */
148
+ search(sheet: number, cols: Uint32Array, query: string, case_insensitive: boolean, whole_cell: boolean): Uint32Array;
149
+ /**
150
+ * Write one row-major typed block in a single boundary call. `kinds` uses
151
+ * 0 empty / 1 number / 2 string; formulas and references are sparse host
152
+ * exceptions applied after this literal bulk write.
153
+ */
154
+ setBlock(sheet: number, start_row: number, start_col: number, rows: number, cols: number, kinds: Uint8Array, numbers: Float64Array, texts: string[], styles: Uint32Array): boolean;
155
+ setBool(sheet: number, row: number, col: number, value: boolean, style: number): void;
156
+ /**
157
+ * Bulk-load one column with numbers starting at `start_row`.
158
+ */
159
+ setColumnNumbers(sheet: number, col: number, start_row: number, values: Float64Array, style: number): void;
160
+ /**
161
+ * Bulk-load one column with strings starting at `start_row`.
162
+ */
163
+ setColumnStrings(sheet: number, col: number, start_row: number, values: string[], style: number): void;
164
+ /**
165
+ * Bulk-load one column of strings from a single concatenated buffer plus
166
+ * per-row lengths in UTF-16 code units (the JS `string.length` unit).
167
+ * One boundary decode and one Rust allocation for the whole column,
168
+ * instead of one per row — the dominant ingest cost for text columns.
169
+ */
170
+ setColumnStringsPacked(sheet: number, col: number, start_row: number, buf: string, utf16_lens: Uint32Array, style: number): void;
171
+ /**
172
+ * Replace a sheet's conditional-format rules. Packed columnar encoding,
173
+ * one entry per rule: `kinds` 0 gt / 1 lt / 2 eqNum / 3 eqStr / 4 eqEmpty /
174
+ * 5 contains; `bounds` = normalized `[r0, c0, r1, c1]` per rule; `nums`
175
+ * carries the numeric operand; `strs` the text operand; `flags` bit 0 =
176
+ * match-case for `contains`. Case-insensitive needles are lowercased here
177
+ * once so the per-cell match never allocates.
178
+ */
179
+ setConditionalRules(sheet: number, kinds: Uint8Array, bounds: Uint32Array, nums: Float64Array, strs: string[], flags: Uint8Array): void;
180
+ /**
181
+ * Parse and store an arithmetic formula at `(row, col)`.
182
+ *
183
+ * Setters only mark cells dirty; they do not recompute formulas. The host
184
+ * calls `recompute(sheet)` once at the transaction barrier so a multi-cell
185
+ * edit performs one dependency-scoped pass instead of one full-sheet pass
186
+ * per setter. The returned value is the previous cached value until that
187
+ * barrier recompute runs, and the store facade ignores it for batched edits.
188
+ */
189
+ setFormula(sheet: number, row: number, col: number, src: string, style: number): number;
190
+ setNamedRange(name: string, scope: number, sheet: number, row_start: number, col_start: number, row_end: number, col_end: number): boolean;
191
+ setNumber(sheet: number, row: number, col: number, value: number, style: number): void;
192
+ setSheetName(sheet: number, id: string, name: string): void;
193
+ setString(sheet: number, row: number, col: number, value: string, style: number): void;
194
+ snapshotNumbers(snapshot: RangeSnapshot): Float64Array;
195
+ snapshotTexts(snapshot: RangeSnapshot): string[];
196
+ /**
197
+ * Stable row order sorted by a column. Returns a data-row permutation.
198
+ */
199
+ sortRows(sheet: number, col: number, ascending: boolean): Uint32Array;
200
+ sortRowsMulti(sheet: number, cols: Uint32Array, ascending: Uint8Array, candidates: Uint32Array): Uint32Array;
201
+ /**
202
+ * Current style-dictionary id at a cell; `0` when out of bounds. Used by
203
+ * the host to write derived (reference-shadow) values without disturbing
204
+ * the cell's style.
205
+ */
206
+ styleIdAt(sheet: number, row: number, col: number): number;
207
+ }
208
+
209
+ /**
210
+ * Distinct-value scan result for one column: parallel kind/number/text
211
+ * arrays whose buffers are surrendered once through the `take*` accessors.
212
+ */
213
+ export class DistinctColumn {
214
+ private constructor();
215
+ free(): void;
216
+ [Symbol.dispose](): void;
217
+ /**
218
+ * Surrenders the per-value kind tags (number/string/boolean codes); the
219
+ * column keeps an empty buffer afterwards.
220
+ */
221
+ takeKinds(): Uint8Array;
222
+ /**
223
+ * Surrenders the numeric values aligned with the `takeKinds` tags.
224
+ */
225
+ takeNumbers(): Float64Array;
226
+ /**
227
+ * Surrenders the distinct strings aligned with the `takeKinds` tags.
228
+ */
229
+ takeTexts(): string[];
230
+ }
231
+
232
+ /**
233
+ * Opaque, store-local history payload for one dense rectangular cell block.
234
+ *
235
+ * The host may retain this object in undo history, but it is deliberately not
236
+ * part of the serialized document protocol. String payloads remain interned in
237
+ * the owning `CellStore`, so snapshots must only be restored into that store.
238
+ */
239
+ export class RangeSnapshot {
240
+ private constructor();
241
+ free(): void;
242
+ [Symbol.dispose](): void;
243
+ byteLength(): number;
244
+ formulaOffsets(): Uint32Array;
245
+ formulaSources(): string[];
246
+ kinds(): Uint8Array;
247
+ styleIds(): Uint32Array;
248
+ }
249
+
250
+ /**
251
+ * A bulk window of resolved cells, row-major over `n_rows x n_cols`.
252
+ */
253
+ export class WindowView {
254
+ private constructor();
255
+ free(): void;
256
+ [Symbol.dispose](): void;
257
+ /**
258
+ * Consume and return per-cell conditional-format rule bitmasks; empty
259
+ * when the sheet has no rules.
260
+ */
261
+ takeCondMatches(): Uint32Array;
262
+ /**
263
+ * Consume and return the per-cell tag array: 0 empty, 1 number, 2 string.
264
+ */
265
+ takeKinds(): Uint8Array;
266
+ /**
267
+ * Consume and return per-cell numeric payloads (valid where kind == 1).
268
+ */
269
+ takeNumbers(): Float64Array;
270
+ /**
271
+ * Consume and return per-cell GLOBAL string-pool ids; `u32::MAX` means none.
272
+ */
273
+ takeStringIds(): Uint32Array;
274
+ /**
275
+ * Consume and return per-cell indices into `strings` (string cells only).
276
+ */
277
+ takeStringIndex(): Int32Array;
278
+ /**
279
+ * Consume and return unique strings referenced by this window.
280
+ */
281
+ takeStrings(): string[];
282
+ /**
283
+ * Consume and return the unique global style-dictionary ids referenced by
284
+ * this window, in local-index order; the host maps each to a `CellStyle`.
285
+ */
286
+ takeStyleDict(): Uint32Array;
287
+ /**
288
+ * Consume and return per-cell WINDOW-LOCAL style indices into the dict.
289
+ */
290
+ takeStyleIndex(): Uint32Array;
291
+ readonly nCols: number;
292
+ readonly nRows: number;
293
+ }
294
+
295
+ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
296
+
297
+ export interface InitOutput {
298
+ readonly memory: WebAssembly.Memory;
299
+ readonly __wbg_cellout_free: (a: number, b: number) => void;
300
+ readonly __wbg_cellstore_free: (a: number, b: number) => void;
301
+ readonly __wbg_distinctcolumn_free: (a: number, b: number) => void;
302
+ readonly __wbg_rangesnapshot_free: (a: number, b: number) => void;
303
+ readonly __wbg_windowview_free: (a: number, b: number) => void;
304
+ readonly cellout_kind: (a: number) => number;
305
+ readonly cellout_num: (a: number) => number;
306
+ readonly cellout_string: (a: number) => [number, number];
307
+ readonly cellout_style: (a: number) => number;
308
+ readonly cellstore_addPagedSheet: (a: number, b: number, c: number, d: number, e: number) => number;
309
+ readonly cellstore_addRows: (a: number, b: number, c: number, d: number) => void;
310
+ readonly cellstore_addSheet: (a: number, b: number, c: number) => number;
311
+ readonly cellstore_aggregate: (a: number, b: number, c: number, d: number) => number;
312
+ readonly cellstore_beginPageLoad: (a: number) => void;
313
+ readonly cellstore_captureRange: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
314
+ readonly cellstore_cellState: (a: number, b: number, c: number, d: number) => number;
315
+ readonly cellstore_clearCell: (a: number, b: number, c: number, d: number, e: number) => void;
316
+ readonly cellstore_clearRange: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
317
+ readonly cellstore_colCount: (a: number, b: number) => number;
318
+ readonly cellstore_dataEdge: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
319
+ readonly cellstore_dataEdgeOrdered: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => number;
320
+ readonly cellstore_distinctValues: (a: number, b: number, c: number, d: number) => number;
321
+ readonly cellstore_endPageLoad: (a: number) => void;
322
+ readonly cellstore_filterRows: (a: number, b: number, c: number, d: number, e: number) => [number, number];
323
+ readonly cellstore_filterRowsMulti: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number, o: number, p: number, q: number, r: number) => [number, number];
324
+ readonly cellstore_formulaSource: (a: number, b: number, c: number, d: number) => [number, number];
325
+ readonly cellstore_getCell: (a: number, b: number, c: number, d: number) => number;
326
+ readonly cellstore_getWindow: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
327
+ readonly cellstore_getWindowRows: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
328
+ readonly cellstore_insertCols: (a: number, b: number, c: number, d: number) => void;
329
+ readonly cellstore_isFullyLoaded: (a: number, b: number) => number;
330
+ readonly cellstore_isPaged: (a: number, b: number) => number;
331
+ readonly cellstore_isSheetAlive: (a: number, b: number) => number;
332
+ readonly cellstore_markRangeClean: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
333
+ readonly cellstore_new: () => number;
334
+ readonly cellstore_pagedStats: (a: number, b: number) => [number, number];
335
+ readonly cellstore_pinRange: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
336
+ readonly cellstore_poolStrings: (a: number, b: number, c: number) => [number, number];
337
+ readonly cellstore_queryResourceStats: (a: number) => [number, number];
338
+ readonly cellstore_rangeFullyLoaded: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
339
+ readonly cellstore_rangeStyleIds: (a: number, b: number, c: number, d: number, e: number, f: number) => [number, number];
340
+ readonly cellstore_recompute: (a: number, b: number) => void;
341
+ readonly cellstore_recomputeVolatile: (a: number, b: number) => number;
342
+ readonly cellstore_remapRangeStyles: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number) => number;
343
+ readonly cellstore_removeCols: (a: number, b: number, c: number, d: number) => void;
344
+ readonly cellstore_removeNamedRange: (a: number, b: number, c: number, d: number) => number;
345
+ readonly cellstore_removeRows: (a: number, b: number, c: number, d: number) => void;
346
+ readonly cellstore_removeSheet: (a: number, b: number) => number;
347
+ readonly cellstore_renameSheet: (a: number, b: number, c: number, d: number, e: number, f: number) => number;
348
+ readonly cellstore_resetQueryResourceStats: (a: number) => void;
349
+ readonly cellstore_restoreRange: (a: number, b: number, c: number, d: number, e: number) => number;
350
+ readonly cellstore_rowCount: (a: number, b: number) => number;
351
+ readonly cellstore_search: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
352
+ readonly cellstore_setBlock: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number, m: number, n: number) => number;
353
+ readonly cellstore_setBool: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
354
+ readonly cellstore_setColumnNumbers: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
355
+ readonly cellstore_setColumnStrings: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
356
+ readonly cellstore_setColumnStringsPacked: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => void;
357
+ readonly cellstore_setConditionalRules: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number, j: number, k: number, l: number) => void;
358
+ readonly cellstore_setFormula: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => number;
359
+ readonly cellstore_setNamedRange: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number, i: number) => number;
360
+ readonly cellstore_setNumber: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
361
+ readonly cellstore_setSheetName: (a: number, b: number, c: number, d: number, e: number, f: number) => void;
362
+ readonly cellstore_setString: (a: number, b: number, c: number, d: number, e: number, f: number, g: number) => void;
363
+ readonly cellstore_snapshotNumbers: (a: number, b: number) => [number, number];
364
+ readonly cellstore_snapshotTexts: (a: number, b: number) => [number, number];
365
+ readonly cellstore_sortRows: (a: number, b: number, c: number, d: number) => [number, number];
366
+ readonly cellstore_sortRowsMulti: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number];
367
+ readonly cellstore_styleIdAt: (a: number, b: number, c: number, d: number) => number;
368
+ readonly distinctcolumn_takeKinds: (a: number) => [number, number];
369
+ readonly distinctcolumn_takeNumbers: (a: number) => [number, number];
370
+ readonly distinctcolumn_takeTexts: (a: number) => [number, number];
371
+ readonly rangesnapshot_byteLength: (a: number) => number;
372
+ readonly rangesnapshot_formulaOffsets: (a: number) => [number, number];
373
+ readonly rangesnapshot_formulaSources: (a: number) => [number, number];
374
+ readonly rangesnapshot_kinds: (a: number) => [number, number];
375
+ readonly rangesnapshot_styleIds: (a: number) => [number, number];
376
+ readonly windowview_nCols: (a: number) => number;
377
+ readonly windowview_nRows: (a: number) => number;
378
+ readonly windowview_takeCondMatches: (a: number) => [number, number];
379
+ readonly windowview_takeStringIds: (a: number) => [number, number];
380
+ readonly windowview_takeStringIndex: (a: number) => [number, number];
381
+ readonly windowview_takeStrings: (a: number) => [number, number];
382
+ readonly windowview_takeStyleDict: (a: number) => [number, number];
383
+ readonly windowview_takeStyleIndex: (a: number) => [number, number];
384
+ readonly windowview_takeKinds: (a: number) => [number, number];
385
+ readonly windowview_takeNumbers: (a: number) => [number, number];
386
+ readonly __wbindgen_malloc: (a: number, b: number) => number;
387
+ readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
388
+ readonly __wbindgen_externrefs: WebAssembly.Table;
389
+ readonly __wbindgen_free: (a: number, b: number, c: number) => void;
390
+ readonly __externref_table_alloc: () => number;
391
+ readonly __externref_drop_slice: (a: number, b: number) => void;
392
+ readonly __wbindgen_start: () => void;
393
+ }
394
+
395
+ export type SyncInitInput = BufferSource | WebAssembly.Module;
396
+
397
+ /**
398
+ * Instantiates the given `module`, which can either be bytes or
399
+ * a precompiled `WebAssembly.Module`.
400
+ *
401
+ * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
402
+ *
403
+ * @returns {InitOutput}
404
+ */
405
+ export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
406
+
407
+ /**
408
+ * If `module_or_path` is {RequestInfo} or {URL}, makes a request and
409
+ * for everything else, calls `WebAssembly.instantiate` directly.
410
+ *
411
+ * @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
412
+ *
413
+ * @returns {Promise<InitOutput>}
414
+ */
415
+ export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;