import { FirstArgumentType } from "../service/cache-registry/i-cache-registry-get-result";
import { IBabelMinifyOptions } from "../service/minify/i-babel-minify-options";
import { ICompressionAlgorithmOptions } from "../service/compression/compression-algorithm-options";
import { OutputOptions } from "rollup";
export declare type BabelOptions = Exclude<Exclude<FirstArgumentType<typeof import("@wessberg/rollup-plugin-ts").default>, undefined>["babel"], undefined>;
export declare type PostCSSPlugin = import("postcss").Plugin<{}>;
export interface IFoveaCliBundleOptimizationConfig {
    comments: boolean | ((value: string) => boolean);
    minify: boolean | IBabelMinifyOptions;
    compress: boolean | ICompressionAlgorithmOptions;
    treeshake: boolean | Partial<{
        assignedTopLevelCallExpressionsHasNoSideEffects: boolean;
        readingPropertiesOfObjectsHasNoSideEffects: boolean;
        externalDependenciesHasNoSideEffects: boolean;
    }>;
}
export interface IFoveaCliOutputConfig {
    tag: string;
    directory: string;
    serve: IFoveaCliServeConfig;
    postcss?: Partial<{
        additionalPlugins: PostCSSPlugin[];
    }>;
    babel?: Pick<BabelOptions, "additionalPlugins" | "additionalPresets">;
    browserslist?: string[];
    disable: boolean | "watch";
    match(userAgent: string): boolean;
    optimization?: Partial<IFoveaCliBundleOptimizationConfig>;
    sourcemap?: OutputOptions["sourcemap"];
    banner?: OutputOptions["banner"];
    footer?: OutputOptions["footer"];
    intro?: OutputOptions["intro"];
    outro?: OutputOptions["outro"];
}
export declare type FoveaCliOutputConfigs = IFoveaCliOutputConfig[] | IFoveaCliOutputConfig;
export interface IFoveaCliServeConfig {
    port: number;
    host: string;
}
export interface IFoveaCliEnvironmentConfig {
    environmentDefaults: string;
    environment: string;
}
export interface IFoveaCliAssetOptimizationConfig {
    media: IFoveaCliAssetOptimizationMediaConfig;
    skipOptimization: boolean;
}
export interface IFoveaCliAssetOptimizationMediaConfig {
    maxSize?: Partial<{
        width: number;
        height: number;
    }>;
    progressive: boolean;
    quality: number;
}
export interface IFoveaCliAssetAppIconConfig {
    path: string;
    sizes: number[];
}
export interface ICustomPath {
    input: string;
    output: string;
}
export declare type CustomPath = string | ICustomPath;
export interface IFoveaCliAssetConfig {
    path: string;
    appIcon: IFoveaCliAssetAppIconConfig;
    optimization: IFoveaCliAssetOptimizationConfig;
}
export interface IFoveaCliStyleConfig {
    directory: string;
    theme: string;
    global: string;
}
export interface IFoveaCliConfigMinusOutput {
    exclude: Iterable<RegExp> | RegExp;
    entry: string;
    style: IFoveaCliStyleConfig;
    manifest: string;
    index: string;
    serviceWorker: string;
    tsconfig: string;
    environment: IFoveaCliEnvironmentConfig;
    asset: IFoveaCliAssetConfig;
    packageManager: "yarn" | "npm";
    polyfills: string[];
}
export interface IFoveaCliConfig extends IFoveaCliConfigMinusOutput {
    output: FoveaCliOutputConfigs;
}
export interface IFoveaCliConfigWithAppName extends IFoveaCliConfig {
    output: FoveaCliOutputConfigs;
    appName: string;
}
