import { IValue, Pen } from './model';
import { Direction } from '../data';
import { Point } from '../point';
import { Rect } from '../rect';
import { Meta2dStore } from '../store';
/**
 * ancestor 是否是 pen 的祖先
 * @param pen 当前画笔
 * @param ancestor 祖先画笔
 */
export declare function isAncestor(pen: Pen, ancestor: Pen): boolean;
export declare function getParent(pen: Pen, root?: boolean): Pen;
export declare function getAllChildren(pen: Pen, store: Meta2dStore): Pen[];
export declare function getAllFollowers(pen: Pen, store: Meta2dStore): Pen[];
export declare function getGradientAnimatePath(pen: Pen): Path2D;
export declare function drawImage(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pen: Pen): void;
/**
 * 获取文字颜色， textColor 优先其次 color
 */
export declare function getTextColor(pen: Pen, store: Meta2dStore): any;
export declare function drawIcon(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pen: Pen): void;
export declare function drawDropdown(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pen: Pen): void;
/**
 * canvas2svg 中对 font 的解析规则比 canvas 中简单，能识别的类型很少
 * @returns ctx.font
 */
export declare function getFont({ fontStyle, textDecoration, fontWeight, fontSize, fontFamily, lineHeight, }?: {
    fontStyle?: string;
    textDecoration?: string;
    fontWeight?: string;
    fontSize?: number;
    fontFamily?: string;
    lineHeight?: number;
}): string;
export declare function ctxFlip(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pen: Pen): void;
export declare function ctxRotate(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pen: Pen, noFlip?: boolean): void;
export declare function renderPen(ctx: CanvasRenderingContext2D, pen: Pen, download?: boolean): void;
/**
 * 更改 ctx 的 lineCap 属性
 */
export declare function setLineCap(ctx: CanvasRenderingContext2D, pen: Pen): void;
/**
 * 更改 ctx 的 lineJoin 属性
 */
export declare function setLineJoin(ctx: CanvasRenderingContext2D, pen: Pen): void;
/**
 * 通常用在下载 svg
 * canvas2svg 与 canvas ctx 设置 strokeStyle 表现不同
 * 若设置值为 undefined ，canvas2svg 为空， canvas ctx 为上一个值
 */
export declare function renderPenRaw(ctx: CanvasRenderingContext2D, pen: Pen, rect?: Rect, download?: boolean): void;
/**
 * 根据 path2D 绘制 path
 * @param canUsePath 是否可使用 Path2D, downloadSvg 不可使用 path2D
 */
export declare function ctxDrawPath(canUsePath: boolean, ctx: CanvasRenderingContext2D, pen: Pen, store: Meta2dStore, fill: boolean): void;
/**
 * 连线配置线条渐进后，动画效果、起始点、终点的绘制
 */
export declare function ctxDrawLinePath(canUsePath: boolean, ctx: CanvasRenderingContext2D, pen: Pen, store: Meta2dStore): void;
/**
 * 设置线条动画，ctx 的 strokeStyle lineDash 等属性更改
 */
export declare function setCtxLineAnimate(ctx: CanvasRenderingContext2D, pen: Pen, store: Meta2dStore): void;
/**
 * 全局 color
 */
export declare function getGlobalColor(store: Meta2dStore): string;
export declare function renderLineAnchors(ctx: CanvasRenderingContext2D, pen: Pen): void;
export declare function renderAnchor(ctx: CanvasRenderingContext2D, pt: Point, pen: Pen): void;
export declare function calcWorldRects(pen: Pen): Rect;
export declare function calcPadding(pen: Pen, rect: Rect): void;
export declare function calcPenRect(pen: Pen): void;
export declare function calcWorldAnchors(pen: Pen): void;
export declare function calcChildrenInitRect(pen: Pen): void;
export declare function calcWorldPointOfPen(pen: Pen, pt: Point): Point;
export declare function calcIconRect(pens: {
    [key: string]: Pen;
}, pen: Pen): void;
export declare function scalePen(pen: Pen, scale: number, center: Point): void;
export declare function scaleChildrenInitRect(pen: Pen, scale: number, center: Point): void;
export declare function pushPenAnchor(pen: Pen, pt: Point): {
    id: string;
    penId: string;
    x: number;
    y: number;
};
export declare function addLineAnchor(pen: Pen, pt: Point, index: number): Point;
export declare function removePenAnchor(pen: Pen, anchor: Point): void;
export declare function facePen(pt: Point, pen?: Pen): Direction;
export declare function nearestAnchor(pen: Pen, pt: Point): Point;
export declare function translateLine(pen: Pen, x: number, y: number): void;
export declare function deleteTempAnchor(pen: Pen): void;
/**
 * 添加line到pen的connectedLines中，并关联相关属性
 * 不添加连线到画布中，请确保画布中已经有该连线。
 * */
export declare function connectLine(pen: Pen, anchor: Point, line: Pen, lineAnchor: Point): boolean;
/**
 * 从 pen.connectedLines 中删除 lineId 和 lineAnchor
 */
export declare function disconnectLine(pen: Pen, anchor: Point, line: Pen, lineAnchor: Point): boolean;
export declare function getAnchor(pen: Pen, anchorId: string): Point;
export declare function getFromAnchor(pen: Pen): Point;
export declare function getToAnchor(pen: Pen): Point;
export declare function setNodeAnimate(pen: Pen, now: number): true | 0;
export declare function initPrevFrame(pen: Pen): void;
export declare function setNodeAnimateProcess(pen: Pen, process: number): void;
export declare function setLineAnimate(pen: Pen, now: number): true | 0;
export declare function setChildrenActive(pen: Pen, active?: boolean): void;
export declare function setHover(pen: Pen, hover?: boolean): void;
export declare function setElemPosition(pen: Pen, elem: HTMLElement): void;
export declare function setElemImg(pen: Pen, elem: HTMLElement): void;
/**
 * 每个画笔 locked
 * @param pens 画笔
 * @returns
 */
export declare function getPensLock(pens: Pen[]): boolean;
/**
 * 画笔们的 disabledRotate = true
 * 即 全部禁止旋转 返回 true
 * @param pens 画笔
 * @returns
 */
export declare function getPensDisableRotate(pens: Pen[]): boolean;
export declare function rotatePen(pen: Pen, angle: number, rect: Rect): void;
/**
 * 画笔们的 disableSize = true
 * 即 全部不允许改变大小 返回 true
 * @param pens 画笔
 * @returns
 */
export declare function getPensDisableResize(pens: Pen[]): boolean;
export declare function getFrameValue(pen: Pen, prop: string, frameIndex: number): number;
/**
 * 判断该画笔 是否是组合为状态中 展示的画笔
 */
export declare function isShowChild(pen: Pen, store: Meta2dStore): boolean;
/**
 * 计算画笔的 inView
 * @param pen 画笔
 * @param calcChild 是否计算子画笔
 */
export declare function calcInView(pen: Pen, calcChild?: boolean): void;
export declare function setGlobalAlpha(ctx: CanvasRenderingContext2D | OffscreenCanvasRenderingContext2D, pen: Pen): void;
export declare function drawFilter(ctx: any, pen: any): void;
export declare function setChildValue(pen: Pen, data: IValue): void;
