import { CameraManager } from "../camera/CameraManager";
import { CollisionsManager } from "../collisions/CollisionsManager";
import { KeyInputManager } from "../input/KeyInputManager";
import { VirtualJoystick } from "../input/VirtualJoystick";
import { Line } from "../math/Line";
import { Quat } from "../math/Quat";
import { IVect3, Vect3 } from "../math/Vect3";
import { TimeManager } from "../time/TimeManager";
import { Character } from "./Character";
import { SpawnConfigurationState } from "./CharacterManager";
import { CharacterState } from "./CharacterState";
export type LocalControllerConfig = {
    id: number;
    character: Character;
    collisionsManager: CollisionsManager;
    keyInputManager: KeyInputManager;
    virtualJoystick?: VirtualJoystick;
    cameraManager: CameraManager;
    timeManager: TimeManager;
    spawnConfiguration: SpawnConfigurationState;
};
export declare class LocalController {
    private config;
    capsuleInfo: {
        radius: number;
        segment: Line;
    };
    gravity: number;
    jumpForce: number;
    doubleJumpForce: number;
    coyoteTimeThreshold: number;
    canJump: boolean;
    canDoubleJump: boolean;
    coyoteJumped: boolean;
    doubleJumpUsed: boolean;
    jumpCounter: number;
    airResistance: number;
    groundResistance: number;
    airControlModifier: number;
    groundWalkControl: number;
    groundRunControl: number;
    baseControl: number;
    minimumSurfaceAngle: number;
    latestPosition: Vect3;
    characterOnGround: boolean;
    coyoteTime: boolean;
    private collisionDetectionSteps;
    private characterWasOnGround;
    private characterAirborneSince;
    private currentHeight;
    private currentSurfaceAngle;
    private characterVelocity;
    private vectorUp;
    private vectorDown;
    private rotationOffset;
    private azimuthalAngle;
    private tempSegment;
    private tempQuat;
    private tempEulXYZ;
    private tempVector;
    private tempVector2;
    private tempVect3;
    private tempRay;
    private surfaceTempQuat;
    private surfaceTempQuat2;
    private surfaceTempVector1;
    private surfaceTempVector2;
    private surfaceTempVect3;
    private surfaceTempVector4;
    private surfaceTempVector5;
    private surfaceTempRay;
    private lastFrameSurfaceState;
    jumpReleased: boolean;
    networkState: CharacterState;
    private controlState;
    private minimumX;
    private maximumX;
    private minimumY;
    private maximumY;
    private minimumZ;
    private maximumZ;
    constructor(config: LocalControllerConfig);
    updateSpawnConfig(spawnConfig: SpawnConfigurationState): void;
    update(): void;
    private getTargetAnimation;
    private updateRotationOffset;
    private updateAzimuthalAngle;
    private computeAngularDifference;
    private updateRotation;
    private processJump;
    private applyControls;
    private updatePosition;
    getMovementFromSurfaces(userPosition: IVect3, deltaTime: number): {
        rotation: Quat;
        position: Vect3;
    } | null;
    private updateNetworkState;
    resetPosition(): void;
}
