/**
 * Handles drawing a circle on the screen.
 */
export interface OrbDrawer {
    drawOrb(x: number, y: number, radius: number): void;
}
declare class BaseOrb {
    protected drawer: OrbDrawer;
    constructor(drawer: OrbDrawer);
}
/**
 * A moving circle that bounces inside a container.
 */
export declare class Orb extends BaseOrb {
    x: number;
    y: number;
    vx: number;
    vy: number;
    radius: number;
    bounds: {
        width: number;
        height: number;
    };
    constructor(drawer: OrbDrawer, velocity: number, bounds: Orb["bounds"], radius: number);
    step(): void;
}
/**
 * A circle that follows and guides the main orb.
 */
export declare class GuideOrb extends BaseOrb {
    lastRadius: number;
    lastX: number;
    lastY: number;
    deflateDuration: number;
    constructor(drawer: OrbDrawer, deflateDuration: number);
    step(size: number, sizeToIncrease: number, lastSizeTimestamp: number, lastPositionTimestamp: number, currPos: {
        x: number;
        y: number;
    }, moveBy: {
        x: number;
        y: number;
    }): void;
}
export {};
