import { Manifest, type ManifestConfig } from "@cdktf/provider-kubernetes/lib/manifest";
import { Construct } from "constructs";
export declare class KubernetesClusterCleanupPolicyV2Manifest extends Manifest {
    constructor(scope: Construct, id: string, config: KubernetesClusterCleanupPolicyV2ManifestConfig);
}
export interface KubernetesClusterCleanupPolicyV2ManifestConfig extends ManifestConfig {
    manifest: {
        apiVersion?: "kyverno.io/v2";
        kind?: "ClusterCleanupPolicy";
        metadata: {
            annotations?: {
                [key: string]: string;
            };
            labels?: {
                [key: string]: string;
            };
            name: string;
            namespace?: string;
        };
        /** @description Spec declares policy behaviors. */
        spec: {
            /** @description Conditions defines the conditions used to select the resources which will be cleaned up. */
            conditions?: {
                /** @description AllConditions enable variable-based conditional rule execution. This is useful for
                 *     finer control of when an rule is applied. A condition can reference object data
                 *     using JMESPath notation.
                 *     Here, all of the conditions need to pass. */
                all?: {
                    /** @description Key is the context entry (using JMESPath) for conditional rule evaluation. */
                    key?: unknown;
                    /** @description Message is an optional display message */
                    message?: string;
                    /**
                     * @description Operator is the conditional operation to perform. Valid operators are:
                     *     Equals, NotEquals, In, AnyIn, AllIn, NotIn, AnyNotIn, AllNotIn, GreaterThanOrEquals,
                     *     GreaterThan, LessThanOrEquals, LessThan, DurationGreaterThanOrEquals, DurationGreaterThan,
                     *     DurationLessThanOrEquals, DurationLessThan
                     * @enum {string}
                     */
                    operator?: "Equals" | "NotEquals" | "AnyIn" | "AllIn" | "AnyNotIn" | "AllNotIn" | "GreaterThanOrEquals" | "GreaterThan" | "LessThanOrEquals" | "LessThan" | "DurationGreaterThanOrEquals" | "DurationGreaterThan" | "DurationLessThanOrEquals" | "DurationLessThan";
                    /** @description Value is the conditional value, or set of values. The values can be fixed set
                     *     or can be variables declared using JMESPath. */
                    value?: unknown;
                }[];
                /** @description AnyConditions enable variable-based conditional rule execution. This is useful for
                 *     finer control of when an rule is applied. A condition can reference object data
                 *     using JMESPath notation.
                 *     Here, at least one of the conditions need to pass. */
                any?: {
                    /** @description Key is the context entry (using JMESPath) for conditional rule evaluation. */
                    key?: unknown;
                    /** @description Message is an optional display message */
                    message?: string;
                    /**
                     * @description Operator is the conditional operation to perform. Valid operators are:
                     *     Equals, NotEquals, In, AnyIn, AllIn, NotIn, AnyNotIn, AllNotIn, GreaterThanOrEquals,
                     *     GreaterThan, LessThanOrEquals, LessThan, DurationGreaterThanOrEquals, DurationGreaterThan,
                     *     DurationLessThanOrEquals, DurationLessThan
                     * @enum {string}
                     */
                    operator?: "Equals" | "NotEquals" | "AnyIn" | "AllIn" | "AnyNotIn" | "AllNotIn" | "GreaterThanOrEquals" | "GreaterThan" | "LessThanOrEquals" | "LessThan" | "DurationGreaterThanOrEquals" | "DurationGreaterThan" | "DurationLessThanOrEquals" | "DurationLessThan";
                    /** @description Value is the conditional value, or set of values. The values can be fixed set
                     *     or can be variables declared using JMESPath. */
                    value?: unknown;
                }[];
            };
            /** @description Context defines variables and data sources that can be used during rule execution. */
            context?: ({
                /** @description APICall is an HTTP request to the Kubernetes API server, or other JSON web service.
                 *     The data returned is stored in the context with the name for the context entry. */
                apiCall?: {
                    /** @description The data object specifies the POST data sent to the server.
                     *     Only applicable when the method field is set to POST. */
                    data?: {
                        /** @description Key is a unique identifier for the data value */
                        key: string;
                        /** @description Value is the data value */
                        value: unknown;
                    }[];
                    /** @description Default is an optional arbitrary JSON object that the context
                     *     value is set to, if the apiCall returns error. */
                    default?: unknown;
                    /** @description JMESPath is an optional JSON Match Expression that can be used to
                     *     transform the JSON response returned from the server. For example
                     *     a JMESPath of "items | length(@)" applied to the API server response
                     *     for the URLPath "/apis/apps/v1/deployments" will return the total count
                     *     of deployments across all namespaces. */
                    jmesPath?: string;
                    /**
                     * @description Method is the HTTP request type (GET or POST). Defaults to GET.
                     * @default GET
                     * @enum {string}
                     */
                    method: "GET" | "POST";
                    /** @description Service is an API call to a JSON web service.
                     *     This is used for non-Kubernetes API server calls.
                     *     It's mutually exclusive with the URLPath field. */
                    service?: {
                        /** @description CABundle is a PEM encoded CA bundle which will be used to validate
                         *     the server certificate. */
                        caBundle?: string;
                        /** @description Headers is a list of optional HTTP headers to be included in the request. */
                        headers?: {
                            /** @description Key is the header key */
                            key: string;
                            /** @description Value is the header value */
                            value: string;
                        }[];
                        /** @description URL is the JSON web service URL. A typical form is
                         *     `https://{service}.{namespace}:{port}/{path}`. */
                        url: string;
                    };
                    /** @description URLPath is the URL path to be used in the HTTP GET or POST request to the
                     *     Kubernetes API server (e.g. "/api/v1/namespaces" or  "/apis/apps/v1/deployments").
                     *     The format required is the same format used by the `kubectl get --raw` command.
                     *     See https://kyverno.io/docs/writing-policies/external-data-sources/#variables-from-kubernetes-api-server-calls
                     *     for details.
                     *     It's mutually exclusive with the Service field. */
                    urlPath?: string;
                };
                /** @description ConfigMap is the ConfigMap reference. */
                configMap?: {
                    /** @description Name is the ConfigMap name. */
                    name: string;
                    /** @description Namespace is the ConfigMap namespace. */
                    namespace?: string;
                };
                /** @description GlobalContextEntryReference is a reference to a cached global context entry. */
                globalReference?: {
                    /** @description JMESPath is an optional JSON Match Expression that can be used to
                     *     transform the JSON response returned from the server. For example
                     *     a JMESPath of "items | length(@)" applied to the API server response
                     *     for the URLPath "/apis/apps/v1/deployments" will return the total count
                     *     of deployments across all namespaces. */
                    jmesPath?: string;
                    /** @description Name of the global context entry */
                    name: string;
                };
                /** @description ImageRegistry defines requests to an OCI/Docker V2 registry to fetch image
                 *     details. */
                imageRegistry?: {
                    /** @description ImageRegistryCredentials provides credentials that will be used for authentication with registry */
                    imageRegistryCredentials?: {
                        /** @description AllowInsecureRegistry allows insecure access to a registry. */
                        allowInsecureRegistry?: boolean;
                        /** @description Providers specifies a list of OCI Registry names, whose authentication providers are provided.
                         *     It can be of one of these values: default,google,azure,amazon,github. */
                        providers?: ("default" | "amazon" | "azure" | "google" | "github")[];
                        /** @description Secrets specifies a list of secrets that are provided for credentials.
                         *     Secrets must live in the Kyverno namespace. */
                        secrets?: string[];
                    };
                    /** @description JMESPath is an optional JSON Match Expression that can be used to
                     *     transform the ImageData struct returned as a result of processing
                     *     the image reference. */
                    jmesPath?: string;
                    /** @description Reference is image reference to a container image in the registry.
                     *     Example: ghcr.io/kyverno/kyverno:latest */
                    reference: string;
                };
                /** @description Name is the variable name. */
                name: string;
                /** @description Variable defines an arbitrary JMESPath context variable that can be defined inline. */
                variable?: {
                    /** @description Default is an optional arbitrary JSON object that the variable may take if the JMESPath
                     *     expression evaluates to nil */
                    default?: unknown;
                    /** @description JMESPath is an optional JMESPath Expression that can be used to
                     *     transform the variable. */
                    jmesPath?: string;
                    /** @description Value is any arbitrary JSON object representable in YAML or JSON form. */
                    value?: unknown;
                };
            } & (unknown | unknown | unknown | unknown | unknown))[];
            /** @description ExcludeResources defines when cleanuppolicy should not be applied. The exclude
             *     criteria can include resource information (e.g. kind, name, namespace, labels)
             *     and admission review request information like the name or role. */
            exclude?: {
                /** @description All allows specifying resources which will be ANDed */
                all?: {
                    /** @description ClusterRoles is the list of cluster-wide role names for the user. */
                    clusterRoles?: string[];
                    /** @description ResourceDescription contains information about the resource being created or modified. */
                    resources?: {
                        /** @description Annotations is a  map of annotations (key-value pairs of type string). Annotation keys
                         *     and values support the wildcard characters "*" (matches zero or many characters) and
                         *     "?" (matches at least one character). */
                        annotations?: {
                            [key: string]: string;
                        };
                        /** @description Kinds is a list of resource kinds. */
                        kinds?: string[];
                        /** @description Name is the name of the resource. The name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character).
                         *     NOTE: "Name" is being deprecated in favor of "Names". */
                        name?: string;
                        /** @description Names are the names of the resources. Each name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character). */
                        names?: string[];
                        /** @description NamespaceSelector is a label selector for the resource namespace. Label keys and values
                         *     in `matchLabels` support the wildcard characters `*` (matches zero or many characters)
                         *     and `?` (matches one character).Wildcards allows writing label selectors like
                         *     ["storage.k8s.io/*": "*"]. Note that using ["*" : "*"] matches any key and value but
                         *     does not match an empty label set. */
                        namespaceSelector?: {
                            /** @description matchExpressions is a list of label selector requirements. The requirements are ANDed. */
                            matchExpressions?: {
                                /** @description key is the label key that the selector applies to. */
                                key: string;
                                /** @description operator represents a key's relationship to a set of values.
                                 *     Valid operators are In, NotIn, Exists and DoesNotExist. */
                                operator: string;
                                /** @description values is an array of string values. If the operator is In or NotIn,
                                 *     the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                 *     the values array must be empty. This array is replaced during a strategic
                                 *     merge patch. */
                                values?: string[];
                            }[];
                            /** @description matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                             *     map is equivalent to an element of matchExpressions, whose key field is "key", the
                             *     operator is "In", and the values array contains only "value". The requirements are ANDed. */
                            matchLabels?: {
                                [key: string]: string;
                            };
                        };
                        /** @description Namespaces is a list of namespaces names. Each name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character). */
                        namespaces?: string[];
                        /** @description Operations can contain values ["CREATE, "UPDATE", "CONNECT", "DELETE"], which are used to match a specific action. */
                        operations?: ("CREATE" | "CONNECT" | "UPDATE" | "DELETE")[];
                        /** @description Selector is a label selector. Label keys and values in `matchLabels` support the wildcard
                         *     characters `*` (matches zero or many characters) and `?` (matches one character).
                         *     Wildcards allows writing label selectors like ["storage.k8s.io/*": "*"]. Note that
                         *     using ["*" : "*"] matches any key and value but does not match an empty label set. */
                        selector?: {
                            /** @description matchExpressions is a list of label selector requirements. The requirements are ANDed. */
                            matchExpressions?: {
                                /** @description key is the label key that the selector applies to. */
                                key: string;
                                /** @description operator represents a key's relationship to a set of values.
                                 *     Valid operators are In, NotIn, Exists and DoesNotExist. */
                                operator: string;
                                /** @description values is an array of string values. If the operator is In or NotIn,
                                 *     the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                 *     the values array must be empty. This array is replaced during a strategic
                                 *     merge patch. */
                                values?: string[];
                            }[];
                            /** @description matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                             *     map is equivalent to an element of matchExpressions, whose key field is "key", the
                             *     operator is "In", and the values array contains only "value". The requirements are ANDed. */
                            matchLabels?: {
                                [key: string]: string;
                            };
                        };
                    };
                    /** @description Roles is the list of namespaced role names for the user. */
                    roles?: string[];
                    /** @description Subjects is the list of subject names like users, user groups, and service accounts. */
                    subjects?: {
                        /** @description APIGroup holds the API group of the referenced subject.
                         *     Defaults to "" for ServiceAccount subjects.
                         *     Defaults to "rbac.authorization.k8s.io" for User and Group subjects. */
                        apiGroup?: string;
                        /** @description Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
                         *     If the Authorizer does not recognized the kind value, the Authorizer should report an error. */
                        kind: string;
                        /** @description Name of the object being referenced. */
                        name: string;
                        /** @description Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
                         *     the Authorizer should report an error. */
                        namespace?: string;
                    }[];
                }[];
                /** @description Any allows specifying resources which will be ORed */
                any?: {
                    /** @description ClusterRoles is the list of cluster-wide role names for the user. */
                    clusterRoles?: string[];
                    /** @description ResourceDescription contains information about the resource being created or modified. */
                    resources?: {
                        /** @description Annotations is a  map of annotations (key-value pairs of type string). Annotation keys
                         *     and values support the wildcard characters "*" (matches zero or many characters) and
                         *     "?" (matches at least one character). */
                        annotations?: {
                            [key: string]: string;
                        };
                        /** @description Kinds is a list of resource kinds. */
                        kinds?: string[];
                        /** @description Name is the name of the resource. The name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character).
                         *     NOTE: "Name" is being deprecated in favor of "Names". */
                        name?: string;
                        /** @description Names are the names of the resources. Each name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character). */
                        names?: string[];
                        /** @description NamespaceSelector is a label selector for the resource namespace. Label keys and values
                         *     in `matchLabels` support the wildcard characters `*` (matches zero or many characters)
                         *     and `?` (matches one character).Wildcards allows writing label selectors like
                         *     ["storage.k8s.io/*": "*"]. Note that using ["*" : "*"] matches any key and value but
                         *     does not match an empty label set. */
                        namespaceSelector?: {
                            /** @description matchExpressions is a list of label selector requirements. The requirements are ANDed. */
                            matchExpressions?: {
                                /** @description key is the label key that the selector applies to. */
                                key: string;
                                /** @description operator represents a key's relationship to a set of values.
                                 *     Valid operators are In, NotIn, Exists and DoesNotExist. */
                                operator: string;
                                /** @description values is an array of string values. If the operator is In or NotIn,
                                 *     the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                 *     the values array must be empty. This array is replaced during a strategic
                                 *     merge patch. */
                                values?: string[];
                            }[];
                            /** @description matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                             *     map is equivalent to an element of matchExpressions, whose key field is "key", the
                             *     operator is "In", and the values array contains only "value". The requirements are ANDed. */
                            matchLabels?: {
                                [key: string]: string;
                            };
                        };
                        /** @description Namespaces is a list of namespaces names. Each name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character). */
                        namespaces?: string[];
                        /** @description Operations can contain values ["CREATE, "UPDATE", "CONNECT", "DELETE"], which are used to match a specific action. */
                        operations?: ("CREATE" | "CONNECT" | "UPDATE" | "DELETE")[];
                        /** @description Selector is a label selector. Label keys and values in `matchLabels` support the wildcard
                         *     characters `*` (matches zero or many characters) and `?` (matches one character).
                         *     Wildcards allows writing label selectors like ["storage.k8s.io/*": "*"]. Note that
                         *     using ["*" : "*"] matches any key and value but does not match an empty label set. */
                        selector?: {
                            /** @description matchExpressions is a list of label selector requirements. The requirements are ANDed. */
                            matchExpressions?: {
                                /** @description key is the label key that the selector applies to. */
                                key: string;
                                /** @description operator represents a key's relationship to a set of values.
                                 *     Valid operators are In, NotIn, Exists and DoesNotExist. */
                                operator: string;
                                /** @description values is an array of string values. If the operator is In or NotIn,
                                 *     the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                 *     the values array must be empty. This array is replaced during a strategic
                                 *     merge patch. */
                                values?: string[];
                            }[];
                            /** @description matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                             *     map is equivalent to an element of matchExpressions, whose key field is "key", the
                             *     operator is "In", and the values array contains only "value". The requirements are ANDed. */
                            matchLabels?: {
                                [key: string]: string;
                            };
                        };
                    };
                    /** @description Roles is the list of namespaced role names for the user. */
                    roles?: string[];
                    /** @description Subjects is the list of subject names like users, user groups, and service accounts. */
                    subjects?: {
                        /** @description APIGroup holds the API group of the referenced subject.
                         *     Defaults to "" for ServiceAccount subjects.
                         *     Defaults to "rbac.authorization.k8s.io" for User and Group subjects. */
                        apiGroup?: string;
                        /** @description Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
                         *     If the Authorizer does not recognized the kind value, the Authorizer should report an error. */
                        kind: string;
                        /** @description Name of the object being referenced. */
                        name: string;
                        /** @description Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
                         *     the Authorizer should report an error. */
                        namespace?: string;
                    }[];
                }[];
            };
            /** @description MatchResources defines when cleanuppolicy should be applied. The match
             *     criteria can include resource information (e.g. kind, name, namespace, labels)
             *     and admission review request information like the user name or role.
             *     At least one kind is required. */
            match: {
                /** @description All allows specifying resources which will be ANDed */
                all?: {
                    /** @description ClusterRoles is the list of cluster-wide role names for the user. */
                    clusterRoles?: string[];
                    /** @description ResourceDescription contains information about the resource being created or modified. */
                    resources?: {
                        /** @description Annotations is a  map of annotations (key-value pairs of type string). Annotation keys
                         *     and values support the wildcard characters "*" (matches zero or many characters) and
                         *     "?" (matches at least one character). */
                        annotations?: {
                            [key: string]: string;
                        };
                        /** @description Kinds is a list of resource kinds. */
                        kinds?: string[];
                        /** @description Name is the name of the resource. The name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character).
                         *     NOTE: "Name" is being deprecated in favor of "Names". */
                        name?: string;
                        /** @description Names are the names of the resources. Each name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character). */
                        names?: string[];
                        /** @description NamespaceSelector is a label selector for the resource namespace. Label keys and values
                         *     in `matchLabels` support the wildcard characters `*` (matches zero or many characters)
                         *     and `?` (matches one character).Wildcards allows writing label selectors like
                         *     ["storage.k8s.io/*": "*"]. Note that using ["*" : "*"] matches any key and value but
                         *     does not match an empty label set. */
                        namespaceSelector?: {
                            /** @description matchExpressions is a list of label selector requirements. The requirements are ANDed. */
                            matchExpressions?: {
                                /** @description key is the label key that the selector applies to. */
                                key: string;
                                /** @description operator represents a key's relationship to a set of values.
                                 *     Valid operators are In, NotIn, Exists and DoesNotExist. */
                                operator: string;
                                /** @description values is an array of string values. If the operator is In or NotIn,
                                 *     the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                 *     the values array must be empty. This array is replaced during a strategic
                                 *     merge patch. */
                                values?: string[];
                            }[];
                            /** @description matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                             *     map is equivalent to an element of matchExpressions, whose key field is "key", the
                             *     operator is "In", and the values array contains only "value". The requirements are ANDed. */
                            matchLabels?: {
                                [key: string]: string;
                            };
                        };
                        /** @description Namespaces is a list of namespaces names. Each name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character). */
                        namespaces?: string[];
                        /** @description Operations can contain values ["CREATE, "UPDATE", "CONNECT", "DELETE"], which are used to match a specific action. */
                        operations?: ("CREATE" | "CONNECT" | "UPDATE" | "DELETE")[];
                        /** @description Selector is a label selector. Label keys and values in `matchLabels` support the wildcard
                         *     characters `*` (matches zero or many characters) and `?` (matches one character).
                         *     Wildcards allows writing label selectors like ["storage.k8s.io/*": "*"]. Note that
                         *     using ["*" : "*"] matches any key and value but does not match an empty label set. */
                        selector?: {
                            /** @description matchExpressions is a list of label selector requirements. The requirements are ANDed. */
                            matchExpressions?: {
                                /** @description key is the label key that the selector applies to. */
                                key: string;
                                /** @description operator represents a key's relationship to a set of values.
                                 *     Valid operators are In, NotIn, Exists and DoesNotExist. */
                                operator: string;
                                /** @description values is an array of string values. If the operator is In or NotIn,
                                 *     the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                 *     the values array must be empty. This array is replaced during a strategic
                                 *     merge patch. */
                                values?: string[];
                            }[];
                            /** @description matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                             *     map is equivalent to an element of matchExpressions, whose key field is "key", the
                             *     operator is "In", and the values array contains only "value". The requirements are ANDed. */
                            matchLabels?: {
                                [key: string]: string;
                            };
                        };
                    };
                    /** @description Roles is the list of namespaced role names for the user. */
                    roles?: string[];
                    /** @description Subjects is the list of subject names like users, user groups, and service accounts. */
                    subjects?: {
                        /** @description APIGroup holds the API group of the referenced subject.
                         *     Defaults to "" for ServiceAccount subjects.
                         *     Defaults to "rbac.authorization.k8s.io" for User and Group subjects. */
                        apiGroup?: string;
                        /** @description Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
                         *     If the Authorizer does not recognized the kind value, the Authorizer should report an error. */
                        kind: string;
                        /** @description Name of the object being referenced. */
                        name: string;
                        /** @description Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
                         *     the Authorizer should report an error. */
                        namespace?: string;
                    }[];
                }[];
                /** @description Any allows specifying resources which will be ORed */
                any?: {
                    /** @description ClusterRoles is the list of cluster-wide role names for the user. */
                    clusterRoles?: string[];
                    /** @description ResourceDescription contains information about the resource being created or modified. */
                    resources?: {
                        /** @description Annotations is a  map of annotations (key-value pairs of type string). Annotation keys
                         *     and values support the wildcard characters "*" (matches zero or many characters) and
                         *     "?" (matches at least one character). */
                        annotations?: {
                            [key: string]: string;
                        };
                        /** @description Kinds is a list of resource kinds. */
                        kinds?: string[];
                        /** @description Name is the name of the resource. The name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character).
                         *     NOTE: "Name" is being deprecated in favor of "Names". */
                        name?: string;
                        /** @description Names are the names of the resources. Each name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character). */
                        names?: string[];
                        /** @description NamespaceSelector is a label selector for the resource namespace. Label keys and values
                         *     in `matchLabels` support the wildcard characters `*` (matches zero or many characters)
                         *     and `?` (matches one character).Wildcards allows writing label selectors like
                         *     ["storage.k8s.io/*": "*"]. Note that using ["*" : "*"] matches any key and value but
                         *     does not match an empty label set. */
                        namespaceSelector?: {
                            /** @description matchExpressions is a list of label selector requirements. The requirements are ANDed. */
                            matchExpressions?: {
                                /** @description key is the label key that the selector applies to. */
                                key: string;
                                /** @description operator represents a key's relationship to a set of values.
                                 *     Valid operators are In, NotIn, Exists and DoesNotExist. */
                                operator: string;
                                /** @description values is an array of string values. If the operator is In or NotIn,
                                 *     the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                 *     the values array must be empty. This array is replaced during a strategic
                                 *     merge patch. */
                                values?: string[];
                            }[];
                            /** @description matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                             *     map is equivalent to an element of matchExpressions, whose key field is "key", the
                             *     operator is "In", and the values array contains only "value". The requirements are ANDed. */
                            matchLabels?: {
                                [key: string]: string;
                            };
                        };
                        /** @description Namespaces is a list of namespaces names. Each name supports wildcard characters
                         *     "*" (matches zero or many characters) and "?" (at least one character). */
                        namespaces?: string[];
                        /** @description Operations can contain values ["CREATE, "UPDATE", "CONNECT", "DELETE"], which are used to match a specific action. */
                        operations?: ("CREATE" | "CONNECT" | "UPDATE" | "DELETE")[];
                        /** @description Selector is a label selector. Label keys and values in `matchLabels` support the wildcard
                         *     characters `*` (matches zero or many characters) and `?` (matches one character).
                         *     Wildcards allows writing label selectors like ["storage.k8s.io/*": "*"]. Note that
                         *     using ["*" : "*"] matches any key and value but does not match an empty label set. */
                        selector?: {
                            /** @description matchExpressions is a list of label selector requirements. The requirements are ANDed. */
                            matchExpressions?: {
                                /** @description key is the label key that the selector applies to. */
                                key: string;
                                /** @description operator represents a key's relationship to a set of values.
                                 *     Valid operators are In, NotIn, Exists and DoesNotExist. */
                                operator: string;
                                /** @description values is an array of string values. If the operator is In or NotIn,
                                 *     the values array must be non-empty. If the operator is Exists or DoesNotExist,
                                 *     the values array must be empty. This array is replaced during a strategic
                                 *     merge patch. */
                                values?: string[];
                            }[];
                            /** @description matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels
                             *     map is equivalent to an element of matchExpressions, whose key field is "key", the
                             *     operator is "In", and the values array contains only "value". The requirements are ANDed. */
                            matchLabels?: {
                                [key: string]: string;
                            };
                        };
                    };
                    /** @description Roles is the list of namespaced role names for the user. */
                    roles?: string[];
                    /** @description Subjects is the list of subject names like users, user groups, and service accounts. */
                    subjects?: {
                        /** @description APIGroup holds the API group of the referenced subject.
                         *     Defaults to "" for ServiceAccount subjects.
                         *     Defaults to "rbac.authorization.k8s.io" for User and Group subjects. */
                        apiGroup?: string;
                        /** @description Kind of object being referenced. Values defined by this API group are "User", "Group", and "ServiceAccount".
                         *     If the Authorizer does not recognized the kind value, the Authorizer should report an error. */
                        kind: string;
                        /** @description Name of the object being referenced. */
                        name: string;
                        /** @description Namespace of the referenced object.  If the object kind is non-namespace, such as "User" or "Group", and this value is not empty
                         *     the Authorizer should report an error. */
                        namespace?: string;
                    }[];
                }[];
            };
            /** @description The schedule in Cron format */
            schedule: string;
        };
        /** @description Status contains policy runtime data. */
        status?: {
            conditions?: {
                /**
                 * Format: date-time
                 * @description lastTransitionTime is the last time the condition transitioned from one status to another.
                 *     This should be when the underlying condition changed.  If that is not known, then using the time when the API field changed is acceptable.
                 */
                lastTransitionTime: string;
                /** @description message is a human readable message indicating details about the transition.
                 *     This may be an empty string. */
                message: string;
                /**
                 * Format: int64
                 * @description observedGeneration represents the .metadata.generation that the condition was set based upon.
                 *     For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
                 *     with respect to the current state of the instance.
                 */
                observedGeneration?: number;
                /** @description reason contains a programmatic identifier indicating the reason for the condition's last transition.
                 *     Producers of specific condition types may define expected values and meanings for this field,
                 *     and whether the values are considered a guaranteed API.
                 *     The value should be a CamelCase string.
                 *     This field may not be empty. */
                reason: string;
                /**
                 * @description status of the condition, one of True, False, Unknown.
                 * @enum {string}
                 */
                status: "True" | "False" | "Unknown";
                /** @description type of condition in CamelCase or in foo.example.com/CamelCase. */
                type: string;
            }[];
            /** Format: date-time */
            lastExecutionTime?: string;
        };
    };
}
