import { BackgammonChecker } from './checker';
import { BackgammonBoard } from './board';
import { BackgammonCheckerContainerImport } from './import';
import { BackgammonMoveDirection } from './game';
import { IntegerRange } from './generics';
type BarPosition = 'bar';
type OffPosition = 'off';
interface BackgammonPointPosition {
    clockwise: BackgammonPointValue;
    counterclockwise: BackgammonPointValue;
}
export type BackgammonCheckerContainerPosition = BackgammonPointPosition | BarPosition | OffPosition;
type CheckerContainerKind = 'point' | 'bar' | 'off';
export type BackgammonCheckerContainer = {
    id: string;
    kind: CheckerContainerKind;
    position: BackgammonCheckerContainerPosition;
    checkers: BackgammonChecker[];
};
export interface BackgammonPoint extends BackgammonCheckerContainer {
    kind: 'point';
    position: {
        clockwise: BackgammonPointValue;
        counterclockwise: BackgammonPointValue;
    };
}
export interface BackgammonBar extends BackgammonCheckerContainer {
    kind: 'bar';
    direction: BackgammonMoveDirection;
    position: BarPosition;
}
export type BackgammonBarContainer = {
    [direction in BackgammonMoveDirection]: BackgammonBar;
};
export interface BackgammonOff extends BackgammonCheckerContainer {
    kind: 'off';
    direction: BackgammonMoveDirection;
    position: OffPosition;
}
export type BackgammonOffContainer = {
    [direction in BackgammonMoveDirection]: BackgammonOff;
};
export type BackgammonPointValue = IntegerRange<1, 24>;
export type BackgammonPoints = [
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint,
    BackgammonPoint
];
export type BackgammonMoveOrigin = BackgammonPoint | BackgammonBar;
export type BackgammonMoveDestination = BackgammonPoint | BackgammonOff;
export interface CheckercontainerClass {
    getCheckercontainers: (board: BackgammonBoard) => BackgammonCheckerContainer[];
    getCheckercontainer: (board: BackgammonBoard, id: string) => BackgammonCheckerContainer;
    buildBar: (boardImport: BackgammonCheckerContainerImport[]) => {
        clockwise: BackgammonBar;
        counterclockwise: BackgammonBar;
    };
    buildOff: (boardImport: BackgammonCheckerContainerImport[]) => {
        clockwise: BackgammonOff;
        counterclockwise: BackgammonOff;
    };
}
export {};
//# sourceMappingURL=checkercontainer.d.ts.map