/**
 * A 2D-space
 * @module Space
 * @group Space
 */
export interface SpaceGuest {
    pub: string;
    draw: string;
    blink: boolean;
    pulse: number;
    hasPos: boolean;
    pos: {
        x: number;
        y: number;
    };
}
/**
 * @interface UseSpace
 */
/**
 *  A space to navigate with mouse clicks
 * @example
 * const { space, plane, links, width, height, guests, area, join } = useSpace({
 * TIMEOUT: 10000,
 * })
 */
export declare function useSpace({ TIMEOUT, randomness, }?: {
    TIMEOUT?: number;
    randomness?: number;
}): {
    space: {
        title: string;
        joined: boolean;
        db: import("gun").IGunChain<any, any, any, "space">;
        cert: string;
        my: {
            mouse: {
                x: number;
                y: number;
            };
            pos: any;
        };
    };
    allGuests: {
        [key: string]: SpaceGuest;
    };
    guests: import("vue").ComputedRef<Record<string, SpaceGuest>> | import("vue").Ref<Record<string, SpaceGuest>>;
    guestCount: import("vue").ComputedRef<number>;
    links: {};
    plane: import("vue").Ref<any>;
    width: import("vue").Ref<number>;
    height: import("vue").Ref<number>;
    pos: number[];
    zoom: import("vue").Ref<number>;
    area: import("vue").Ref<any>;
    join: () => Promise<void>;
    place: ({ x, y }?: {
        x?: number;
        y?: number;
    }) => void;
};
export interface Pos {
    x: number;
    y: number;
}
export interface Arrow {
    sx: number;
    sy: number;
    c1x: number;
    c1y: number;
    c2x: number;
    c2y: number;
    ex: number;
    ey: number;
    ae: number;
    as: number;
}
/**
 * @todo draggable handles https://dev.to/abolz/roll-your-own-svg-drag-and-drop-in-vuejs-2c7o
 */
//# sourceMappingURL=useSpace.d.ts.map