import Stepper, { StepperProps } from '../Stepper';
import { VectorClass } from './Vector';
export declare type SimulationNDState = [x: Float32Array, v: Float32Array];
export interface SimulationNDProps<V> extends StepperProps {
    value: V;
    velocity: V;
    vector: VectorClass;
    mass: number;
    restDelta: number;
}
export default abstract class SimulationND<V> extends Stepper {
    private initial;
    protected restDelta: number;
    protected state: SimulationNDState;
    protected v: VectorClass;
    mass: number;
    constructor({ value, velocity, vector, mass, restDelta, ...rest }?: Partial<SimulationNDProps<V>>);
    protected computeForce(out: Float32Array, state: SimulationNDState): void;
    protected checkResting(): boolean;
    get(out: V): V;
    read(): V;
    getVelocity(out: V): void;
    readVelocity(): V;
    setVelocity(value: V): void;
    reset(): void;
    resetTo(value: V): void;
    stop(): void;
}
