import { AABB } from "@nxg-org/mineflayer-util-plugin";
import md from "minecraft-data";
import type { Bot } from "mineflayer";
import { Entity } from "prismarine-entity";
import { Vec3 } from "vec3";
import { IPhysics } from "../engines/IPhysics";
import { EntityState, IEntityState } from "../states";
import { PlayerPoses } from "../states/poses";
import { PhysicsWorldSettings } from "./physicsSettings";
import { PlayerState } from "../states";
export declare const emptyVec: Vec3;
type CollisionContext = {
    blockEffects: boolean;
    affectedAfterCollision: boolean;
};
export declare class EPhysicsCtx<State extends IEntityState = IEntityState> {
    readonly ctx: IPhysics;
    readonly worldSettings: PhysicsWorldSettings;
    pose: PlayerPoses;
    readonly state: State;
    readonly entityType: md.Entity;
    static loadData: (data: md.IndexedData) => void;
    static entityConstructor: new (id: number) => Entity;
    static mcData: md.IndexedData;
    static entityData: md.IndexedData["entitiesByName"];
    static mobData: md.IndexedData["mobs"];
    stepHeight: number;
    gravity: number;
    waterGravity: number;
    lavaGravity: number;
    airdrag: number;
    airborneInertia: number;
    airborneAccel: number;
    waterInertia: number;
    sprintWaterInertia: number;
    lavaInertia: number;
    liquidAccel: number;
    gravityThenDrag: boolean;
    useControls: boolean;
    doSolidCollisions: boolean;
    doLiquidCollisions: boolean;
    collisionBehavior: CollisionContext;
    get position(): Vec3;
    get velocity(): Vec3;
    constructor(ctx: IPhysics, worldSettings: PhysicsWorldSettings, pose: PlayerPoses, state: State, entityType?: md.Entity);
    static FROM_BOT(ctx: IPhysics, bot: Bot, settings?: PhysicsWorldSettings): EPhysicsCtx<PlayerState>;
    static FROM_ENTITY(ctx: IPhysics, entity: Entity, settings?: PhysicsWorldSettings): EPhysicsCtx<EntityState>;
    static FROM_ENTITY_TYPE(ctx: IPhysics, entityType: md.Entity, options?: Partial<Entity>, settings?: PhysicsWorldSettings): EPhysicsCtx<EntityState>;
    static FROM_ENTITY_STATE(ctx: IPhysics, entityState: IEntityState, entityType?: md.Entity, settings?: PhysicsWorldSettings): EPhysicsCtx<IEntityState>;
    clone(): EPhysicsCtx<IEntityState>;
    get height(): number;
    get width(): number;
    getHalfWidth(): number;
    getCurrentBBWithPose(): AABB;
    getBBWithPose(position: {
        x: number;
        y: number;
        z: number;
    }): AABB;
    getBB(position: {
        x: number;
        y: number;
        z: number;
    }): AABB;
}
export {};
