import '../../../assert/js/assert.js';
import '../../../globals.js';
import { LineCap, LineJoin, LineStyles } from '../../../kite/js/imports.js';
import Constructor from '../../../phet-core/js/types/Constructor.js';
import { CanvasContextWrapper, Color, LinearGradient, Node, Paint, Path, Pattern, RadialGradient, Text, TPaint } from '../imports.js';
declare const PAINTABLE_OPTION_KEYS: string[];
declare const DEFAULT_OPTIONS: {
    fill: null;
    fillPickable: boolean;
    stroke: null;
    strokePickable: boolean;
    lineWidth: number;
    lineCap: string;
    lineJoin: string;
    lineDashOffset: number;
    miterLimit: number;
};
export type PaintableOptions = {
    fill?: TPaint;
    fillPickable?: boolean;
    stroke?: TPaint;
    strokePickable?: boolean;
    lineWidth?: number;
    lineCap?: LineCap;
    lineJoin?: LineJoin;
    miterLimit?: number;
    lineDash?: number[];
    lineDashOffset?: number;
    cachedPaints?: TPaint[];
};
export type PaintableNode = Path | Text;
declare const PAINTABLE_DRAWABLE_MARK_FLAGS: string[];
export interface TPaintable {
    _fill: TPaint;
    _fillPickable: boolean;
    _stroke: TPaint;
    _strokePickable: boolean;
    _cachedPaints: Paint[];
    _lineDrawingStyles: LineStyles;
    setFill(fill: TPaint): this;
    fill: TPaint;
    getFill(): TPaint;
    hasFill(): boolean;
    getFillValue(): null | string | Color | LinearGradient | RadialGradient | Pattern | Paint;
    get fillValue(): null | string | Color | LinearGradient | RadialGradient | Pattern | Paint;
    setStroke(stroke: TPaint): this;
    stroke: TPaint;
    getStroke(): TPaint;
    hasStroke(): boolean;
    hasPaintableStroke(): boolean;
    getStrokeValue(): null | string | Color | LinearGradient | RadialGradient | Pattern | Paint;
    get strokeValue(): null | string | Color | LinearGradient | RadialGradient | Pattern | Paint;
    setFillPickable(pickable: boolean): this;
    fillPickable: boolean;
    isFillPickable(): boolean;
    setStrokePickable(pickable: boolean): this;
    strokePickable: boolean;
    isStrokePickable(): boolean;
    setLineWidth(lineWidth: number): this;
    lineWidth: number;
    getLineWidth(): number;
    setLineCap(lineCap: LineCap): this;
    lineCap: LineCap;
    getLineCap(): LineCap;
    setLineJoin(lineJoin: LineJoin): this;
    lineJoin: LineJoin;
    getLineJoin(): LineJoin;
    setMiterLimit(miterLimit: number): this;
    miterLimit: number;
    getMiterLimit(): number;
    setLineDash(lineDash: number[]): this;
    lineDash: number[];
    getLineDash(): number[];
    hasLineDash(): boolean;
    setLineDashOffset(lineDashOffset: number): this;
    lineDashOffset: number;
    getLineDashOffset(): number;
    setLineStyles(lineStyles: LineStyles): this;
    lineStyles: LineStyles;
    getLineStyles(): LineStyles;
    setCachedPaints(paints: TPaint[]): this;
    cachedPaints: TPaint[];
    getCachedPaints(): TPaint[];
    addCachedPaint(paint: TPaint): void;
    removeCachedPaint(paint: TPaint): void;
    beforeCanvasFill(wrapper: CanvasContextWrapper): void;
    afterCanvasFill(wrapper: CanvasContextWrapper): void;
    beforeCanvasStroke(wrapper: CanvasContextWrapper): void;
    afterCanvasStroke(wrapper: CanvasContextWrapper): void;
    getCSSFill(): string;
    getSimpleCSSStroke(): string;
    appendFillablePropString(spaces: string, result: string): string;
    appendStrokablePropString(spaces: string, result: string): string;
    getFillRendererBitmask(): number;
    getStrokeRendererBitmask(): number;
    invalidateFill(): void;
    invalidateStroke(): void;
}
declare const Paintable: <SuperType extends Constructor<Node>>(k: SuperType) => SuperType & Constructor<TPaintable>;
export { Paintable as default, PAINTABLE_DRAWABLE_MARK_FLAGS, PAINTABLE_OPTION_KEYS, DEFAULT_OPTIONS, DEFAULT_OPTIONS as PAINTABLE_DEFAULT_OPTIONS };
//# sourceMappingURL=Paintable.d.ts.map