/**
 * Kubernetes
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: unversioned
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { IoK8sApiAdmissionregistrationV1AuditAnnotation, IoK8sApiAdmissionregistrationV1MatchCondition, IoK8sApiAdmissionregistrationV1MatchResources, IoK8sApiAdmissionregistrationV1ParamKind, IoK8sApiAdmissionregistrationV1Validation, IoK8sApiAdmissionregistrationV1Variable } from './';
/**
 * ValidatingAdmissionPolicySpec is the specification of the desired behavior of the AdmissionPolicy.
 * @export
 * @interface IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec
 */
export interface IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec {
    /**
     * auditAnnotations contains CEL expressions which are used to produce audit annotations for the audit event of the API request. validations and auditAnnotations may not both be empty; a least one of validations or auditAnnotations is required.
     * @type {Array<IoK8sApiAdmissionregistrationV1AuditAnnotation>}
     * @memberof IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec
     */
    auditAnnotations?: Array<IoK8sApiAdmissionregistrationV1AuditAnnotation>;
    /**
     * failurePolicy defines how to handle failures for the admission policy. Failures can occur from CEL expression parse errors, type check errors, runtime errors and invalid or mis-configured policy definitions or bindings.
     *
     * A policy is invalid if spec.paramKind refers to a non-existent Kind. A binding is invalid if spec.paramRef.name refers to a non-existent resource.
     *
     * failurePolicy does not define how validations that evaluate to false are handled.
     *
     * When failurePolicy is set to Fail, ValidatingAdmissionPolicyBinding validationActions define how failures are enforced.
     *
     * Allowed values are Ignore or Fail. Defaults to Fail.
     * @type {string}
     * @memberof IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec
     */
    failurePolicy?: string;
    /**
     * MatchConditions is a list of conditions that must be met for a request to be validated. Match conditions filter requests that have already been matched by the rules, namespaceSelector, and objectSelector. An empty list of matchConditions matches all requests. There are a maximum of 64 match conditions allowed.
     *
     * If a parameter object is provided, it can be accessed via the `params` handle in the same manner as validation expressions.
     *
     * The exact matching logic is (in order):
     *   1. If ANY matchCondition evaluates to FALSE, the policy is skipped.
     *   2. If ALL matchConditions evaluate to TRUE, the policy is evaluated.
     *   3. If any matchCondition evaluates to an error (but none are FALSE):
     *      - If failurePolicy=Fail, reject the request
     *      - If failurePolicy=Ignore, the policy is skipped
     * @type {Array<IoK8sApiAdmissionregistrationV1MatchCondition>}
     * @memberof IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec
     */
    matchConditions?: Array<IoK8sApiAdmissionregistrationV1MatchCondition>;
    /**
     *
     * @type {IoK8sApiAdmissionregistrationV1MatchResources}
     * @memberof IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec
     */
    matchConstraints?: IoK8sApiAdmissionregistrationV1MatchResources;
    /**
     *
     * @type {IoK8sApiAdmissionregistrationV1ParamKind}
     * @memberof IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec
     */
    paramKind?: IoK8sApiAdmissionregistrationV1ParamKind;
    /**
     * Validations contain CEL expressions which is used to apply the validation. Validations and AuditAnnotations may not both be empty; a minimum of one Validations or AuditAnnotations is required.
     * @type {Array<IoK8sApiAdmissionregistrationV1Validation>}
     * @memberof IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec
     */
    validations?: Array<IoK8sApiAdmissionregistrationV1Validation>;
    /**
     * Variables contain definitions of variables that can be used in composition of other expressions. Each variable is defined as a named CEL expression. The variables defined here will be available under `variables` in other expressions of the policy except MatchConditions because MatchConditions are evaluated before the rest of the policy.
     *
     * The expression of a variable can refer to other variables defined earlier in the list but not those after. Thus, Variables must be sorted by the order of first appearance and acyclic.
     * @type {Array<IoK8sApiAdmissionregistrationV1Variable>}
     * @memberof IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec
     */
    variables?: Array<IoK8sApiAdmissionregistrationV1Variable>;
}
export declare function IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpecFromJSON(json: any): IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec;
export declare function IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpecFromJSONTyped(json: any, _ignoreDiscriminator: boolean): IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec;
export declare function IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpecToJSON(value?: IoK8sApiAdmissionregistrationV1ValidatingAdmissionPolicySpec | null): any;
