import * as binding from "./binding";
export type MinifierType = "js-module" | "js-script" | "json" | "css" | "html";
export type Options = {
    filename?: string;
    iframeSrcdoc?: boolean;
    scriptingEnabled?: boolean;
    forceSetHtml5Doctype?: boolean;
    collapseWhitespaces?: "none" | "all" | "smart" | "conservative" | "advanced-conservative" | "only-metadata";
    removeEmptyMetadataElements?: boolean;
    removeComments?: boolean;
    preserveComments?: string[];
    minifyConditionalComments?: boolean;
    removeEmptyAttributes?: boolean;
    removeRedundantAttributes?: "none" | "all" | "smart";
    collapseBooleanAttributes?: boolean;
    normalizeAttributes?: boolean;
    minifyJson?: boolean | {
        pretty?: boolean;
    };
    minifyJs?: boolean | {
        parser?: any;
        minifier?: any;
        codegen?: any;
    };
    minifyCss?: boolean | {
        lib: "lightningcss";
    } | {
        lib: "swc";
        parser?: any;
        minifier?: any;
        codegen?: any;
    };
    minifyAdditionalScriptsContent?: [string, MinifierType][];
    minifyAdditionalAttributes?: [string, MinifierType][];
    sortSpaceSeparatedAttributeValues?: boolean;
    sortAttributes?: boolean;
    tagOmission?: boolean | "keep-head-and-body";
    selfClosingVoidElements?: boolean;
    quotes?: boolean;
};
export type FragmentOptions = Options & {
    mode?: "no-quirks" | "limited-quirks" | "quirks";
    context_element?: binding.Element;
    form_element?: binding.Element;
};
export declare function minify(content: string | Buffer, options?: Options): Promise<binding.TransformOutput>;
export declare function minifyFragment(content: string | Buffer, options?: FragmentOptions): Promise<binding.TransformOutput>;
export declare function minifySync(content: string | Buffer, options?: Options): binding.TransformOutput;
export declare function minifyFragmentSync(content: string | Buffer, options?: FragmentOptions): binding.TransformOutput;
