import { Configuration } from "@atomist/automation-client/lib/configuration";
import { NoParameters } from "@atomist/automation-client/lib/SmartParameters";
import { ExtensionPack } from "../../../api/machine/ExtensionPack";
import { SoftwareDeliveryMachine } from "../../../api/machine/SoftwareDeliveryMachine";
import { SoftwareDeliveryMachineConfiguration } from "../../../api/machine/SoftwareDeliveryMachineOptions";
import { PushTest } from "../../../api/mapping/PushTest";
import { CommandHandlerRegistration } from "../../../api/registration/CommandHandlerRegistration";
import { EventHandlerRegistration } from "../../../api/registration/EventHandlerRegistration";
import { ConfigureMachineOptions, DeliveryGoals, GoalConfigurer, GoalCreator } from "../configure";
import { GoalMaker } from "./mapGoals";
import { PushTestMaker } from "./mapPushTests";
export interface YamlSoftwareDeliveryMachineConfiguration {
    extensionPacks?: ExtensionPack[];
}
export declare type YamlCommandHandlerRegistration = Omit<CommandHandlerRegistration, "name" | "paramsMaker" | "parameters">;
export declare type CommandMaker<PARAMS = NoParameters> = (sdm: SoftwareDeliveryMachine) => Promise<YamlCommandHandlerRegistration> | YamlCommandHandlerRegistration;
export declare type YamlEventHandler<PARAMS = NoParameters> = Omit<EventHandlerRegistration<PARAMS>, "name">;
export declare type EventMaker<PARAMS = NoParameters> = (sdm: SoftwareDeliveryMachine) => Promise<YamlEventHandler<PARAMS>> | YamlEventHandler<PARAMS>;
export declare type ConfigurationMaker = (cfg: Configuration) => Promise<SoftwareDeliveryMachineConfiguration<YamlSoftwareDeliveryMachineConfiguration>> | SoftwareDeliveryMachineConfiguration<YamlSoftwareDeliveryMachineConfiguration>;
export declare enum Target {
    SDM = "sdm",
    Skill = "skill"
}
/**
 * Configuration options for the yaml support
 */
export interface ConfigureYamlOptions<G extends DeliveryGoals> {
    options?: ConfigureMachineOptions;
    tests?: Record<string, PushTest>;
    goals?: GoalCreator<G>;
    configurers?: GoalConfigurer<G> | Array<GoalConfigurer<G>>;
    cwd?: string;
    makers?: {
        commands: Record<string, CommandMaker>;
        events: Record<string, EventMaker>;
        goals: Record<string, GoalMaker>;
        tests: Record<string, PushTestMaker>;
        configurations: Record<string, ConfigurationMaker>;
    };
    patterns?: {
        commands?: string[];
        events?: string[];
        ingesters?: string[];
        goals?: string[];
        tests?: string[];
        configurations?: string[];
    };
    target?: Target;
}
/**
 * Load one or more yaml files to create goal sets
 *
 * When providing more than one yaml file, files are being loaded
 * in provided order with later files overwriting earlier ones.
 */
export declare function configureYaml<G extends DeliveryGoals>(patterns: string | string[], options?: ConfigureYamlOptions<G>): Promise<Configuration>;
//# sourceMappingURL=configureYaml.d.ts.map