import { Project } from "@atomist/automation-client";
import { ApplyFingerprint, Aspect, ExtractFingerprint, FP } from "../../machine/Aspect";
import { VirtualProjectFinder } from "./VirtualProjectFinder";
import { AtomicAspect } from "../../machine/AtomicAspect";
export declare type EligibleAspect = Aspect | AtomicAspect;
/**
 * Make this aspect work with virtual projects as found by the given
 * VirtualProjectFinder
 * @param {Aspect} aspect to make virtual project aware
 * @param {VirtualProjectFinder} virtualProjectFinder. If not supplied, return the
 * original aspect.
 * @return {Aspect}
 */
export declare function makeVirtualProjectAware<A extends EligibleAspect>(aspect: A, virtualProjectFinder: VirtualProjectFinder): A;
/**
 * Turn this fingerprint into a multi fingerprint
 * @param {ExtractFingerprint} ef extractor
 * @param virtualProjectFinder virtual project finder
 * @return {ExtractFingerprint}
 */
export declare function makeExtractorVirtualProjectAware(ef: ExtractFingerprint, virtualProjectFinder: VirtualProjectFinder): (p: Project) => Promise<FP[]>;
export declare function makeApplyVirtualProjectAware(af: ApplyFingerprint, virtualProjectFinder: VirtualProjectFinder): ApplyFingerprint;
