export type Point = {
    x: number;
    y: number;
};
export type Vector2D = {
    x: number;
    y: number;
};
export declare namespace Vector2D {
    const Zero: () => Vector2D;
    /** Adds two vector2D together. */
    const add: (a: Vector2D, b: Vector2D) => Vector2D;
    const multiply: (a: Vector2D, b: number) => Vector2D;
    const divide: (a: Vector2D, b: number) => Vector2D;
    const subtract: (a: Vector2D, b: Vector2D) => Vector2D;
    const length: (a: Vector2D) => number;
    const normalize: (a: Vector2D) => Vector2D;
    const distance: (a: Vector2D, b: Vector2D) => number;
    const dot: (a: Vector2D, b: Vector2D) => number;
    const cross: (a: Vector2D, b: Vector2D) => number;
    const angle: (a: Vector2D, b: Vector2D) => number;
    const rotate: (a: Vector2D, angle: number) => Vector2D;
}
export declare class Queue<T> {
    #private;
    constructor(iterable?: Iterable<T>);
    add(e: T): void;
    peek(): T;
    remove(): T;
    take(amount: number): T[];
    takeAll(): T[];
    private handleEmptyOut;
    get size(): number;
    private swapStacks;
}
