import '../../../assert/js/assert.js';
import '../../../globals.js';
/**
 * Utilities for Hilbert space-filling curve mapping
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import { IntegerEdge } from '../imports.js';
type Hilbert = Hilbert2 | Hilbert3 | Hilbert4 | Hilbert5 | Hilbert6;
export default class HilbertMapping {
    static sortCenterSize(integerEdges: IntegerEdge[], scale: number): void;
    static sortMinMax(integerEdges: IntegerEdge[], scale: number): void;
    static sortMinMaxSize(integerEdges: IntegerEdge[], scale: number): void;
    static sortCenterMinMax(integerEdges: IntegerEdge[], scale: number): void;
    static binaryToGray(n: number): number;
    static grayToBinary(n: number): number;
    static grayToBinary32(n: number): number;
    static grayToBinary16(n: number): number;
    static grayToBinary8(n: number): number;
    static grayToBinary4(n: number): number;
    static grayToBinary2(n: number): number;
    static getHilbertBits(hilbert: Hilbert, dimension: number, bits?: number): number;
    static getHilbertCompare(a: Hilbert, b: Hilbert, iterLimit?: number): number;
    static getHilbert2Bits(x: number, y: number, bits?: number): number;
    static getHilbert3Bits(x: number, y: number, z: number, bits?: number): number;
    static getHilbert4Bits(x: number, y: number, z: number, w: number, bits?: number): number;
    static getHilbert5Bits(x: number, y: number, z: number, w: number, v: number, bits?: number): number;
    static getHilbert6Bits(x: number, y: number, z: number, w: number, v: number, u: number, bits?: number): number;
    static getHilbert2Compare(x0: number, y0: number, x1: number, y1: number, iterLimit?: number): number;
    static getHilbert3Compare(x0: number, y0: number, z0: number, x1: number, y1: number, z1: number, iterLimit?: number): number;
    static getHilbert4Compare(x0: number, y0: number, z0: number, w0: number, x1: number, y1: number, z1: number, w1: number, iterLimit?: number): number;
    static getHilbert5Compare(x0: number, y0: number, z0: number, w0: number, v0: number, x1: number, y1: number, z1: number, w1: number, v1: number, iterLimit?: number): number;
    static getHilbert6Compare(x0: number, y0: number, z0: number, w0: number, v0: number, u0: number, x1: number, y1: number, z1: number, w1: number, v1: number, u1: number, iterLimit?: number): number;
}
export declare class Hilbert2 {
    x: number;
    y: number;
    n: number;
    i: number;
    constructor(x: number, y: number);
    set(x: number, y: number): this;
    apply(): void;
    private static permutations;
    private getValue;
    private permute;
}
export declare class Hilbert3 {
    x: number;
    y: number;
    z: number;
    n: number;
    i: number;
    constructor(x: number, y: number, z: number);
    set(x: number, y: number, z: number): this;
    apply(): void;
    private static permutations;
    private getValue;
    private permute;
}
export declare class Hilbert4 {
    x: number;
    y: number;
    z: number;
    w: number;
    n: number;
    i: number;
    constructor(x: number, y: number, z: number, w: number);
    set(x: number, y: number, z: number, w: number): this;
    apply(): void;
    private static permutations;
    private getValue;
    private permute;
}
export declare class Hilbert5 {
    x: number;
    y: number;
    z: number;
    w: number;
    v: number;
    n: number;
    i: number;
    constructor(x: number, y: number, z: number, w: number, v: number);
    set(x: number, y: number, z: number, w: number, v: number): this;
    apply(): void;
    private static permutations;
    private getValue;
    private permute;
}
export declare class Hilbert6 {
    x: number;
    y: number;
    z: number;
    w: number;
    v: number;
    u: number;
    n: number;
    i: number;
    constructor(x: number, y: number, z: number, w: number, v: number, u: number);
    set(x: number, y: number, z: number, w: number, v: number, u: number): this;
    apply(): void;
    private static permutations;
    private getValue;
    private permute;
}
export {};
//# sourceMappingURL=HilbertMapping.d.ts.map