import * as THREE from "three";
import * as CANNON from "cannon";
import { VectorSpringSimulator } from "../physics/spring_simulation/VectorSpringSimulator";
import { RelativeSpringSimulator } from "../physics/spring_simulation/RelativeSpringSimulator";
import { World } from "../world/World";
import { IWorldEntity } from "../interfaces/IWorldEntity";
import { SphereCollider } from "../physics/colliders/SphereCollider";
import { EntityType } from "../enums/EntityType";
import { GroundImpactData } from "./GroundImpactData";
export declare class Bullet extends THREE.Object3D implements IWorldEntity {
    updateOrder: number;
    entityType: EntityType;
    groundImpactData: GroundImpactData;
    velocity: THREE.Vector3;
    arcadeVelocityInfluence: THREE.Vector3;
    velocityTarget: THREE.Vector3;
    arcadeVelocityIsAdditive: boolean;
    defaultVelocitySimulatorDamping: number;
    defaultVelocitySimulatorMass: number;
    velocitySimulator: VectorSpringSimulator;
    moveSpeed: number;
    angularVelocity: number;
    orientation: THREE.Vector3;
    orientationTarget: THREE.Vector3;
    defaultRotationSimulatorDamping: number;
    defaultRotationSimulatorMass: number;
    rotationSimulator: RelativeSpringSimulator;
    viewVector: THREE.Vector3;
    bulletBox: SphereCollider;
    rayResult: CANNON.RaycastResult;
    rayHasHit: boolean;
    rayCastLength: number;
    raySafeOffset: number;
    raycastBox: THREE.Mesh;
    world: World;
    private physicsEnabled;
    prevStep: number;
    enemyNameFound: any;
    constructor();
    setArcadeVelocityInfluence(x: number, y?: number, z?: number): void;
    setViewVector(vector: THREE.Vector3): void;
    setPosition(x: number, y: number, z: number): void;
    resetVelocity(): void;
    setArcadeVelocityTarget(velZ: number, velX?: number, velY?: number): void;
    setOrientation(vector: THREE.Vector3, instantly?: boolean): void;
    setPhysicsEnabled(value: boolean): void;
    update(timeStep: number): void;
    springRotation(timeStep: number): void;
    physicsPreStep(body: CANNON.Body, character: Bullet): void;
    feetRaycast(): void;
    physicsPostStep(body: CANNON.Body, character: Bullet): void;
    collideListener(colider: any): void;
    addToWorld(world: World): void;
    removeFromWorld(world: World): void;
}
