import type { ITopologyComponentSpec, ITopologyPlan } from './TopologyTypes';
declare class ComponentBuilder {
    private readonly spec;
    private readonly parent;
    constructor(parent: TopologyBuilder | ComponentBuilder, name: string, tag: string);
    kind(kind: ITopologyComponentSpec['kind']): this;
    accepts(...channels: string[]): this;
    emits(...events: string[]): this;
    implements(ifaceName: string): this;
    onRuntime(runtimeName: string): this;
    onRuntimeMount(runtimeMount: string): this;
    withExplicitMount(mount: string): this;
    child(name: string, tag: string): ComponentBuilder;
    end(): TopologyBuilder | ComponentBuilder;
    _getSpec(): ITopologyComponentSpec;
    _addChild(child: ITopologyComponentSpec): void;
}
export declare class TopologyBuilder {
    private readonly id;
    private _rootRuntime?;
    private runtimes;
    private rootComponents;
    constructor(id?: string);
    rootRuntime(name: string, mount: string, tags?: string[]): this;
    runtime(name: string, mount: string, tags?: string[]): this;
    component(name: string, tag: string): ComponentBuilder;
    build(): ITopologyPlan;
    _addRootComponent(spec: ITopologyComponentSpec): void;
}
export {};
//# sourceMappingURL=TopologyBuilder.d.ts.map