import { GitProject } from "@atomist/automation-client/lib/project/git/GitProject";
import { ProjectLoader, ProjectLoadingParameters } from "./ProjectLoader";
export declare type WithLoadedLazyProject<T = any> = (p: GitProject & LazyProject) => Promise<T>;
/**
 * Marker interface to declare a ProjectLoader to lazily load projects
 */
export interface LazyProjectLoader extends ProjectLoader {
    /**
     * This project loader is always lazy
     */
    isLazy: true;
    /**
     * Perform an action with the given project
     */
    doWithProject<T>(params: ProjectLoadingParameters, action: WithLoadedLazyProject<T>): Promise<T>;
}
export interface LazyProject {
    materialized(): boolean;
    materialize(): Promise<GitProject>;
}
export declare function isLazyProjectLoader(pl: ProjectLoader): pl is LazyProjectLoader;
//# sourceMappingURL=LazyProjectLoader.d.ts.map