import { GitHubStatusContext } from "./GitHubContext";
import { GoalEnvironment } from "./support/environment";
/**
 * Core data for a goal
 */
export interface GoalDefinition {
    /**
     * Must be unique among goals
     * Should be camel case
     */
    uniqueName: string;
    /**
     * Optional environment for this goal to run in.
     * This is meant to allow for logical grouping of goals from code, testing and production etc.
     */
    environment?: GoalEnvironment;
    displayName?: string;
    plannedDescription?: string;
    requestedDescription?: string;
    completedDescription?: string;
    workingDescription?: string;
    failedDescription?: string;
    waitingForApprovalDescription?: string;
    waitingForPreApprovalDescription?: string;
    canceledDescription?: string;
    stoppedDescription?: string;
    skippedDescription?: string;
    isolated?: boolean;
    approvalRequired?: boolean;
    preApprovalRequired?: boolean;
    retryFeasible?: boolean;
}
/**
 * Represents a delivery action, such as Build or Deploy.
 */
export declare class Goal {
    readonly context: GitHubStatusContext;
    readonly definition: GoalDefinition;
    get environment(): string;
    get successDescription(): string;
    get inProcessDescription(): string;
    get failureDescription(): string;
    get plannedDescription(): string;
    get requestedDescription(): string;
    get waitingForApprovalDescription(): string;
    get waitingForPreApprovalDescription(): string;
    get canceledDescription(): string;
    get stoppedDescription(): string;
    get skippedDescription(): string;
    get name(): string;
    get uniqueName(): string;
    constructor(definition: GoalDefinition);
}
export declare class GoalWithPrecondition extends Goal {
    readonly dependsOn: Goal[];
    constructor(definition: GoalDefinition, ...dependsOn: Goal[]);
}
export declare function isGoalDefinition(f: Goal | GoalDefinition): f is GoalDefinition;
export declare function hasPreconditions(goal: Goal): goal is GoalWithPrecondition;
//# sourceMappingURL=Goal.d.ts.map