import { DesignWidget, Point, Widget } from "../types";
import { Component, InjectionKey, Ref } from "vue";
import AlignmentLineService from "@/services/alignmentLine.service";
import SynchronizeService, { YWidget } from "@/services/synchronize.service";
import UtilsService from "@/services/utils.service";
import { Publisher } from "@/utils/publisher";
export interface Modal {
    newWidget?: DesignWidget;
    rect: {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    canvaseRect: {
        x: number;
        y: number;
        width: number;
        height: number;
    };
    pageRect: {
        x: number;
        y: number;
        width: number;
        height: number;
        cwidth: number;
        cheight: number;
        padding: [number, number, number, number];
    };
    scrollLeft: number;
    scrollTop: number;
    scale: number;
    selecteds: Array<YWidget>;
    widgets: Array<DesignWidget>;
}
export default class DesignService {
    props: any;
    emit: (event: 'page-resized' | 'drag-start' | 'drag-moving' | 'drag-end' | 'selected-change' | 'deleted' | 'addNewWidget' | 'delNewWidget' | 'addHeight', ...args: any) => void;
    static token: InjectionKey<DesignService>;
    static itemSlot: InjectionKey<(widget: DesignWidget) => Component>;
    static SPAN: number;
    drawerRef: Ref<HTMLElement | null>;
    selectedNewWidget?: Widget;
    selectedMousePoint?: Point;
    selectedNewOrgState?: DesignWidget;
    modal: Modal;
    utils: UtilsService;
    boundaryLine: import("vue").ComputedRef<import("@/services/alignmentLine.service").BoundaryLine[]>;
    syncService: SynchronizeService<DesignWidget>;
    alignLineService: AlignmentLineService;
    isNotOverlapInGridPublisher: Publisher<(widgets: Array<DesignWidget>) => boolean, DesignWidget[]>;
    canvase2PanelRect: import("vue").ComputedRef<{
        x: number;
        y: number;
        ex: number;
        ey: number;
    }>;
    emitter: import("mitt").Emitter<Record<string, any>>;
    handlerSelectedChange: () => void;
    constructor(props: any, emit: (event: 'page-resized' | 'drag-start' | 'drag-moving' | 'drag-end' | 'selected-change' | 'deleted' | 'addNewWidget' | 'delNewWidget' | 'addHeight', ...args: any) => void, slots: any);
    initWidgets(widgets: Array<Widget>): void;
    handlerSelecteds(): () => void;
    createWidgetHandler(widget: Widget): void;
    newWidgetDragingRegistHandler: (event: MouseEvent) => void;
    newWidgetDropRegistHandler: (event: MouseEvent) => void;
    deleteWidget(id: string): void;
    addScale(value: number): void;
    setScale(newscale: number): void;
    setSelectedArea(begin: Point, end: Point): void;
    addSelected(widget: YWidget): void;
    setSelected(widgets: Array<YWidget>): void;
    clearnSelected(): void;
    deleteSelected(id: string): void;
    changePageSize(width: number, height: number, padding: [number, number, number, number]): void;
    getPageWidgets(): DesignWidget[];
}
