import * as vue from 'vue';
import { Plugin, CSSProperties, VNode, PropType, Component } from 'vue';
export { V as VueEmailPluginOptions } from './shared/vue-email.439a114b.js';
import { TailwindConfig } from '@flowko/tw-to-css';

declare const VueEmailPlugin: Plugin;

interface StylesType {
    h1?: CSSProperties;
    h2?: CSSProperties;
    h3?: CSSProperties;
    h4?: CSSProperties;
    h5?: CSSProperties;
    h6?: CSSProperties;
    blockQuote?: CSSProperties;
    bold?: CSSProperties;
    italic?: CSSProperties;
    link?: CSSProperties;
    codeBlock?: CSSProperties;
    codeInline?: CSSProperties;
    p?: CSSProperties;
    li?: CSSProperties;
    ul?: CSSProperties;
    ol?: CSSProperties;
    image?: CSSProperties;
    br?: CSSProperties;
    hr?: CSSProperties;
    table?: CSSProperties;
    thead?: CSSProperties;
    tbody?: CSSProperties;
    tr?: CSSProperties;
    th?: CSSProperties;
    td?: CSSProperties;
    strikethrough?: CSSProperties;
}
interface Patterns {
    h1?: RegExp;
    h2?: RegExp;
    h3?: RegExp;
    h4?: RegExp;
    h5?: RegExp;
    h6?: RegExp;
    blockQuote?: RegExp;
    bold?: RegExp;
    italic?: RegExp;
    link?: RegExp;
    codeBlock?: RegExp;
    codeInline?: RegExp;
    p?: RegExp;
    li?: RegExp;
    ul?: RegExp;
    image?: RegExp;
    br?: RegExp;
    hr?: RegExp;
    table?: RegExp;
    strikethrough?: RegExp;
}

declare function pxToPt(px: string | number): number | null;

interface Margin {
    m?: string | number;
    mx?: string | number;
    my?: string | number;
    mt?: string | number;
    mr?: string | number;
    mb?: string | number;
    ml?: string | number;
}
declare function withMargin(props: Margin): {};

declare function unreachable(condition: never, message?: string): never;

declare function convertStyleStringToObj(styleString: string): {
    [key: string]: string;
};

declare function cleanup(str: string): string;

declare const _default$g: vue.DefineComponent<{}, () => VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default$f: vue.DefineComponent<{
    px: {
        type: PropType<string | number>;
        default: number;
    };
    py: {
        type: PropType<string | number>;
        default: number;
    };
    target: {
        type: StringConstructor;
        default: string;
    };
    href: StringConstructor;
    style: ObjectConstructor;
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
    px: {
        type: PropType<string | number>;
        default: number;
    };
    py: {
        type: PropType<string | number>;
        default: number;
    };
    target: {
        type: StringConstructor;
        default: string;
    };
    href: StringConstructor;
    style: ObjectConstructor;
}>>, {
    px: string | number;
    py: string | number;
    target: string;
}, {}>;

declare const _default$e: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default$d: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

type FallbackFont = 'Arial' | 'Helvetica' | 'Verdana' | 'Georgia' | 'Times New Roman';
type FontFormat = 'woff' | 'woff2' | 'truetype' | 'opentype' | 'embedded-opentype' | 'svg';
type FontWeight = 'normal' | 'bold' | 'bolder' | 'lighter' | number;
type FontStyle = 'normal' | 'italic' | 'oblique';
declare const _default$c: vue.DefineComponent<{
    fontFamily: {
        type: StringConstructor;
        required: true;
    };
    fallbackFontFamily: {
        type: PropType<FallbackFont | FallbackFont[]>;
        default: string;
    };
    webFont: {
        type: PropType<{
            url: string;
            format: FontFormat;
        }>;
        default: undefined;
    };
    fontStyle: {
        type: PropType<FontStyle>;
        default: string;
    };
    fontWeight: {
        type: PropType<FontWeight>;
        default: number;
    };
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
    fontFamily: {
        type: StringConstructor;
        required: true;
    };
    fallbackFontFamily: {
        type: PropType<FallbackFont | FallbackFont[]>;
        default: string;
    };
    webFont: {
        type: PropType<{
            url: string;
            format: FontFormat;
        }>;
        default: undefined;
    };
    fontStyle: {
        type: PropType<FontStyle>;
        default: string;
    };
    fontWeight: {
        type: PropType<FontWeight>;
        default: number;
    };
}>>, {
    fallbackFontFamily: FallbackFont | FallbackFont[];
    webFont: {
        url: string;
        format: FontFormat;
    };
    fontStyle: FontStyle;
    fontWeight: FontWeight;
}, {}>;

