import type { Plugin } from 'esbuild';
import type { Meta as LitCSSModuleMeta } from '@pwrs/lit-css';
import type { LitCSSOptions } from 'esbuild-plugin-lit-css';
export interface PfeEsbuildOptions {
    /** Extra esbuild plugins */
    plugins?: Plugin[];
    /** Whether to bundle the components and all their dependencies */
    bundle?: boolean;
    /** repository root (default: process.cwd()) */
    cwd?: string;
    /** exclude these directories (under the workspace) from the build */
    entryPointFilesExcludes?: string[];
    /** packages to include */
    include?: string[];
    /** workspace directory from and into which to build elements. (default: `elements`) */
    workspace?: string;
    /** production bundles are minified */
    mode?: 'development' | 'production';
    /** Packages to treat as external, i.e. not to bundle */
    external: string[];
}
export interface PfeEsbuildSingleFileOptions {
    /** list of NPM package names to bundle alongside the repo's components */
    additionalPackages?: string[];
    /** String contents of an entry point file for all elements to be bundled. Defaults to an entry point containing all installed pfe-* elements. */
    componentsEntryPointContents?: string;
    outfile?: string;
    litCssOptions?: LitCSSOptions;
    plugins?: Plugin[];
    minify?: boolean;
    external?: string[];
}
export interface PfeBasePluginOptions {
    minify?: boolean;
    litCssOptions?: LitCSSOptions;
}
/** lit-css transform plugin to process `.scss` files on-the-fly */
export declare function transformSass(source: string, { filePath, minify }: LitCSSModuleMeta & {
    minify?: boolean;
}): Promise<string>;
/**
 * The basic set of plugins that all esbuild jobs should apply
 * - Transform (and optionally minify) SCSS
 * - optionally minify HTML
 * - replace the package version in component sources
 */
export declare function getBasePlugins({ minify, litCssOptions }?: PfeBasePluginOptions): Plugin[];
/** Generate a temporary file containing namespace exports of all pfe components */
export declare function componentsEntryPoint(options?: {
    additionalPackages?: string[];
}): Promise<any>;
/** Create a single-file production bundle of all elements */
export declare function singleFileBuild(options?: PfeEsbuildSingleFileOptions): Promise<string[]>;
/**
 * Build all components in a monorepo
 */
export declare function pfeBuild(options?: PfeEsbuildOptions): Promise<string[]>;
