export declare enum Pips {
    blank = "0",
    one = "1",
    two = "2",
    tree = "3",
    four = "4",
    five = "5",
    six = "6",
    seven = "7",
    eight = "8",
    nine = "9",
    ten = "10",
    eleven = "11",
    twelve = "12"
}
export declare const Values: number[];
export declare const ValuesToKeys: {};
export declare const KeysToValues: {};
export declare class Tile {
    private values;
    private isDouble;
    private connected;
    isRoot: boolean;
    constructor(one: Pips, two: Pips);
    value: () => Pips[];
    toString: () => string;
    has: (match: Pips) => boolean;
    canAttach: (tile: Tile) => boolean;
    attach: (tile: Tile, value: Pips, options?: {
        clean?: boolean;
    }) => boolean;
    attached: () => {
        value: Pips;
        tile: Tile;
    }[];
}
export declare type Suite = {
    [key in Pips]: Tile;
};
export declare type Hand = Set<Tile>;
export declare const generateSuite: (amount?: Pips) => Set<Tile>;
export declare class Box {
    private box;
    constructor(options?: {
        box?: Set<Tile>;
        level?: Pips;
    });
    next: (amount?: number) => Tile[];
    draw: () => Tile[];
    suffle: () => void;
    valueOf: () => Tile[];
}
