import type { NodeWithPos } from '@atlaskit/editor-prosemirror/utils';
import type { EditorView } from '@atlaskit/editor-prosemirror/view';
import type { CSSToken } from '@atlaskit/tokens/token-names';
export type WidthTypes = 'percentage' | 'pixel';
export type LengthGuide = {
    isFullWidth?: boolean;
    left: number;
    length: number;
    right: number;
};
export type Range = {
    end: number;
    start: number;
};
export type VerticalPosition = {
    x: number;
    y?: Range;
};
export type HorizontalPosition = {
    x?: Range;
    y: number;
};
export type Position = VerticalPosition | HorizontalPosition;
export type GuidelineStyles = {
    active?: boolean;
    show?: boolean;
    styles?: {
        capStyle?: 'line';
        color?: CSSToken;
        lineStyle?: 'dashed' | 'solid';
    };
};
export type GuidelineConfig = {
    isFullWidth?: boolean;
    key: string;
    position: Position;
} & GuidelineStyles;
export type GuidelineContainerRect = {
    left: number;
    top: number;
};
export type GuidelinePluginState = {
    guidelines: GuidelineConfig[];
    rect?: GuidelineContainerRect;
};
export type GuidelinePluginOptions = Object;
export type DisplayGrid = (props: GuidelinePluginState) => boolean;
export type DisplayGuideline = (view: EditorView) => DisplayGrid;
export type GuidelineSnap = {
    guidelineKey: string;
    width: number;
};
export type GuidelineSnapsReference = {
    guidelineReference: GuidelineSnap[];
    snaps: {
        x?: number[];
        y?: number[];
    };
};
export type GuidelineTypes = 'default' | 'temporary' | 'relative' | 'none';
export type RelativeGuides = {
    height?: {
        [key: number]: NodeWithPos[];
    };
    width?: {
        [key: number]: NodeWithPos[];
    };
};
