import { ActionCallbackType, ActionTypes, MapType } from "../common-types";
import Canvas from "./Canvas";
export declare type CanvasObjectSetStateCb<T> = (state: T) => T;
export declare type CanvasObjectSetState<T> = T | CanvasObjectSetStateCb<T>;
export declare class CanvasObject<T = Record<string, any>> {
    readonly canvasObject?: boolean;
    isOver: boolean;
    object: Path2D;
    listeners: Partial<Record<ActionTypes, ActionCallbackType>>;
    draw: (canvas: Canvas) => void;
    state: T;
    setState: (arg: CanvasObjectSetState<T>) => void;
    addEventListener: (type: ActionTypes, cb: ActionCallbackType) => void;
    map: MapType;
    id: string | number;
    gridColor: string;
    isCb: (arg: CanvasObjectSetState<T>) => arg is CanvasObjectSetStateCb<T>;
}
