import { ViteDevServer, Plugin, EsbuildTransformOptions } from 'vite';
export { Plugin } from 'vite';
export * from 'emmetlite';
import { RenderOptions } from 'stylus';

type Data = Record<string, any>;
type Render = (str: string, data?: Data, maxDepth?: number) => string;
declare let appdata: Data[];
declare const render: Render;

declare const logger: (server: ViteDevServer, file: string) => void;
interface StylusOption extends RenderOptions {
    literal?: string;
}
declare const inlineStylus: (options?: StylusOption) => Plugin;
declare const inlineTS: (options?: EsbuildTransformOptions) => Plugin;

type Preprocessor = (s: TemplateStringsArray) => string;
interface Option extends Omit<Plugin, 'name'> {
    alwaysReload?: boolean;
    classy?: boolean;
    cssProps?: Set<string>;
    literal?: string;
    log?(server: ViteDevServer, file: string): void;
    paths?: string[];
    root?: string;
    read?(path: string): string;
    render?: Render;
    tplFile?: string;
    templated?: boolean;
    writeHtml?: boolean;
}
declare const _default: (config?: Option) => Plugin;

export { type Data, type Option, type Preprocessor, type Render, type StylusOption, appdata, _default as default, inlineStylus, inlineTS, logger, render };
