UNPKG

gnablib

Version:

A lean, zero dependency library to provide a useful base for your project.

60 lines (59 loc) 2.13 kB
/*! Copyright 2023-2024 the gnablib contributors MPL-1.1 */ interface DivideResponse<T> { quotient: T; remainder: T; } export declare class ReedSolomonError extends Error { constructor(reason: string); } export type UIntArray = Uint8Array | Uint16Array | Uint32Array; export interface IGf<T extends UIntArray> { get primitive(): number; get base(): number; get zero(): GfPoly<T>; get one(): GfPoly<T>; get size(): number; newPoly(coefficients: T): GfPoly<T>; newPolyArr(coefficients: Iterable<number>): GfPoly<T>; newArr(size: number): T; buildMonomial(degree: number, coefficient: number): GfPoly<T>; exp(pos: number): number; log(pos: number): number; inverse(a: number): number; mul(a: number, b: number): number; toString(): string; } interface GfPoly<T extends UIntArray> { get coefficients(): T; get degree(): number; get degreeCoefficient(): number; get isZero(): boolean; coefficient(degree: number): number; evalAt(a: number): number; addOrSubtract(other: GfPoly<T>): GfPoly<T>; mulPoly(other: GfPoly<T>): GfPoly<T>; mulScalar(scalar: number): GfPoly<T>; mulMonomial(degree: number, coefficient: number): GfPoly<T>; div(other: GfPoly<T>): DivideResponse<GfPoly<T>>; toString(): string; } export declare function qrCode(): IGf<Uint8Array>; export declare function dataMatrix(): IGf<Uint8Array>; export declare function aztecParam(): IGf<Uint8Array>; export declare function aztecData6(): IGf<Uint8Array>; export declare function aztecData8(): IGf<Uint8Array>; export declare function aztecData10(): IGf<Uint16Array>; export declare function aztecData12(): IGf<Uint16Array>; export declare function maxicodeField(): IGf<Uint8Array>; export declare class ReedSolomon<T extends UIntArray> { private readonly _field; private readonly _cache; constructor(field: IGf<T>); private _generator; encode(value: T, ecLen: number): void; private _findErrorMagnitudes; private _findErrorLocations; private _runEuclideanAlgorithm; decode(received: T, ecLen: number): void; } export {};