import { Point3d } from "@lincode/math";
import PhysicsObjectManager from "../display/core/PhysicsObjectManager";
import ISimpleObjectManager from "./ISimpleObjectManager";
import Defaults from "./utils/Defaults";
import { ExtractProps } from "./utils/extractProps";
import Nullable from "./utils/Nullable";
export type PhysicsGroupIndex = 0 | 1 | 2 | 3 | 4 | 5;
export type PhysicsOptions = boolean | "2d" | "map" | "map-debug" | "character";
export type PhysicsShape = (this: PhysicsObjectManager) => Promise<void>;
export default interface IPhysicsObjectManager extends ISimpleObjectManager {
    maxAngularVelocityX: number;
    maxAngularVelocityY: number;
    maxAngularVelocityZ: number;
    maxVelocityX: number;
    maxVelocityY: number;
    maxVelocityZ: number;
    velocity: Point3d;
    gravity: boolean;
    noTumble: Nullable<boolean>;
    slippery: Nullable<boolean>;
    mass: Nullable<number>;
    physicsGroup: Nullable<PhysicsGroupIndex>;
    ignorePhysicsGroups: Nullable<Array<PhysicsGroupIndex>>;
    physics: PhysicsOptions;
    physicsShape: PhysicsShape;
}
export declare const physicsObjectManagerSchema: Required<ExtractProps<IPhysicsObjectManager>>;
export declare const physicsObjectManagerDefaults: Defaults<IPhysicsObjectManager>;
