import { Float3 } from "../Types";
import { DeformationFile } from "./DeformationFile";
export declare enum LatticeType {
    Undefined = 0,
    XY = 1,
    YZ = 2,
    XZ = 3,
    XYZ = 4
}
export declare type Deformation = {
    /**
     * The lattice type. For efficiency reasons, there are subsets of XYZ.
     *
     * @type {LatticeType}
     */
    type: LatticeType;
    /**
     * Lattice size in x direction.
     *
     * @type {number}
     */
    dimensionX: number;
    /**
     * Lattice size in y direction.
     *
     * @type {number}
     */
    dimensionY: number;
    /**
     * Lattice size in z direction.
     *
     * @type {number}
     */
    dimensionZ: number;
    /**
     * Relative, strictly monotonic increasing time values. Must start with 0 and --if more than one entry--end with 1.
     *
     * @type {number[] }
     */
    times: number[] | undefined;
    /**
     * The lattice values: [t[Z[Y[X [x] [y] [z]]]]
     *
     * @type {number[]}
     */
    values: number[];
    /**
     * Minimum value for missing coordinate in 2-dim deformations.
     *
     * @type {number}
     */
    minimum?: number;
    /**
     * Maximum value for missing coordinate in 2-dim deformations.
     *
     * @type {number}
     */
    maximum?: number;
};
/**
 * Get the lattice at the specified time value.
 * Either get the values directly, or interpolate them from two values.
 *
 * @param {Deformation} original
 * @param {number} time
 * @returns {Deformation}
 */
export declare const createAtTime: (original: Deformation, time: number) => Deformation;
export declare const createFromFile: (file: DeformationFile) => Deformation;
export declare const translate: (deformation: Deformation, x: number, y: number, z: number) => void;
/**
 *  Gets the size of the vertex from the passed lattice type
 *
 * @param {LatticeType} latticeType
 * @returns {number}
 */
export declare const getVertexSize: (latticeType: LatticeType) => number;
export declare const getVertexAtTime0: (deformation: Deformation, pX: number, pY: number, pZ: number) => Float3;
export declare const isValid: (deformation: Deformation) => boolean;
export declare const dump: (deformation: Deformation, label?: string | undefined) => void;
export declare const getAtTime: (deformation: Deformation, time: number, x: number, y: number, z: number) => number[];
