import * as vue from 'vue';
import { PropType, VNode, Plugin } from 'vue';

interface WatermarkFont {
    color?: string;
    fontSize?: number | string;
    fontWeight?: 'normal' | 'light' | 'weight' | number;
    fontStyle?: 'none' | 'normal' | 'italic' | 'oblique';
    fontFamily?: string;
}
interface WatermarkOptions {
    width?: number;
    height?: number;
    image?: string;
    content?: string | string[];
    gap?: [number, number];
    offset?: [number, number];
    zIndex?: number;
    rotate?: number;
    font?: WatermarkFont;
}
interface WatermarkDrawingParams {
    drawX: number;
    drawY: number;
    rotateX: number;
    rotateY: number;
}

declare const Watermark: vue.DefineComponent<vue.ExtractPropTypes<{
    options: {
        type: PropType<WatermarkOptions>;
        default: {};
    };
}>, () => VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.PublicProps, Readonly<vue.ExtractPropTypes<{
    options: {
        type: PropType<WatermarkOptions>;
        default: {};
    };
}>> & Readonly<{}>, {
    options: WatermarkOptions;
}, {}, {}, {}, string, vue.ComponentProvideOptions, true, {}, any>;

declare function WatermarkPlugin(defaultOptions?: WatermarkOptions): Plugin;

export { Watermark, type WatermarkDrawingParams, type WatermarkFont, type WatermarkOptions, WatermarkPlugin as default };