declare const _default$b: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default$a: vue.DefineComponent<{
    as: {
        type: PropType<"h1" | "h2" | "h3" | "h4" | "h5" | "h6">;
        default: string;
    };
    m: {
        type: PropType<string | number>;
        default: undefined;
    };
    mx: {
        type: PropType<string | number>;
        default: undefined;
    };
    my: {
        type: PropType<string | number>;
        default: undefined;
    };
    mt: {
        type: PropType<string | number>;
        default: undefined;
    };
    mr: {
        type: PropType<string | number>;
        default: undefined;
    };
    mb: {
        type: PropType<string | number>;
        default: undefined;
    };
    ml: {
        type: PropType<string | number>;
        default: undefined;
    };
    style: {
        type: PropType<string | CSSProperties>;
        default: undefined;
    };
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
    as: {
        type: PropType<"h1" | "h2" | "h3" | "h4" | "h5" | "h6">;
        default: string;
    };
    m: {
        type: PropType<string | number>;
        default: undefined;
    };
    mx: {
        type: PropType<string | number>;
        default: undefined;
    };
    my: {
        type: PropType<string | number>;
        default: undefined;
    };
    mt: {
        type: PropType<string | number>;
        default: undefined;
    };
    mr: {
        type: PropType<string | number>;
        default: undefined;
    };
    mb: {
        type: PropType<string | number>;
        default: undefined;
    };
    ml: {
        type: PropType<string | number>;
        default: undefined;
    };
    style: {
        type: PropType<string | CSSProperties>;
        default: undefined;
    };
}>>, {
    style: string | CSSProperties;
    as: "h1" | "h2" | "h3" | "h4" | "h5" | "h6";
    m: string | number;
    mx: string | number;
    my: string | number;
    mt: string | number;
    mr: string | number;
    mb: string | number;
    ml: string | number;
}, {}>;

declare const _default$9: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default$8: vue.DefineComponent<{
    lang: {
        type: StringConstructor;
        default: string;
    };
    dir: {
        type: PropType<"auto" | "ltr" | "rtl">;
        default: string;
    };
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
    lang: {
        type: StringConstructor;
        default: string;
    };
    dir: {
        type: PropType<"auto" | "ltr" | "rtl">;
        default: string;
    };
}>>, {
    lang: string;
    dir: "auto" | "ltr" | "rtl";
}, {}>;

declare const _default$7: vue.DefineComponent<{
    src: {
        type: StringConstructor;
        required: true;
    };
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
    src: {
        type: StringConstructor;
        required: true;
    };
}>>, {}, {}>;

declare const _default$6: vue.DefineComponent<{
    href: {
        type: StringConstructor;
        required: true;
    };
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
    href: {
        type: StringConstructor;
        required: true;
    };
}>>, {}, {}>;

declare const _default$5: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default$4: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default$3: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default$2: vue.DefineComponent<{
    config: {
        type: () => TailwindConfig;
        default: undefined;
        required: false;
    };
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
    config: {
        type: () => TailwindConfig;
        default: undefined;
        required: false;
    };
}>>, {
    config: TailwindConfig;
}, {}>;

declare const _default$1: vue.DefineComponent<{}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, {}, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{}>>, {}, {}>;

declare const _default: vue.DefineComponent<{
    source: {
        type: StringConstructor;
        required: true;
    };
    customStyles: {
        type: () => StylesType;
        default: undefined;
    };
    containerStyles: {
        type: () => CSSProperties;
        default: undefined;
    };
}, () => vue.VNode<vue.RendererNode, vue.RendererElement, {
    [key: string]: any;
}>, unknown, {}, {}, vue.ComponentOptionsMixin, vue.ComponentOptionsMixin, {}, string, vue.VNodeProps & vue.AllowedComponentProps & vue.ComponentCustomProps, Readonly<vue.ExtractPropTypes<{
    source: {
        type: StringConstructor;
        required: true;
    };
    customStyles: {
        type: () => StylesType;
        default: undefined;
    };
    containerStyles: {
        type: () => CSSProperties;
        default: undefined;
    };
}>>, {
    customStyles: StylesType;
    containerStyles: CSSProperties;
}, {}>;

interface Options {
    pretty?: boolean;
    plainText?: boolean;
}
/**
 * Convert Vue file into HTML email template
 * @param component The main component to render
 * @param props The props passed to the component
 * @param {Options} options The options to convert the template
 * @returns {string}
 */
declare function useRender(component: Component, props?: any, options?: Options): Promise<string>;

export { _default$g as EBody, _default$f as EButton, _default$e as EColumn, _default$d as EContainer, _default$c as EFont, _default$b as EHead, _default$a as EHeading, _default$9 as EHr, _default$8 as EHtml, _default$7 as EImg, _default$6 as ELink, _default as EMarkdown, _default$5 as EPreview, _default$4 as ERow, _default$3 as ESection, _default$2 as ETailwind, _default$1 as EText, type Margin, type Patterns, type StylesType, VueEmailPlugin, cleanup, convertStyleStringToObj, pxToPt, unreachable, useRender, withMargin };
