import { NDArray, NDArrayInt8, NDArrayInt32, NDArrayFloat32, NDArrayBool } from "./NDArray";
/** Create a WASM-resident NDArray from a typed array (or plain number[]) + shape. */
export declare function ndarray(data: number[], shape?: number[]): NDArrayFloat32;
export declare function ndarray(data: Float32Array, shape?: number[]): NDArrayFloat32;
export declare function ndarray(data: Int32Array, shape?: number[]): NDArrayInt32;
export declare function ndarray(data: Int8Array, shape?: number[]): NDArrayInt8;
/** Generate a random WASM-resident NDArray. */
export declare function random(dtype: "float32", shape: number[], min?: number, max?: number): NDArrayFloat32;
export declare function random(dtype: "int32", shape: number[], min?: number, max?: number): NDArrayInt32;
/** Stack arrays along a new axis (NumPy-style). All inputs must have identical shape. */
export declare function stack(arrays: NDArrayFloat32[], axis?: number): NDArrayFloat32;
export declare function stack(arrays: NDArrayInt32[], axis?: number): NDArrayInt32;
export declare function stack(arrays: NDArrayInt8[], axis?: number): NDArrayInt8;
export declare function stack(arrays: NDArrayBool[], axis?: number): NDArrayBool;
/** Concatenate arrays along an existing axis (NumPy-style). */
export declare function concatenate(arrays: NDArrayFloat32[], axis?: number): NDArrayFloat32;
export declare function concatenate(arrays: NDArrayInt32[], axis?: number): NDArrayInt32;
export declare function concatenate(arrays: NDArrayInt8[], axis?: number): NDArrayInt8;
export declare function concatenate(arrays: NDArrayBool[], axis?: number): NDArrayBool;
/** Repeat array along axes (NumPy-style np.tile). */
export declare function tile(arr: NDArrayFloat32, reps: number | number[]): NDArrayFloat32;
export declare function tile(arr: NDArrayInt32, reps: number | number[]): NDArrayInt32;
export declare function tile(arr: NDArrayInt8, reps: number | number[]): NDArrayInt8;
export declare function tile(arr: NDArrayBool, reps: number | number[]): NDArrayBool;
/** Element-wise conditional: cond ? x : y. */
export declare function where(cond: NDArrayBool, x: NDArray, y: NDArray): NDArray;
/** Create a WASM-resident NDArray filled with zeros. */
export declare function zeros(dtype: "float32", shape: number[]): NDArrayFloat32;
export declare function zeros(dtype: "int32", shape: number[]): NDArrayInt32;
export declare function zeros(dtype: "int8", shape: number[]): NDArrayInt8;
export declare function zeros(dtype: "bool", shape: number[]): NDArrayBool;
/** Create a WASM-resident NDArray filled with ones. */
export declare function ones(dtype: "float32", shape: number[]): NDArrayFloat32;
export declare function ones(dtype: "int32", shape: number[]): NDArrayInt32;
export declare function ones(dtype: "int8", shape: number[]): NDArrayInt8;
export declare function ones(dtype: "bool", shape: number[]): NDArrayBool;
/** Create a WASM-resident NDArray filled with a constant value. */
export declare function full(dtype: "float32", shape: number[], value: number): NDArrayFloat32;
export declare function full(dtype: "int32", shape: number[], value: number): NDArrayInt32;
export declare function full(dtype: "int8", shape: number[], value: number): NDArrayInt8;
/** Create an NxN identity matrix (ones on diagonal, zeros elsewhere). */
export declare function eye(dtype: "float32", n: number): NDArrayFloat32;
export declare function eye(dtype: "int32", n: number): NDArrayInt32;
/** Create a WASM-resident NDArray with evenly spaced values [start, stop). */
export declare function arange(dtype: "float32", stop: number): NDArrayFloat32;
export declare function arange(dtype: "int32", stop: number): NDArrayInt32;
export declare function arange(dtype: "float32", start: number, stop: number, step?: number): NDArrayFloat32;
export declare function arange(dtype: "int32", start: number, stop: number, step?: number): NDArrayInt32;
/** Create a WASM-resident float32 NDArray with n evenly spaced values [start, stop]. */
export declare function linspace(start: number, stop: number, n: number): NDArrayFloat32;
/** Select slices along axis by indices (np.take). */
export declare function take(arr: NDArrayFloat32, indices: NDArrayInt32, axis?: number): NDArrayFloat32;
export declare function take(arr: NDArrayInt32, indices: NDArrayInt32, axis?: number): NDArrayInt32;
export declare function take(arr: NDArrayInt8, indices: NDArrayInt32, axis?: number): NDArrayInt8;
export declare function take(arr: NDArrayBool, indices: NDArrayInt32, axis?: number): NDArrayBool;
/** Index along axis using per-element indices (np.take_along_axis). */
export declare function takeAlongAxis(arr: NDArrayFloat32, indices: NDArrayInt32, axis: number): NDArrayFloat32;
export declare function takeAlongAxis(arr: NDArrayInt32, indices: NDArrayInt32, axis: number): NDArrayInt32;
export declare function takeAlongAxis(arr: NDArrayInt8, indices: NDArrayInt32, axis: number): NDArrayInt8;
export declare function takeAlongAxis(arr: NDArrayBool, indices: NDArrayInt32, axis: number): NDArrayBool;
/** Return sorted copy (lexicographic row sort for nD). */
export declare function sort(arr: NDArrayFloat32): NDArrayFloat32;
export declare function sort(arr: NDArrayInt32): NDArrayInt32;
export declare function sort(arr: NDArrayInt8): NDArrayInt8;
/** Sort in-place (lexicographic row sort for nD). */
export declare function sort_(arr: NDArrayFloat32): NDArrayFloat32;
export declare function sort_(arr: NDArrayInt32): NDArrayInt32;
export declare function sort_(arr: NDArrayInt8): NDArrayInt8;
/** Return int32 row permutation (lexicographic for nD). */
export declare function argsort(arr: NDArray): NDArrayInt32;
/** Remove duplicate rows from sorted array. */
export declare function unique(arr: NDArrayFloat32): NDArrayFloat32;
export declare function unique(arr: NDArrayInt32): NDArrayInt32;
export declare function unique(arr: NDArrayInt8): NDArrayInt8;
/** Sorted union of two sorted arrays. */
export declare function setUnion(a: NDArrayFloat32, b: NDArrayFloat32): NDArrayFloat32;
export declare function setUnion(a: NDArrayInt32, b: NDArrayInt32): NDArrayInt32;
export declare function setUnion(a: NDArrayInt8, b: NDArrayInt8): NDArrayInt8;
/** Sorted intersection of two sorted arrays. */
export declare function setIntersection(a: NDArrayFloat32, b: NDArrayFloat32): NDArrayFloat32;
export declare function setIntersection(a: NDArrayInt32, b: NDArrayInt32): NDArrayInt32;
export declare function setIntersection(a: NDArrayInt8, b: NDArrayInt8): NDArrayInt8;
/** Sorted difference: elements in a not in b (both sorted). */
export declare function setDifference(a: NDArrayFloat32, b: NDArrayFloat32): NDArrayFloat32;
export declare function setDifference(a: NDArrayInt32, b: NDArrayInt32): NDArrayInt32;
export declare function setDifference(a: NDArrayInt8, b: NDArrayInt8): NDArrayInt8;
//# sourceMappingURL=factories.d.ts.map