import { ActionResult } from "../../action/ActionResult";
import { HandlerContext } from "../../HandlerContext";
import { Project } from "../../project/Project";
import { EditorOrReviewerParameters } from "../common/params/BaseEditorOrReviewerParameters";
import { RepoRef } from "../common/RepoId";
export interface Tags {
    repoId: RepoRef;
    tags: string[];
}
export declare class DefaultTags implements Tags {
    repoId: RepoRef;
    tags: string[];
    constructor(repoId: RepoRef, tags: string[]);
}
export declare type Tagger<P extends EditorOrReviewerParameters = EditorOrReviewerParameters> = (p: Project, context: HandlerContext, params?: P) => Promise<Tags>;
export declare type TagRouter<PARAMS extends EditorOrReviewerParameters = EditorOrReviewerParameters> = (tags: Tags, params: PARAMS, ctx: HandlerContext) => Promise<ActionResult<Tags>>;
/**
 * Combine these taggers
 * @param t0 first tagger
 * @param {Tagger} taggers
 * @return {Tagger}
 */
export declare function unifiedTagger(t0: Tagger, ...taggers: Tagger[]): Tagger;
//# sourceMappingURL=Tagger.d.ts.map