import type { Fn0 } from "@thi.ng/api"; import type { Reducer, Transducer } from "./api.js"; export type ConvolutionKernel1D = [number, number][]; export type ConvolutionKernel2D = [number, [number, number]][]; export type ConvolutionKernel3D = [number, [number, number, number]][]; export interface ConvolutionOpts { /** * Current cell states */ src: ArrayLike; /** * Kernel weights */ weights?: Iterable; /** * Convolution kernel, pre-build via `buildKernel*` */ kernel?: K; /** * Cell matrix width */ width: number; /** * Kernel width (MUST be odd number) */ kwidth?: number; /** * True, if convolution is seamless / wraps around near edges. * Default: true */ wrap?: boolean; /** * Only used if `wrap = false`. Used as neighboring cell values when * processing edge cells. Default: 0 */ border?: number; /** * Optional custom reducer to process convoluted results. Default: * `add` */ reduce?: Fn0>; } export interface Convolution1DOpts extends ConvolutionOpts { } export interface Convolution2DOpts extends ConvolutionOpts { height: number; kheight?: number; } export declare const buildKernel1d: (weights: Iterable, w: number) => ConvolutionKernel1D; export declare const buildKernel2d: (weights: Iterable, w: number, h?: number) => ConvolutionKernel2D; export declare function convolve1d(opts: Convolution1DOpts): Transducer; export declare function convolve1d(opts: Convolution1DOpts, indices: Iterable): IterableIterator; export declare function convolve2d(opts: Convolution2DOpts): Transducer; export declare function convolve2d(opts: Convolution2DOpts, indices: Iterable): IterableIterator; //# sourceMappingURL=convolve.d.ts.map