import { EventBus } from '../event-bus';
import Vec3 from '../math/vec3';
import { Broadphase } from './broadphase';
import { CollisionMatrix } from './collision';
import { CollisionDiff } from './collision/diff';
import { Narrowphase } from './narrowphase';
import { PhysicsObject } from './object';
import { Octree } from './octree';
import { Processor } from './processor';
import { Terrain } from './terrain';
export declare class World extends EventBus {
    objects: PhysicsObject[];
    terrain: Terrain[];
    gravity: Vec3;
    dimensions: Vec3;
    octreeOptions: OctreeOptions;
    octree: Octree;
    deltaTime: number;
    narrowphase: Narrowphase;
    broadphase: Broadphase;
    collisionMatrix: CollisionMatrix;
    collisionDiff: CollisionDiff;
    processors: Processor[];
    constructor(dimensions: Vec3, octreeOptions?: OctreeOptions);
    addProcessor(processor: Processor): void;
    setGravity(grav: Vec3): void;
    addObject(obj: PhysicsObject): void;
    removeObject(obj: PhysicsObject): void;
    step(dt: number): void;
    checkCollisions(obj: PhysicsObject, dt: number): void;
}
interface OctreeOptions {
    position: Vec3;
    dimensions: Vec3;
    maxObjects: number;
    maxLevels: number;
}
export {};
