import { Grid } from '@overextended/core/grid';
import { Cylinder, Prism, Sphere } from '@overextended/core/geometry';
import { Vector2, Vector3 } from '@overextended/core/vector';
type Shapes = Prism | Sphere | Cylinder;
export interface Zone {
    id: string;
    shape: Shapes;
    x: number;
    y: number;
    width: number;
    height: number;
    inside?: () => void;
    onEnter?: () => void;
    onExit?: () => void;
}
export declare class Zone {
    private static nextId;
    static map: Map<string, Zone>;
    static grid: Grid<Zone>;
    static Prism(...args: ConstructorParameters<typeof Prism>): Zone;
    static Cuboid(...args: Parameters<(typeof Prism)['createCuboid']>): Zone;
    static Sphere(...args: ConstructorParameters<typeof Sphere>): Zone;
    static delete(id: string): void;
    static getNearby(point: Vector2 | Vector3): ReadonlySet<Zone>;
    static has(id: string): boolean;
    shouldDraw: boolean;
    private constructor();
    draw(red?: number, green?: number, blue?: number, alpha?: number): void;
}
export {};
