import { RepoFilter } from "@atomist/automation-client/lib/operations/common/repoFilter";
import { Maker } from "@atomist/automation-client/lib/util/constructionUtils";
import { RepoTargets } from "../machine/RepoTargets";
import { ProjectPredicate } from "../mapping/PushTest";
import { CommandRegistration } from "./CommandRegistration";
/**
 * Superclass for all registrations that can apply to one or more projects.
 */
export interface ProjectsOperationRegistration<PARAMS> extends CommandRegistration<PARAMS> {
    /**
     * Allow customization of the repositories that an inspection targets.
     */
    targets?: Maker<RepoTargets>;
    /**
     * Additionally, programmatically limit repositories to inspect, by id
     */
    repoFilter?: RepoFilter;
    /**
     * Programmatically limit repositories to inspect, by a project predicate.
     * This can look inside project.
     */
    projectTest?: ProjectPredicate;
    /**
     * Configure the concurrency behavior of running project operations
     * on many repos
     */
    concurrency?: {
        /** Maximum number of concurrent project operations would be executing */
        maxConcurrent?: number;
        /** Indicate if a Job scheduling is required; even for only one project operation */
        requiresJob?: boolean;
    };
    /**
     * Whether or not this project operation should send messages during processing.
     *
     * Defaults to true.
     */
    chatty?: boolean;
}
//# sourceMappingURL=ProjectsOperationRegistration.d.ts.map