import { IComposerDone } from "./Composer";
import { GuidValue } from '@omnia/fx-models';
export interface IDependencyComposer<T> {
    /**
    *   Add dependencies to other manifests
    *   Dependent manifests will be loaded before the current manifest is loaded.
    */
    withNoDependency: () => T;
    /**
    *   Add dependencies to other manifests
    *   Dependent manifests will be loaded before the current manifest is loaded.
    */
    withDependency: (manifestId: GuidValue) => ICompletableDependencyComposer<T>;
    /**
    *   Add dependencies to a manifest in another omnia service
    *   Dependent manifests will be loaded before the current manifest is loaded.
    */
    withExternalDependency: (omniaServiceId: GuidValue, manifestId: GuidValue) => ICompletableDependencyComposer<T>;
}
export interface ICompletableDependencyComposer<T> extends IDependencyComposer<T>, IComposerDone<T> {
}
export declare class DependencyComposer<T> implements ICompletableDependencyComposer<T> {
    private currentManifestId;
    private composerForDone;
    constructor(currentManifestId: string, composerForDone: T);
    done: () => T;
    withNoDependency: () => T;
    withDependency: (manifestId: GuidValue) => this;
    withExternalDependency: (omniaServiceId: GuidValue, manifestId: GuidValue) => this;
}
