export interface Position {
    readonly x: number;
    readonly y: number;
}
export interface Edge {
    readonly x1: number;
    readonly y1: number;
    readonly x2: number;
    readonly y2: number;
}
export declare enum State {
    Error = "error",
    Satisfied = "satisfied",
    Incomplete = "incomplete"
}
export type RuleState = {
    readonly state: State.Error;
    readonly positions: readonly Position[];
} | {
    readonly state: State.Satisfied;
} | {
    readonly state: State.Incomplete;
};
export interface GridState {
    final: State;
    rules: readonly RuleState[];
    symbols: ReadonlyMap<string, State[]>;
}
export declare enum Color {
    Dark = "dark",
    Light = "light",
    Gray = "gray"
}
export declare enum Comparison {
    Equal = "eq",
    AtLeast = "ge",
    AtMost = "le"
}
export declare const COMPARISONS: readonly Comparison[];
export declare enum Direction {
    Up = "up",
    Down = "down",
    Left = "left",
    Right = "right"
}
export declare const DIRECTIONS: readonly Direction[];
export type DirectionMap<T> = {
    [key in Direction]: T;
};
export type DirectionToggle = Readonly<DirectionMap<boolean>>;
export declare function directionToggle(...directions: readonly Direction[]): {
    up: boolean;
    down: boolean;
    left: boolean;
    right: boolean;
};
export declare enum Orientation {
    Up = "up",
    UpRight = "up-right",
    Right = "right",
    DownRight = "down-right",
    Down = "down",
    DownLeft = "down-left",
    Left = "left",
    UpLeft = "up-left"
}
export declare const ORIENTATIONS: readonly Orientation[];
export type OrientationMap<T> = {
    [key in Orientation]: T;
};
export type OrientationToggle = Readonly<OrientationMap<boolean>>;
export declare function orientationToggle(...orientations: readonly Orientation[]): {
    up: boolean;
    'up-right': boolean;
    right: boolean;
    'down-right': boolean;
    down: boolean;
    'down-left': boolean;
    left: boolean;
    'up-left': boolean;
};
export declare enum Mode {
    Create = "create",
    Solve = "solve"
}
