import * as _angular_core from '@angular/core';
import { OnDestroy, Renderer2, ElementRef } from '@angular/core';
import * as i1 from '@angular/forms';
import * as i2 from '@acorex/components/range-slider';
import * as i3 from '@acorex/components/select-box';
import * as i4 from '@acorex/components/button';
import * as i5 from '@acorex/components/color-box';
import * as i6 from '@acorex/components/popover';
import * as i7 from '@acorex/components/decorators';
import * as i8 from '@acorex/components/tooltip';
import * as polytype from 'polytype';
import { MXInputBaseValueComponent, MXLookComponent } from '@acorex/cdk/common';

declare class AXPaintService {
    penColor: _angular_core.WritableSignal<string | CanvasGradient | CanvasPattern>;
    highlightColor: _angular_core.WritableSignal<string | CanvasGradient | CanvasPattern>;
    penWidth: _angular_core.WritableSignal<number>;
    highlightWidth: _angular_core.WritableSignal<number>;
    eraserWidth: _angular_core.WritableSignal<number>;
    toggleClear: _angular_core.WritableSignal<boolean>;
    activeToolState: _angular_core.WritableSignal<"pen" | "highlight" | "eraser">;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPaintService, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXPaintService>;
}

declare const AXPaintContainerComponent_base: polytype.Polytype.ClusteredConstructor<[{
    new (): MXInputBaseValueComponent<string>;
    ɵfac: _angular_core.ɵɵFactoryDeclaration<MXInputBaseValueComponent<any>, never>;
    ɵprov: _angular_core.ɵɵInjectableDeclaration<MXInputBaseValueComponent<any>>;
}, typeof MXLookComponent]>;
/**
 * paint container.
 * @category Components
 */
