import { Binding } from '@tsdi/components';
import { TemplateOption, Src } from '@tsdi/activities';
import { WatcherOptions, RollupCache, ExternalOption, GlobalsOption, RollupOptions, OutputOptions } from 'rollup';
import { NodeActivityContext, NodeExpression } from '../NodeActivityContext';
import { NodeActivity } from '../NodeActivity';
/**
 * rollup activity template option.
 *
 * @export
 * @interface RollupOption
 * @extends {TemplateOption}
 */
export interface RollupOption extends TemplateOption {
    /**
     * rollup input setting.
     *
     * @type {Binding<NodeExpression<Src>>}
     * @memberof RollupOption
     */
    input: Binding<NodeExpression<Src>>;
    /**
     * rollup source maps
     *
     * @type {Binding<NodeExpression<boolean>>}
     * @memberof RollupOption
     */
    sourcemap?: Binding<NodeExpression<boolean>>;
    /**
     * rollup output setting.
     *
     * @type {(Binding<NodeExpression<OutputOptions>>)}
     * @memberof RollupOption
     */
    output?: Binding<NodeExpression<OutputOptions>>;
    /**
     * rollup external setting.
     *
     * @type {Binding<NodeExpression<ExternalOption>>}
     * @memberof RollupOption
     */
    external?: Binding<NodeExpression<ExternalOption>>;
    /**
     * globals.
     *
     * @type {Binding<NodeExpression<GlobalsOption>>}
     * @memberof RollupOption
     */
    globals?: Binding<NodeExpression<GlobalsOption>>;
    /**
     * rollup plugins setting.
     *
     * @type {Binding<NodeExpression<Plugin[]>>}
     * @memberof RollupOption
     */
    plugins?: Binding<NodeExpression<Plugin[]>>;
    /**
     * cache.
     */
    cache?: Binding<NodeExpression<RollupCache>>;
    watch?: Binding<NodeExpression<WatcherOptions>>;
    /**
     * custom setup rollup options.
     *
     * @type {(Binding<RollupOptions>)}
     * @memberof RollupOption
     */
    options?: Binding<NodeExpression<RollupOptions>>;
}
/**
 * rollup activity.
 *
 * @export
 * @class RollupActivity
 * @extends {NodeActivity<void>}
 */
export declare class RollupActivity extends NodeActivity<void> {
    input: NodeExpression<Src>;
    output: NodeExpression<OutputOptions>;
    plugins: NodeExpression<Plugin[]>;
    external: NodeExpression<ExternalOption>;
    globals?: NodeExpression<GlobalsOption>;
    sourcemap?: NodeExpression<boolean>;
    cache: NodeExpression<RollupCache>;
    options: NodeExpression<RollupOptions>;
    watch: NodeExpression<WatcherOptions>;
    execute(ctx: NodeActivityContext): Promise<void>;
    protected getInputProps(): string[];
    protected setOptions(ctx: NodeActivityContext, opts: RollupOptions, key: string, val: any): void;
    protected vailfExternal(external: string[]): string[];
    protected resolvePlugins(ctx: NodeActivityContext, opts: RollupOptions): Promise<void>;
    static ρAnn(): any;
}
