import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationSetNestedGenerator } from "./ApplicationSetNestedGenerator.js";
import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationSetTemplate } from "./ApplicationSetTemplate.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * MergeGenerator merges the output of two or more generators. Where the values for all specified merge keys are equal
 * between two sets of generated parameters, the parameter sets will be merged with the parameters from the latter
 * generator taking precedence. Parameter sets with merge keys not present in the base generator's params will be
 * ignored.
 * For example, if the first generator produced [{a: '1', b: '2'}, {c: '1', d: '1'}] and the second generator produced
 * [{'a': 'override'}], the united parameters for merge keys = ['a'] would be
 * [{a: 'override', b: '1'}, {c: '1', d: '1'}].
 *
 * MergeGenerator supports template overriding. If a MergeGenerator is one of multiple top-level generators, its
 * template will be merged with the top-level generator before the parameters are applied.
 */
export interface IMergeGenerator {
    "generators": Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationSetNestedGenerator>;
    "mergeKeys": Array<string>;
    "template"?: IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationSetTemplate;
}
/**
 * MergeGenerator merges the output of two or more generators. Where the values for all specified merge keys are equal
 * between two sets of generated parameters, the parameter sets will be merged with the parameters from the latter
 * generator taking precedence. Parameter sets with merge keys not present in the base generator's params will be
 * ignored.
 * For example, if the first generator produced [{a: '1', b: '2'}, {c: '1', d: '1'}] and the second generator produced
 * [{'a': 'override'}], the united parameters for merge keys = ['a'] would be
 * [{a: 'override', b: '1'}, {c: '1', d: '1'}].
 *
 * MergeGenerator supports template overriding. If a MergeGenerator is one of multiple top-level generators, its
 * template will be merged with the top-level generator before the parameters are applied.
 */
export declare class MergeGenerator extends Model<IMergeGenerator> implements IMergeGenerator {
    "generators": Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationSetNestedGenerator>;
    "mergeKeys": Array<string>;
    "template"?: IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationSetTemplate;
    constructor(data?: ModelData<IMergeGenerator>);
}
export type { IMergeGenerator as IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1MergeGenerator, MergeGenerator as ComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1MergeGenerator };
