import { CtxConfigType, MatrixType, DrawTaskResolve } from '../data';
import { default as Canvas } from '../canvas';
import { default as ZImage } from '../image';
export default abstract class Graph {
    readonly id: string;
    private ctxStyle?;
    scale: number;
    imageMatrix: MatrixType;
    cancel: (params: string) => void;
    constructor(scale: number, imageMatrix: MatrixType, ctxStyle?: CtxConfigType);
    setCtxStyle(ctx: CanvasRenderingContext2D, style: CtxConfigType): void;
    setBrushStyle(ctx: CanvasRenderingContext2D): void;
    getOriginalPoint(event: MouseEvent, imageMatrix: MatrixType, scale: number): [number, number];
    abstract draw(ctx: CanvasRenderingContext2D): void;
    abstract updateImageMatrix(imageMatrix: MatrixType): void;
    abstract handDrawn(canvasInstance: Canvas, imageInstance: ZImage): Promise<DrawTaskResolve>;
    render(ctx: CanvasRenderingContext2D): void;
}
