import { RulerProps } from "@scena/react-ruler/declaration/types";
import { IObject } from "@daybrush/utils";
import { OnDragStart as OnGestoDragStart, OnDrag as OnGestoDrag, OnDragEnd as OnGestoDragEnd } from "gesto";
export interface GuidesState {
    guides: number[];
}
export interface GuidesOptions extends RulerProps {
    className?: string;
    rulerStyle?: IObject<any>;
    snapThreshold?: number;
    snaps?: number[];
    displayDragPos?: boolean;
    cspNonce?: string;
    dragPosFormat?: (value: number) => string | number;
    defaultGuides?: number[];
    showGuides?: boolean;
    lockGuides?: boolean | Array<"add" | "change" | "remove">;
    digit?: number;
    guideStyle?: Record<string, any>;
    dragGuideStyle?: Record<string, any>;
    portalContainer?: HTMLElement | null;
}
export interface GuideOptions extends GuidesOptions {
}
export interface GuidesProps extends GuidesOptions {
    onChangeGuides?: (e: OnChangeGuides) => any;
    onDragStart?: (e: OnDragStart) => any;
    onDrag?: (e: OnDrag) => any;
    onDragEnd?: (e: OnDragEnd) => any;
}
export interface OnChangeGuides {
    guides: number[];
    isAdd: boolean;
    isRemove: boolean;
    isChange: boolean;
    distX: number;
    distY: number;
}
export interface OnDragStart extends OnGestoDragStart {
    dragElement: HTMLElement;
}
export interface OnDrag extends OnGestoDrag {
    dragElement: HTMLElement;
}
export interface OnDragEnd extends OnGestoDragEnd {
    dragElement: HTMLElement;
}
export interface GuidesInterface {
    getGuides(): number[];
    scroll(pos: number): void;
    scrollGuides(pos: number): void;
    loadGuides(guides: number[]): void;
    resize(): void;
}
export interface GuidesEvents {
    changeGuides: OnChangeGuides;
    dragStart: OnDragStart;
    drag: OnDrag;
    dragEnd: OnDragEnd;
}
