import * as i0 from '@angular/core';
import { OnInit, OnChanges, SimpleChanges } from '@angular/core';

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */
interface FontType {
    color?: string;
    fontSize?: number;
    fontWeight?: 'normal' | 'light' | 'weight' | number;
    fontFamily?: string;
    fontStyle?: 'none' | 'normal' | 'italic' | 'oblique';
}
interface MarkStyleType {
    zIndex: number;
    position: string;
    left: string | number;
    top: string | number;
    width: string;
    height: string;
    pointerEvents: string;
    backgroundRepeat: string;
    backgroundPosition?: string;
    visibility: string;
}
interface MarkStyleCanvasType extends MarkStyleType {
    backgroundImage: string;
    backgroundSize: string;
}

declare class NzWaterMarkComponent implements OnInit, OnChanges {
    nzWidth: number;
    nzHeight: number;
    nzRotate: number;
    nzZIndex: number;
    nzImage: string;
    nzContent: string | string[];
    nzFont: FontType;
    nzGap: [number, number];
    nzOffset: [number, number];
    private isServer;
    private document;
    private el;
    private cdr;
    waterMarkElement: HTMLDivElement;
    stopObservation: boolean;
    private observer;
    constructor();
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    getFont(): void;
    getMarkStyle(): MarkStyleType;
    destroyWatermark(): void;
    appendWatermark(base64Url: string, markWidth: number): void;
    getMarkSize(ctx: CanvasRenderingContext2D): [number, number];
    fillTexts(ctx: CanvasRenderingContext2D, drawX: number, drawY: number, drawWidth: number, drawHeight: number): void;
    drawText(canvas: HTMLCanvasElement, ctx: CanvasRenderingContext2D, drawX: number, drawY: number, drawWidth: number, drawHeight: number, alternateRotateX: number, alternateRotateY: number, alternateDrawX: number, alternateDrawY: number, markWidth: number): void;
    renderWatermark(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzWaterMarkComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzWaterMarkComponent, "nz-water-mark", ["nzWaterMark"], { "nzWidth": { "alias": "nzWidth"; "required": false; }; "nzHeight": { "alias": "nzHeight"; "required": false; }; "nzRotate": { "alias": "nzRotate"; "required": false; }; "nzZIndex": { "alias": "nzZIndex"; "required": false; }; "nzImage": { "alias": "nzImage"; "required": false; }; "nzContent": { "alias": "nzContent"; "required": false; }; "nzFont": { "alias": "nzFont"; "required": false; }; "nzGap": { "alias": "nzGap"; "required": false; }; "nzOffset": { "alias": "nzOffset"; "required": false; }; }, {}, never, ["*"], true, never>;
    static ngAcceptInputType_nzWidth: unknown;
    static ngAcceptInputType_nzHeight: unknown;
    static ngAcceptInputType_nzRotate: unknown;
    static ngAcceptInputType_nzZIndex: unknown;
}

declare class NzWaterMarkModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzWaterMarkModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NzWaterMarkModule, never, [typeof NzWaterMarkComponent], [typeof NzWaterMarkComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NzWaterMarkModule>;
}

export { NzWaterMarkComponent, NzWaterMarkModule };
export type { FontType, MarkStyleCanvasType, MarkStyleType };
