import { Manifest, type ManifestConfig } from "@cdktf/provider-kubernetes/lib/manifest";
import { Construct } from "constructs";
export declare class ReportsKyvernoIoEphemeralReportV1 extends Manifest {
    constructor(scope: Construct, id: string, config: ReportsKyvernoIoEphemeralReportV1Config);
}
export interface ReportsKyvernoIoEphemeralReportV1Config extends ManifestConfig {
    manifest: {
        apiVersion: "reports.kyverno.io/v1";
        kind: "EphemeralReport";
        metadata: {
            annotations?: {
                [key: string]: string;
            };
            labels?: {
                [key: string]: string;
            };
            name: string;
            namespace?: string;
        };
        spec: {
            /** @description Owner is a reference to the report owner (e.g. a Deployment, Namespace, or Node) */
            owner: {
                /** @description API version of the referent. */
                apiVersion: string;
                /** @description If true, AND if the owner has the "foregroundDeletion" finalizer, then
                 *     the owner cannot be deleted from the key-value store until this
                 *     reference is removed.
                 *     See https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion
                 *     for how the garbage collector interacts with this field and enforces the foreground deletion.
                 *     Defaults to false.
                 *     To set this field, a user needs "delete" permission of the owner,
                 *     otherwise 422 (Unprocessable Entity) will be returned. */
                blockOwnerDeletion?: boolean;
                /** @description If true, this reference points to the managing controller. */
                controller?: boolean;
                /** @description Kind of the referent.
                 *     More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds */
                kind: string;
                /** @description Name of the referent.
                 *     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names */
                name: string;
                /** @description UID of the referent.
                 *     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids */
                uid: string;
            };
            /** @description PolicyReportResult provides result details */
            results?: {
                /** @description Category indicates policy category */
                category?: string;
                /** @description Description is a short user friendly message for the policy rule */
                message?: string;
                /** @description Policy is the name or identifier of the policy */
                policy: string;
                /** @description Properties provides additional information for the policy rule */
                properties?: {
                    [key: string]: string;
                };
                /** @description SubjectSelector is an optional label selector for checked Kubernetes resources.
                 *     For example, a policy result may apply to all pods that match a label.
                 *     Either a Subject or a SubjectSelector can be specified.
                 *     If neither are provided, the result is assumed to be for the policy report scope. */
                resourceSelector?: {
                    /** @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 Subjects is an optional reference to the checked Kubernetes resources */
                resources?: {
                    /** @description API version of the referent. */
                    apiVersion?: string;
                    /** @description If referring to a piece of an object instead of an entire object, this string
                     *     should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].
                     *     For example, if the object reference is to a container within a pod, this would take on a value like:
                     *     "spec.containers{name}" (where "name" refers to the name of the container that triggered
                     *     the event) or if no container name is specified "spec.containers[2]" (container with
                     *     index 2 in this pod). This syntax is chosen only to have some well-defined way of
                     *     referencing a part of an object. */
                    fieldPath?: string;
                    /** @description Kind of the referent.
                     *     More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds */
                    kind?: string;
                    /** @description Name of the referent.
                     *     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names */
                    name?: string;
                    /** @description Namespace of the referent.
                     *     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ */
                    namespace?: string;
                    /** @description Specific resourceVersion to which this reference is made, if any.
                     *     More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency */
                    resourceVersion?: string;
                    /** @description UID of the referent.
                     *     More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids */
                    uid?: string;
                }[];
                /**
                 * @description Result indicates the outcome of the policy rule execution
                 * @enum {string}
                 */
                result?: "pass" | "fail" | "warn" | "error" | "skip";
                /** @description Rule is the name or identifier of the rule within the policy */
                rule?: string;
                /** @description Scored indicates if this result is scored */
                scored?: boolean;
                /**
                 * @description Severity indicates policy check result criticality
                 * @enum {string}
                 */
                severity?: "critical" | "high" | "low" | "medium" | "info";
                /** @description Source is an identifier for the policy engine that manages this report */
                source?: string;
                /** @description Timestamp indicates the time the result was found */
                timestamp?: {
                    /**
                     * Format: int32
                     * @description Non-negative fractions of a second at nanosecond resolution. Negative
                     *     second values with fractions must still have non-negative nanos values
                     *     that count forward in time. Must be from 0 to 999,999,999
                     *     inclusive. This field may be limited in precision depending on context.
                     */
                    nanos: number;
                    /**
                     * Format: int64
                     * @description Represents seconds of UTC time since Unix epoch
                     *     1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to
                     *     9999-12-31T23:59:59Z inclusive.
                     */
                    seconds: number;
                };
            }[];
            /** @description PolicyReportSummary provides a summary of results */
            summary?: {
                /** @description Error provides the count of policies that could not be evaluated */
                error?: number;
                /** @description Fail provides the count of policies whose requirements were not met */
                fail?: number;
                /** @description Pass provides the count of policies whose requirements were met */
                pass?: number;
                /** @description Skip indicates the count of policies that were not selected for evaluation */
                skip?: number;
                /** @description Warn provides the count of non-scored policies whose requirements were not met */
                warn?: number;
            };
        };
    };
}
