import { App } from 'vue';
import { ComponentOptionsMixin } from 'vue';
import { ComponentProvideOptions } from 'vue';
import { ComputedRef } from 'vue';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { InjectionKey } from 'vue';
import { PropType } from 'vue';
import { PublicProps } from 'vue';
import { Ref } from 'vue';

declare const _default: {
    install: (app: App) => void;
    SketchRuler: DefineComponent<ExtractPropTypes<    {
    wdpRatio: NumberConstructor;
    scaleFigure: NumberConstructor;
    rect: PropType<IFRect>;
    thick: NumberConstructor;
    width: NumberConstructor;
    height: NumberConstructor;
    startX: NumberConstructor;
    startY: NumberConstructor;
    markLineList: PropType<IFLineListByProps[]>;
    }>, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {
    onMarkLineList: (...args: any[]) => void;
    }, string, PublicProps, Readonly<ExtractPropTypes<    {
    wdpRatio: NumberConstructor;
    scaleFigure: NumberConstructor;
    rect: PropType<IFRect>;
    thick: NumberConstructor;
    width: NumberConstructor;
    height: NumberConstructor;
    startX: NumberConstructor;
    startY: NumberConstructor;
    markLineList: PropType<IFLineListByProps[]>;
    }>> & Readonly<{
    onOnMarkLineList?: ((...args: any[]) => any) | undefined;
    }>, {}, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
};
export default _default;

export declare const DEFAULT_LINELIST: {
    lineList: {
        horizontal: number[];
        vertical: number[];
    };
    updateLineList: () => void;
};

export declare const DEFAULT_RECT: {
    x: number;
    y: number;
    width: number;
    height: number;
};

export declare const DEFAULT_SCALE_FIGURE = 1;

export declare const DEFAULT_THEME: any;

export declare const DEFAULT_WDP_RATIO: number;

export declare enum ELineActionType {
    DEL = "del",
    ADD = "add",
    UPDATE = "update"
}

export declare enum ELineDirectionType {
    HORIZONTAL = "horizontal",
    VERTICAL = "vertical"
}

export declare interface IFDrawRulerOption {
    scale: number;
    ratio: number;
    width: number;
    height: number;
}

export declare interface IFLineList {
    horizontal: number[];
    vertical: number[];
}

export declare interface IFLineListByProps {
    type: ELineDirectionType;
    value: number;
}

export declare interface IFRect {
    x: number;
    y: number;
    width: number;
    height: number;
}

export declare const lineListCbKey: InjectionKey<TUpdateLineList>;

export declare const rectKey: InjectionKey<ComputedRef<IFRect>>;

export declare const scaleFigureKey: InjectionKey<Ref<number>>;

export declare type TUpdateLineList = (f: ELineDirectionType, t: ELineActionType, i: number) => void;

export declare const wdpRatioKey: InjectionKey<Ref<number>>;

export { }
