import { Object3D, Vector3, Line3 } from 'three';
import { MeshWithBVH } from '../../core/geometry/bvh/three-mesh-bvh';
import { CorePlayerInput } from './PlayerCommon';
export type CorePlayerInputData = Record<CorePlayerInput, boolean>;
export interface CorePlayerOptions {
    object: Object3D;
    collider?: MeshWithBVH;
}
export interface CorePlayerCapsuleInput {
    radius: number;
    height: number;
}
export interface CorePlayerCapsuleData {
    radius: number;
    segment: Line3;
}
interface BasePlayerComputeInput {
    collider?: MeshWithBVH;
    speed: number;
    runAllowed: boolean;
    runSpeedMult: number;
    jumpAllowed: boolean;
    jumpStrength: number;
    physicsSteps: number;
    gravity: Vector3;
}
export interface CorePlayerComputeInputInputData extends BasePlayerComputeInput {
    capsuleInput: CorePlayerCapsuleInput;
}
export interface PlayerComputeInputData extends BasePlayerComputeInput {
    capsuleData: CorePlayerCapsuleData;
}
export interface PlayerComputedData {
    velocityFromForces: Vector3;
    onGround: boolean;
    velocityFromPositionDelta: Vector3;
}
export declare class CorePlayer {
    private _object;
    private _inputData;
    private _computeInputData;
    private _computedData;
    constructor(_object: Object3D);
    setComputeInputData(data: CorePlayerComputeInputInputData): void;
    update(delta: number): void;
    private _updateStep;
    setInputData(inputData: CorePlayerInputData): void;
    velocityFromPositionDelta(target: Vector3): Vector3;
    onGround(): boolean;
}
export {};