declare class AXPaintContainerComponent extends AXPaintContainerComponent_base {
    #private;
    protected service: AXPaintService;
    readonly editMode: _angular_core.InputSignal<boolean>;
    get __hostClass(): string;
    /**
     * Sets the active drawing tool.
     *
     * @param tool - The tool to activate: 'pen', 'highlight', or 'eraser'
     */
    setActiveTool(tool: 'pen' | 'highlight' | 'eraser'): void;
    /**
     * Sets the pen color for drawing.
     *
     * @param color - The color to use for the pen tool
     */
    setPenColor(color: string | CanvasGradient | CanvasPattern): void;
    /**
     * Sets the highlight color for highlighting.
     *
     * @param color - The color to use for the highlight tool
     */
    setHighlightColor(color: string | CanvasGradient | CanvasPattern): void;
    /**
     * Sets the pen width for drawing.
     *
     * @param width - The width of the pen stroke in pixels
     */
    setPenWidth(width: number): void;
    /**
     * Sets the highlight width for highlighting.
     *
     * @param width - The width of the highlight stroke in pixels
     */
    setHighlightWidth(width: number): void;
    /**
     * Sets the eraser width for erasing.
     *
     * @param width - The width of the eraser in pixels
     */
    setEraserWidth(width: number): void;
    /**
     * Clears the entire canvas.
     */
    clear(): void;
    private get __hostName();
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPaintContainerComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPaintContainerComponent, "ax-paint-container", never, { "look": { "alias": "look"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "editMode": { "alias": "editMode"; "required": false; "isSignal": true; }; }, {}, never, ["*", "ax-validation-rule"], true, never>;
}

/**
 * @category Components
 * paint view
 */
declare class AXPaintViewComponent implements OnDestroy {
    #private;
    /** @ignore */
    private parent;
    /** @ignore */
    protected service: AXPaintService;
    /** @ignore */
    protected renderer: Renderer2;
    private platformID;
    protected hostElem: ElementRef<any>;
    /** @ignore */
    private resizeEvent;
    /**
     * Specifies the class that pass to component.
     *
     */
    readonly customClass: _angular_core.InputSignal<string>;
    readonly paintBackgroundColor: _angular_core.InputSignal<"black" | "white">;
    /** @ignore */
    protected canvasElem: _angular_core.Signal<ElementRef<HTMLCanvasElement>>;
    /** @ignore */
    protected ctx: _angular_core.WritableSignal<CanvasRenderingContext2D>;
    /** @ignore */
    protected isPainting: _angular_core.WritableSignal<boolean>;
    /** @ignore */
    protected isUserInteract: _angular_core.WritableSignal<boolean>;
    /** @ignore */
    ngOnDestroy(): void;
    /** @ignore */
    protected resizeEventHandler(): void;
    /** @ignore */
    protected penConfigHandler(penType: 'eraser' | 'pen' | 'highlight'): void;
    /** @ignore */
    protected getBoundingCanvasHandler(): any;
    /** @ignore */
    protected mouseDownHandler(e: MouseEvent): void;
    /** @ignore */
    protected mouseMoveHandler(e: MouseEvent): void;
    /** @ignore */
    protected mouseUpHandler(): void;
    /**
     * Exports the canvas content as an image.
     *
     * @param format - The image format: 'image/webp', 'image/png', or 'image/jpeg'
     */
    getOutPut(e: 'image/webp' | 'image/png' | 'image/jpeg'): void;
    get __hostClass(): string[];
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPaintViewComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPaintViewComponent, "ax-paint-view", never, { "customClass": { "alias": "class"; "required": false; "isSignal": true; }; "paintBackgroundColor": { "alias": "paintBackgroundColor"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class AXPaintToolsSelectorComponent {
    protected service: AXPaintService;
    protected pen: _angular_core.WritableSignal<string>;
    protected highlight: _angular_core.WritableSignal<string>;
    protected eraser: _angular_core.WritableSignal<string>;
    protected reset: _angular_core.WritableSignal<string>;
    protected changeToolHandler(tool: 'pen' | 'highlight' | 'eraser'): void;
    protected clear(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPaintToolsSelectorComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPaintToolsSelectorComponent, "ax-paint-tools-selector", never, {}, {}, never, never, true, never>;
}

/**
 * paint mode.
 * @category Components
 */
declare class AXPaintPenToolComponent {
    protected service: AXPaintService;
    /** @ignore */
    protected value: _angular_core.WritableSignal<number>;
    /** @ignore */
    protected selectedColor: _angular_core.WritableSignal<string | CanvasGradient | CanvasPattern>;
    protected changeColorHandler(e: string): void;
    /** @ignore */
    protected valueHandler(e: number): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPaintPenToolComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPaintPenToolComponent, "ax-paint-pen-tool", never, {}, {}, never, never, true, never>;
}

/**
 * paint mode.
 * @category Components
 */
declare class AXPaintHighlightToolComponent {
    protected service: AXPaintService;
    protected value: _angular_core.WritableSignal<number>;
    protected selectedColor: _angular_core.WritableSignal<string | CanvasGradient | CanvasPattern>;
    protected changeColorHandler(e: string): void;
    /** @ignore */
    protected valueHandler(e: number): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPaintHighlightToolComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPaintHighlightToolComponent, "ax-paint-highlight-tool", never, {}, {}, never, never, true, never>;
}

/**
 * paint mode.
 * @category Components
 */
declare class AXPaintEraserToolComponent {
    protected service: AXPaintService;
    protected value: _angular_core.WritableSignal<number>;
    /** @ignore */
    protected valueHandler(e: number): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPaintEraserToolComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXPaintEraserToolComponent, "ax-paint-eraser-tool", never, {}, {}, never, never, true, never>;
}

declare class AXPaintModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXPaintModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXPaintModule, never, [typeof i1.FormsModule, typeof i2.AXRangeSliderModule, typeof i3.AXSelectBoxModule, typeof i4.AXButtonModule, typeof i5.AXColorBoxModule, typeof i6.AXPopoverModule, typeof i7.AXDecoratorModule, typeof i8.AXTooltipModule, typeof AXPaintContainerComponent, typeof AXPaintViewComponent, typeof AXPaintToolsSelectorComponent, typeof AXPaintPenToolComponent, typeof AXPaintHighlightToolComponent, typeof AXPaintEraserToolComponent], [typeof AXPaintContainerComponent, typeof AXPaintViewComponent, typeof AXPaintToolsSelectorComponent, typeof AXPaintPenToolComponent, typeof AXPaintHighlightToolComponent, typeof AXPaintEraserToolComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXPaintModule>;
}

export { AXPaintContainerComponent, AXPaintEraserToolComponent, AXPaintHighlightToolComponent, AXPaintModule, AXPaintPenToolComponent, AXPaintToolsSelectorComponent, AXPaintViewComponent };
