import { HandlerContext } from "@atomist/automation-client";
import { CommandHandlerRegistration, SoftwareDeliveryMachine } from "@atomist/sdm";
import { Aspect } from "../../..";
import { FP, Vote } from "../../machine/Aspect";
export declare class SetTargetFingerprintFromLatestMasterParameters {
    owner: string;
    repo: string;
    providerId: string;
    fingerprint: string;
    branch: string;
    msgId?: string;
}
/**
 * bootstraps a Fingerprint from a project
 * looks up the fingerprint before setting it but name of fingerprint is in the parameter list
 */
export declare function setTargetFingerprintFromLatestMaster(sdm: SoftwareDeliveryMachine, aspects: Aspect[]): CommandHandlerRegistration<SetTargetFingerprintFromLatestMasterParameters>;
export declare class UpdateTargetFingerprintParameters {
    msgId?: string;
    sha: string;
    targetfingerprint: string;
    broadcast: boolean;
}
export declare const UpdateTargetFingerprintName = "RegisterTargetFingerprint";
/**
 * Used by MessageMaker to implement SetNewTarget
 * (knows the name, type, and sha of the potential target fingerprint)
 */
export declare function updateTargetFingerprint(sdm: SoftwareDeliveryMachine, aspects: Aspect[]): CommandHandlerRegistration<UpdateTargetFingerprintParameters>;
export declare class SetTargetFingerprintParameters {
    fp: string;
    msgId?: string;
}
/**
 * Used by other diff handlers to change or bootstrap a target because coordinates have changed
 * (knows the whole json structure of the fingerprint)
 */
export declare function setTargetFingerprint(aspects: Aspect[]): CommandHandlerRegistration<SetTargetFingerprintParameters>;
export declare class DeleteTargetFingerprintParameters {
    type: string;
    name: string;
    msgId: string;
}
export declare function deleteTargetFingerprint(sdm: SoftwareDeliveryMachine): CommandHandlerRegistration<DeleteTargetFingerprintParameters>;
/**
 * Used in other diff handlers to maybe choose to set a new target because one of them has changed
 * (assumed to be a new message - not updating anything)
 *
 * @param ctx
 * @param feature
 * @param fp
 * @param channel
 */
export declare function setNewTargetFingerprint(ctx: HandlerContext, aspect: Aspect, fp: FP, channel: string): Promise<Vote>;
export declare class SelectTargetFingerprintFromCurrentProjectParameters {
    owner: string;
    repo: string;
    providerId: string;
    branch: string;
    msgId: string;
}
/**
 * Bootstrap a fingerprint target by selecting one out of the current set
 */
export declare function selectTargetFingerprintFromCurrentProject(sdm: SoftwareDeliveryMachine): CommandHandlerRegistration<SelectTargetFingerprintFromCurrentProjectParameters>;
