import React from 'react'; type LineJoinType = 'round' | 'bevel' | 'miter'; type LineCapType = 'round' | 'butt' | 'square'; interface CanvasProps { onMouseDown: React.MouseEventHandler; onTouchStart: React.TouchEventHandler; onMouseMove: React.MouseEventHandler; onTouchMove: React.TouchEventHandler; onMouseUp: React.MouseEventHandler; onTouchEnd: React.TouchEventHandler; style: React.CSSProperties; ref: (ref: HTMLCanvasElement) => void; } interface PropsGetterInput extends Partial { [key: string]: any; } interface PropsGetterResult extends CanvasProps { [key: string]: any; } interface RenderProps { canvas: JSX.Element; triggerSave: () => void; getCanvasProps: (props: PropsGetterInput) => PropsGetterResult; imageCanDownload: boolean | null; imageDownloadUrl: string | null; setColor: (color: string) => void; setLineWidth: (width: number) => void; setLineJoin: (type: LineJoinType) => void; setLineCap: (type: LineCapType) => void; } interface ReactPainterProps { height?: number; width?: number; initialColor?: string; initialLineWidth?: number; initialLineJoin?: LineJoinType; initialLineCap?: LineCapType; onSave?: (blob: Blob) => void; image?: File | string; render?: (props: RenderProps) => JSX.Element; } declare const ReactPainter: React.FC; interface UsePainterProps { height?: number; width?: number; initialColor?: string; initialLineWidth?: number; initialLineJoin?: LineJoinType; initialLineCap?: LineCapType; onSave?: (blob: Blob) => void; image?: File | string; } interface UsePainterResult { canvas: JSX.Element; triggerSave: () => void; getCanvasProps: (props?: PropsGetterInput) => PropsGetterResult; imageCanDownload: boolean | null; imageDownloadUrl: string | null; setColor: (color: string) => void; setLineWidth: (width: number) => void; setLineJoin: (type: LineJoinType) => void; setLineCap: (type: LineCapType) => void; } declare function usePainter({ height, width, initialColor, initialLineWidth, initialLineJoin, initialLineCap, onSave, image, }?: UsePainterProps): UsePainterResult; export { ReactPainter, type UsePainterProps, type UsePainterResult, ReactPainter as default, usePainter };