import { IIoK8sApiAdmissionregistrationV1ApplyConfiguration } from "./ApplyConfiguration.js";
import { IIoK8sApiAdmissionregistrationV1JSONPatch } from "./JSONPatch.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * Mutation specifies the CEL expression which is used to apply the Mutation.
 */
export interface IMutation {
    /**
     * applyConfiguration defines the desired configuration values of an object. The configuration is applied to the admission object using [structured merge diff](https://github.com/kubernetes-sigs/structured-merge-diff). A CEL expression is used to create apply configuration.
     */
    "applyConfiguration"?: IIoK8sApiAdmissionregistrationV1ApplyConfiguration;
    /**
     * jsonPatch defines a [JSON patch](https://jsonpatch.com/) operation to perform a mutation to the object. A CEL expression is used to create the JSON patch.
     */
    "jsonPatch"?: IIoK8sApiAdmissionregistrationV1JSONPatch;
    /**
     * patchType indicates the patch strategy used. Allowed values are "ApplyConfiguration" and "JSONPatch". Required.
     *
     *
     * Possible enum values:
     *  - `"ApplyConfiguration"` ApplyConfiguration indicates that the mutation is using apply configuration to mutate the object.
     *  - `"JSONPatch"` JSONPatch indicates that the object is mutated through JSON Patch.
     */
    "patchType": "ApplyConfiguration" | "JSONPatch";
}
/**
 * Mutation specifies the CEL expression which is used to apply the Mutation.
 */
export declare class Mutation extends Model<IMutation> implements IMutation {
    "applyConfiguration"?: IIoK8sApiAdmissionregistrationV1ApplyConfiguration;
    "jsonPatch"?: IIoK8sApiAdmissionregistrationV1JSONPatch;
    "patchType": "ApplyConfiguration" | "JSONPatch";
    constructor(data?: ModelData<IMutation>);
}
export type { IMutation as IIoK8sApiAdmissionregistrationV1Mutation, Mutation as IoK8sApiAdmissionregistrationV1Mutation };
