///
import * as t from 'io-ts';
import { EntityMap } from '../entity_map';
import { Component } from '../component';
import { Angle } from '../datatypes/angle';
import { Position } from '../datatypes/position';
import { Vector } from '../datatypes/vector';
import { Plugin } from '../plugin';
import { System } from '../system';
import { Time } from './time_plugin';
export declare enum MovementType {
INERTIAL = 0,
INERTIALESS = 1,
STATIONARY = 2
}
export declare const MovementPhysics: t.TypeC<{
maxVelocity: t.NumberC;
turnRate: t.NumberC;
acceleration: t.NumberC;
movementType: t.UnionC<[t.LiteralC, t.LiteralC, t.LiteralC]>;
}>;
export declare type MovementPhysics = t.TypeOf;
export declare const MovementPhysicsComponent: Component<{
maxVelocity: number;
turnRate: number;
acceleration: number;
movementType: MovementType;
}>;
export declare const MovementState: t.IntersectionC<[t.TypeC<{
position: t.Type;
velocity: t.Type;
rotation: t.Type;
turning: t.NumberC;
turnBack: t.BooleanC;
accelerating: t.NumberC;
}>, t.PartialC<{
turnTo: t.UnionC<[t.Type, t.StringC, t.NullC]>;
targetSpeed: t.NumberC;
}>]>;
export declare type MovementState = t.TypeOf;
export declare const MovementStateComponent: Component<{
position: Position;
velocity: Vector;
rotation: Angle;
turning: number;
turnBack: boolean;
accelerating: number;
} & {
turnTo?: string | Angle | null | undefined;
targetSpeed?: number | undefined;
}>;
export declare const MovementSystem: System, Component<{
maxVelocity: number;
turnRate: number;
acceleration: number;
movementType: MovementType;
}>, import("nova_ecs/resource").Resource