export declare enum CommonPositionType {
    Left = "left",
    Center = "center",
    Right = "right"
}
export declare const CommonPositions: { [key in CommonPositionType]: `${number}%`; };
export interface IPosition {
    toCSS(): D2Position;
}
export type Coord2DPosition = {
    x: number | `${"-" | ""}${number}%`;
    y: number | `${"-" | ""}${number}%`;
} & Partial<OffsetPosition>;
export type AlignPosition = {
    xalign: number;
    yalign: number;
} & Partial<OffsetPosition>;
export type OffsetPosition = {
    xoffset: number;
    yoffset: number;
};
export type RawPosition = CommonPositionType | (Partial<Coord2DPosition> & {
    xalign?: never;
    yalign?: never;
}) | (Partial<AlignPosition> & {
    x?: never;
    y?: never;
});
type Unknown = typeof PositionUtils.Unknown;
type UnknownAble<T> = T | Unknown;
export declare class CommonPosition implements IPosition {
    static Positions: typeof CommonPositionType;
    static isCommonPositionType(arg: any): arg is CommonPosition;
    readonly position: CommonPositionType;
    /**
     * Create a new CommonPosition instance
     * @example
     * ```ts
     * new CommonPosition(CommonPosition.Positions.Center);
     * new CommonPosition("center");
     * ```
     */
    constructor(position: CommonPositionType);
    toCSS(): D2Position;
}
export declare class Coord2D implements IPosition {
    static isCoord2DPosition(arg: any): arg is Coord2D;
    static fromCommonPosition(position: CommonPosition): Coord2D;
    static fromAlignPosition(position: Partial<AlignPosition>): Coord2D;
    static merge(a: Coord2D, b: Coord2D): Coord2D;
    readonly x: UnknownAble<Coord2DPosition["x"]>;
    readonly y: UnknownAble<Coord2DPosition["y"]>;
    readonly xoffset: UnknownAble<number>;
    readonly yoffset: UnknownAble<number>;
    /**
     * Create a new Coord2D instance
     * @example
     * ```ts
     * new Coord2D("50%", "50%");
     * new Coord2D({x: 1280, y: "50%"});
     * new Coord2D({x: 1280, y: "-50%", xoffset: 10, yoffset: 20});
     * ```
     */
    constructor(arg0: {
        x?: UnknownAble<Coord2DPosition["x"]>;
        y?: UnknownAble<Coord2DPosition["y"]>;
        xoffset?: UnknownAble<number>;
        yoffset?: UnknownAble<number>;
    });
    constructor(x: UnknownAble<Coord2DPosition["x"]>, y: UnknownAble<Coord2DPosition["y"]>);
    check(): void;
    toCSS(): D2Position<Coord2DPosition["x"], Coord2DPosition["y"]>;
}
export declare class Align implements IPosition {
    static isAlignPosition(arg: any): arg is AlignPosition;
    readonly xalign: UnknownAble<number>;
    readonly yalign: UnknownAble<number>;
    readonly xoffset: UnknownAble<number>;
    readonly yoffset: UnknownAble<number>;
    /**
     * Create a new Align instance
     * @example
     * ```ts
     * new Align(0.5, 0.5);
     * new Align({xalign: 0.25, yalign: 0.5});
     * new Align({xalign: 0.25, yalign: 0.5, xoffset: 10, yoffset: 20});
     * ```
     */
    constructor(xalign?: UnknownAble<number>, yalign?: UnknownAble<number>);
    constructor(arg0: {
        xalign?: UnknownAble<number>;
        yalign?: UnknownAble<number>;
        xoffset?: UnknownAble<number>;
        yoffset?: UnknownAble<number>;
    });
    check(): void;
    toCSS(): D2Position;
}
export {};
