/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface GkeBackupBackupPlanConfig extends cdktf.TerraformMetaArguments {
    /**
    * The source cluster from which Backups will be created via this BackupPlan.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#cluster GkeBackupBackupPlan#cluster}
    */
    readonly cluster: string;
    /**
    * This flag indicates whether this BackupPlan has been deactivated.
    * Setting this field to True locks the BackupPlan such that no further updates will be allowed
    * (except deletes), including the deactivated field itself. It also prevents any new Backups
    * from being created via this BackupPlan (including scheduled Backups).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#deactivated GkeBackupBackupPlan#deactivated}
    */
    readonly deactivated?: boolean | cdktf.IResolvable;
    /**
    * User specified descriptive string for this BackupPlan.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#description GkeBackupBackupPlan#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#id GkeBackupBackupPlan#id}
    *
    * Please be aware that the id field is automatically added to all resources in Terraform providers using a Terraform provider SDK version below 2.
    * If you experience problems setting this value it might not be settable. Please take a look at the provider documentation to ensure it should be settable.
    */
    readonly id?: string;
    /**
    * Description: A set of custom labels supplied by the user.
    * A list of key->value pairs.
    * Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
    *
    *
    * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
    * Please refer to the field 'effective_labels' for all of the labels present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#labels GkeBackupBackupPlan#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * The region of the Backup Plan.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#location GkeBackupBackupPlan#location}
    */
    readonly location: string;
    /**
    * The full name of the BackupPlan Resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#name GkeBackupBackupPlan#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#project GkeBackupBackupPlan#project}
    */
    readonly project?: string;
    /**
    * backup_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#backup_config GkeBackupBackupPlan#backup_config}
    */
    readonly backupConfig?: GkeBackupBackupPlanBackupConfig;
    /**
    * backup_schedule block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#backup_schedule GkeBackupBackupPlan#backup_schedule}
    */
    readonly backupSchedule?: GkeBackupBackupPlanBackupSchedule;
    /**
    * retention_policy block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#retention_policy GkeBackupBackupPlan#retention_policy}
    */
    readonly retentionPolicy?: GkeBackupBackupPlanRetentionPolicy;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#timeouts GkeBackupBackupPlan#timeouts}
    */
    readonly timeouts?: GkeBackupBackupPlanTimeouts;
}
export interface GkeBackupBackupPlanBackupConfigEncryptionKey {
    /**
    * Google Cloud KMS encryption key. Format: projects/* /locations/* /keyRings/* /cryptoKeys/*
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#gcp_kms_encryption_key GkeBackupBackupPlan#gcp_kms_encryption_key}
     *
    * Note: The above comment contained a comment block ending sequence (* followed by /). We have introduced a space between to prevent syntax errors. Please ignore the space.
    */
    readonly gcpKmsEncryptionKey: string;
}
export declare function gkeBackupBackupPlanBackupConfigEncryptionKeyToTerraform(struct?: GkeBackupBackupPlanBackupConfigEncryptionKeyOutputReference | GkeBackupBackupPlanBackupConfigEncryptionKey): any;
export declare function gkeBackupBackupPlanBackupConfigEncryptionKeyToHclTerraform(struct?: GkeBackupBackupPlanBackupConfigEncryptionKeyOutputReference | GkeBackupBackupPlanBackupConfigEncryptionKey): any;
export declare class GkeBackupBackupPlanBackupConfigEncryptionKeyOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupConfigEncryptionKey | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupConfigEncryptionKey | undefined);
    private _gcpKmsEncryptionKey?;
    get gcpKmsEncryptionKey(): string;
    set gcpKmsEncryptionKey(value: string);
    get gcpKmsEncryptionKeyInput(): string | undefined;
}
export interface GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames {
    /**
    * The name of a Kubernetes Resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#name GkeBackupBackupPlan#name}
    */
    readonly name: string;
    /**
    * The namespace of a Kubernetes Resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#namespace GkeBackupBackupPlan#namespace}
    */
    readonly namespace: string;
}
export declare function gkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNamesToTerraform(struct?: GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames | cdktf.IResolvable): any;
export declare function gkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNamesToHclTerraform(struct?: GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames | cdktf.IResolvable): any;
export declare class GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNamesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames | cdktf.IResolvable | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames | cdktf.IResolvable | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _namespace?;
    get namespace(): string;
    set namespace(value: string);
    get namespaceInput(): string | undefined;
}
export declare class GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNamesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNamesOutputReference;
}
export interface GkeBackupBackupPlanBackupConfigSelectedApplications {
    /**
    * namespaced_names block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#namespaced_names GkeBackupBackupPlan#namespaced_names}
    */
    readonly namespacedNames: GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames[] | cdktf.IResolvable;
}
export declare function gkeBackupBackupPlanBackupConfigSelectedApplicationsToTerraform(struct?: GkeBackupBackupPlanBackupConfigSelectedApplicationsOutputReference | GkeBackupBackupPlanBackupConfigSelectedApplications): any;
export declare function gkeBackupBackupPlanBackupConfigSelectedApplicationsToHclTerraform(struct?: GkeBackupBackupPlanBackupConfigSelectedApplicationsOutputReference | GkeBackupBackupPlanBackupConfigSelectedApplications): any;
export declare class GkeBackupBackupPlanBackupConfigSelectedApplicationsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupConfigSelectedApplications | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupConfigSelectedApplications | undefined);
    private _namespacedNames;
    get namespacedNames(): GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNamesList;
    putNamespacedNames(value: GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames[] | cdktf.IResolvable): void;
    get namespacedNamesInput(): cdktf.IResolvable | GkeBackupBackupPlanBackupConfigSelectedApplicationsNamespacedNames[] | undefined;
}
export interface GkeBackupBackupPlanBackupConfigSelectedNamespaces {
    /**
    * A list of Kubernetes Namespaces.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#namespaces GkeBackupBackupPlan#namespaces}
    */
    readonly namespaces: string[];
}
export declare function gkeBackupBackupPlanBackupConfigSelectedNamespacesToTerraform(struct?: GkeBackupBackupPlanBackupConfigSelectedNamespacesOutputReference | GkeBackupBackupPlanBackupConfigSelectedNamespaces): any;
export declare function gkeBackupBackupPlanBackupConfigSelectedNamespacesToHclTerraform(struct?: GkeBackupBackupPlanBackupConfigSelectedNamespacesOutputReference | GkeBackupBackupPlanBackupConfigSelectedNamespaces): any;
export declare class GkeBackupBackupPlanBackupConfigSelectedNamespacesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupConfigSelectedNamespaces | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupConfigSelectedNamespaces | undefined);
    private _namespaces?;
    get namespaces(): string[];
    set namespaces(value: string[]);
    get namespacesInput(): string[] | undefined;
}
export interface GkeBackupBackupPlanBackupConfig {
    /**
    * If True, include all namespaced resources.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#all_namespaces GkeBackupBackupPlan#all_namespaces}
    */
    readonly allNamespaces?: boolean | cdktf.IResolvable;
    /**
    * This flag specifies whether Kubernetes Secret resources should be included
    * when they fall into the scope of Backups.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#include_secrets GkeBackupBackupPlan#include_secrets}
    */
    readonly includeSecrets?: boolean | cdktf.IResolvable;
    /**
    * This flag specifies whether volume data should be backed up when PVCs are
    * included in the scope of a Backup.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#include_volume_data GkeBackupBackupPlan#include_volume_data}
    */
    readonly includeVolumeData?: boolean | cdktf.IResolvable;
    /**
    * This flag specifies whether Backups will not fail when
    * Backup for GKE detects Kubernetes configuration that is
    * non-standard or requires additional setup to restore.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#permissive_mode GkeBackupBackupPlan#permissive_mode}
    */
    readonly permissiveMode?: boolean | cdktf.IResolvable;
    /**
    * encryption_key block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#encryption_key GkeBackupBackupPlan#encryption_key}
    */
    readonly encryptionKey?: GkeBackupBackupPlanBackupConfigEncryptionKey;
    /**
    * selected_applications block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#selected_applications GkeBackupBackupPlan#selected_applications}
    */
    readonly selectedApplications?: GkeBackupBackupPlanBackupConfigSelectedApplications;
    /**
    * selected_namespaces block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#selected_namespaces GkeBackupBackupPlan#selected_namespaces}
    */
    readonly selectedNamespaces?: GkeBackupBackupPlanBackupConfigSelectedNamespaces;
}
export declare function gkeBackupBackupPlanBackupConfigToTerraform(struct?: GkeBackupBackupPlanBackupConfigOutputReference | GkeBackupBackupPlanBackupConfig): any;
export declare function gkeBackupBackupPlanBackupConfigToHclTerraform(struct?: GkeBackupBackupPlanBackupConfigOutputReference | GkeBackupBackupPlanBackupConfig): any;
export declare class GkeBackupBackupPlanBackupConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupConfig | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupConfig | undefined);
    private _allNamespaces?;
    get allNamespaces(): boolean | cdktf.IResolvable;
    set allNamespaces(value: boolean | cdktf.IResolvable);
    resetAllNamespaces(): void;
    get allNamespacesInput(): boolean | cdktf.IResolvable | undefined;
    private _includeSecrets?;
    get includeSecrets(): boolean | cdktf.IResolvable;
    set includeSecrets(value: boolean | cdktf.IResolvable);
    resetIncludeSecrets(): void;
    get includeSecretsInput(): boolean | cdktf.IResolvable | undefined;
    private _includeVolumeData?;
    get includeVolumeData(): boolean | cdktf.IResolvable;
    set includeVolumeData(value: boolean | cdktf.IResolvable);
    resetIncludeVolumeData(): void;
    get includeVolumeDataInput(): boolean | cdktf.IResolvable | undefined;
    private _permissiveMode?;
    get permissiveMode(): boolean | cdktf.IResolvable;
    set permissiveMode(value: boolean | cdktf.IResolvable);
    resetPermissiveMode(): void;
    get permissiveModeInput(): boolean | cdktf.IResolvable | undefined;
    private _encryptionKey;
    get encryptionKey(): GkeBackupBackupPlanBackupConfigEncryptionKeyOutputReference;
    putEncryptionKey(value: GkeBackupBackupPlanBackupConfigEncryptionKey): void;
    resetEncryptionKey(): void;
    get encryptionKeyInput(): GkeBackupBackupPlanBackupConfigEncryptionKey | undefined;
    private _selectedApplications;
    get selectedApplications(): GkeBackupBackupPlanBackupConfigSelectedApplicationsOutputReference;
    putSelectedApplications(value: GkeBackupBackupPlanBackupConfigSelectedApplications): void;
    resetSelectedApplications(): void;
    get selectedApplicationsInput(): GkeBackupBackupPlanBackupConfigSelectedApplications | undefined;
    private _selectedNamespaces;
    get selectedNamespaces(): GkeBackupBackupPlanBackupConfigSelectedNamespacesOutputReference;
    putSelectedNamespaces(value: GkeBackupBackupPlanBackupConfigSelectedNamespaces): void;
    resetSelectedNamespaces(): void;
    get selectedNamespacesInput(): GkeBackupBackupPlanBackupConfigSelectedNamespaces | undefined;
}
export interface GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeek {
    /**
    * A list of days of week. Possible values: ["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#days_of_week GkeBackupBackupPlan#days_of_week}
    */
    readonly daysOfWeek?: string[];
}
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeekToTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeekOutputReference | GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeek): any;
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeekToHclTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeekOutputReference | GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeek): any;
export declare class GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeekOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeek | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeek | undefined);
    private _daysOfWeek?;
    get daysOfWeek(): string[];
    set daysOfWeek(value: string[]);
    resetDaysOfWeek(): void;
    get daysOfWeekInput(): string[] | undefined;
}
export interface GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDate {
    /**
    * Day of a month.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#day GkeBackupBackupPlan#day}
    */
    readonly day?: number;
    /**
    * Month of a year.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#month GkeBackupBackupPlan#month}
    */
    readonly month?: number;
    /**
    * Year of the date.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#year GkeBackupBackupPlan#year}
    */
    readonly year?: number;
}
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDateToTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDateOutputReference | GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDate): any;
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDateToHclTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDateOutputReference | GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDate): any;
export declare class GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDateOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDate | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDate | undefined);
    private _day?;
    get day(): number;
    set day(value: number);
    resetDay(): void;
    get dayInput(): number | undefined;
    private _month?;
    get month(): number;
    set month(value: number);
    resetMonth(): void;
    get monthInput(): number | undefined;
    private _year?;
    get year(): number;
    set year(value: number);
    resetYear(): void;
    get yearInput(): number | undefined;
}
export interface GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTime {
    /**
    * Hours of day in 24 hour format.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#hours GkeBackupBackupPlan#hours}
    */
    readonly hours?: number;
    /**
    * Minutes of hour of day.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#minutes GkeBackupBackupPlan#minutes}
    */
    readonly minutes?: number;
    /**
    * Fractions of seconds in nanoseconds.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#nanos GkeBackupBackupPlan#nanos}
    */
    readonly nanos?: number;
    /**
    * Seconds of minutes of the time.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#seconds GkeBackupBackupPlan#seconds}
    */
    readonly seconds?: number;
}
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTimeToTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTimeOutputReference | GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTime): any;
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTimeToHclTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTimeOutputReference | GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTime): any;
export declare class GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTimeOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTime | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTime | undefined);
    private _hours?;
    get hours(): number;
    set hours(value: number);
    resetHours(): void;
    get hoursInput(): number | undefined;
    private _minutes?;
    get minutes(): number;
    set minutes(value: number);
    resetMinutes(): void;
    get minutesInput(): number | undefined;
    private _nanos?;
    get nanos(): number;
    set nanos(value: number);
    resetNanos(): void;
    get nanosInput(): number | undefined;
    private _seconds?;
    get seconds(): number;
    set seconds(value: number);
    resetSeconds(): void;
    get secondsInput(): number | undefined;
}
export interface GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows {
    /**
    * The exclusion window occurs every day if set to "True".
    * Specifying this field to "False" is an error.
    * Only one of singleOccurrenceDate, daily and daysOfWeek may be set.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#daily GkeBackupBackupPlan#daily}
    */
    readonly daily?: boolean | cdktf.IResolvable;
    /**
    * Specifies duration of the window in seconds with up to nine fractional digits,
    * terminated by 's'. Example: "3.5s". Restrictions for duration based on the
    * recurrence type to allow some time for backup to happen:
    *   - single_occurrence_date:  no restriction
    *   - daily window: duration < 24 hours
    *   - weekly window:
    *     - days of week includes all seven days of a week: duration < 24 hours
    *     - all other weekly window: duration < 168 hours (i.e., 24 * 7 hours)
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#duration GkeBackupBackupPlan#duration}
    */
    readonly duration: string;
    /**
    * days_of_week block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#days_of_week GkeBackupBackupPlan#days_of_week}
    */
    readonly daysOfWeek?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeek;
    /**
    * single_occurrence_date block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#single_occurrence_date GkeBackupBackupPlan#single_occurrence_date}
    */
    readonly singleOccurrenceDate?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDate;
    /**
    * start_time block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#start_time GkeBackupBackupPlan#start_time}
    */
    readonly startTime: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTime;
}
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsToTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows | cdktf.IResolvable): any;
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsToHclTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows | cdktf.IResolvable): any;
export declare class GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows | cdktf.IResolvable | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows | cdktf.IResolvable | undefined);
    private _daily?;
    get daily(): boolean | cdktf.IResolvable;
    set daily(value: boolean | cdktf.IResolvable);
    resetDaily(): void;
    get dailyInput(): boolean | cdktf.IResolvable | undefined;
    private _duration?;
    get duration(): string;
    set duration(value: string);
    get durationInput(): string | undefined;
    private _daysOfWeek;
    get daysOfWeek(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeekOutputReference;
    putDaysOfWeek(value: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeek): void;
    resetDaysOfWeek(): void;
    get daysOfWeekInput(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsDaysOfWeek | undefined;
    private _singleOccurrenceDate;
    get singleOccurrenceDate(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDateOutputReference;
    putSingleOccurrenceDate(value: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDate): void;
    resetSingleOccurrenceDate(): void;
    get singleOccurrenceDateInput(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsSingleOccurrenceDate | undefined;
    private _startTime;
    get startTime(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTimeOutputReference;
    putStartTime(value: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTime): void;
    get startTimeInput(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsStartTime | undefined;
}
export declare class GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows[] | cdktf.IResolvable;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsOutputReference;
}
export interface GkeBackupBackupPlanBackupScheduleRpoConfig {
    /**
    * Defines the target RPO for the BackupPlan in minutes, which means the target
    * maximum data loss in time that is acceptable for this BackupPlan. This must be
    * at least 60, i.e., 1 hour, and at most 86400, i.e., 60 days.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#target_rpo_minutes GkeBackupBackupPlan#target_rpo_minutes}
    */
    readonly targetRpoMinutes: number;
    /**
    * exclusion_windows block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#exclusion_windows GkeBackupBackupPlan#exclusion_windows}
    */
    readonly exclusionWindows?: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows[] | cdktf.IResolvable;
}
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigToTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigOutputReference | GkeBackupBackupPlanBackupScheduleRpoConfig): any;
export declare function gkeBackupBackupPlanBackupScheduleRpoConfigToHclTerraform(struct?: GkeBackupBackupPlanBackupScheduleRpoConfigOutputReference | GkeBackupBackupPlanBackupScheduleRpoConfig): any;
export declare class GkeBackupBackupPlanBackupScheduleRpoConfigOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupScheduleRpoConfig | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupScheduleRpoConfig | undefined);
    private _targetRpoMinutes?;
    get targetRpoMinutes(): number;
    set targetRpoMinutes(value: number);
    get targetRpoMinutesInput(): number | undefined;
    private _exclusionWindows;
    get exclusionWindows(): GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindowsList;
    putExclusionWindows(value: GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows[] | cdktf.IResolvable): void;
    resetExclusionWindows(): void;
    get exclusionWindowsInput(): cdktf.IResolvable | GkeBackupBackupPlanBackupScheduleRpoConfigExclusionWindows[] | undefined;
}
export interface GkeBackupBackupPlanBackupSchedule {
    /**
    * A standard cron string that defines a repeating schedule for
    * creating Backups via this BackupPlan.
    * This is mutually exclusive with the rpoConfig field since at most one
    * schedule can be defined for a BackupPlan.
    * If this is defined, then backupRetainDays must also be defined.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#cron_schedule GkeBackupBackupPlan#cron_schedule}
    */
    readonly cronSchedule?: string;
    /**
    * This flag denotes whether automatic Backup creation is paused for this BackupPlan.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#paused GkeBackupBackupPlan#paused}
    */
    readonly paused?: boolean | cdktf.IResolvable;
    /**
    * rpo_config block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#rpo_config GkeBackupBackupPlan#rpo_config}
    */
    readonly rpoConfig?: GkeBackupBackupPlanBackupScheduleRpoConfig;
}
export declare function gkeBackupBackupPlanBackupScheduleToTerraform(struct?: GkeBackupBackupPlanBackupScheduleOutputReference | GkeBackupBackupPlanBackupSchedule): any;
export declare function gkeBackupBackupPlanBackupScheduleToHclTerraform(struct?: GkeBackupBackupPlanBackupScheduleOutputReference | GkeBackupBackupPlanBackupSchedule): any;
export declare class GkeBackupBackupPlanBackupScheduleOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanBackupSchedule | undefined;
    set internalValue(value: GkeBackupBackupPlanBackupSchedule | undefined);
    private _cronSchedule?;
    get cronSchedule(): string;
    set cronSchedule(value: string);
    resetCronSchedule(): void;
    get cronScheduleInput(): string | undefined;
    private _paused?;
    get paused(): boolean | cdktf.IResolvable;
    set paused(value: boolean | cdktf.IResolvable);
    resetPaused(): void;
    get pausedInput(): boolean | cdktf.IResolvable | undefined;
    private _rpoConfig;
    get rpoConfig(): GkeBackupBackupPlanBackupScheduleRpoConfigOutputReference;
    putRpoConfig(value: GkeBackupBackupPlanBackupScheduleRpoConfig): void;
    resetRpoConfig(): void;
    get rpoConfigInput(): GkeBackupBackupPlanBackupScheduleRpoConfig | undefined;
}
export interface GkeBackupBackupPlanRetentionPolicy {
    /**
    * Minimum age for a Backup created via this BackupPlan (in days).
    * Must be an integer value between 0-90 (inclusive).
    * A Backup created under this BackupPlan will not be deletable
    * until it reaches Backup's (create time + backup_delete_lock_days).
    * Updating this field of a BackupPlan does not affect existing Backups.
    * Backups created after a successful update will inherit this new value.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#backup_delete_lock_days GkeBackupBackupPlan#backup_delete_lock_days}
    */
    readonly backupDeleteLockDays?: number;
    /**
    * The default maximum age of a Backup created via this BackupPlan.
    * This field MUST be an integer value >= 0 and <= 365. If specified,
    * a Backup created under this BackupPlan will be automatically deleted
    * after its age reaches (createTime + backupRetainDays).
    * If not specified, Backups created under this BackupPlan will NOT be
    * subject to automatic deletion. Updating this field does NOT affect
    * existing Backups under it. Backups created AFTER a successful update
    * will automatically pick up the new value.
    * NOTE: backupRetainDays must be >= backupDeleteLockDays.
    * If cronSchedule is defined, then this must be <= 360 * the creation interval.
    * If rpo_config is defined, then this must be
    * <= 360 * targetRpoMinutes/(1440minutes/day)
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#backup_retain_days GkeBackupBackupPlan#backup_retain_days}
    */
    readonly backupRetainDays?: number;
    /**
    * This flag denotes whether the retention policy of this BackupPlan is locked.
    * If set to True, no further update is allowed on this policy, including
    * the locked field itself.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#locked GkeBackupBackupPlan#locked}
    */
    readonly locked?: boolean | cdktf.IResolvable;
}
export declare function gkeBackupBackupPlanRetentionPolicyToTerraform(struct?: GkeBackupBackupPlanRetentionPolicyOutputReference | GkeBackupBackupPlanRetentionPolicy): any;
export declare function gkeBackupBackupPlanRetentionPolicyToHclTerraform(struct?: GkeBackupBackupPlanRetentionPolicyOutputReference | GkeBackupBackupPlanRetentionPolicy): any;
export declare class GkeBackupBackupPlanRetentionPolicyOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanRetentionPolicy | undefined;
    set internalValue(value: GkeBackupBackupPlanRetentionPolicy | undefined);
    private _backupDeleteLockDays?;
    get backupDeleteLockDays(): number;
    set backupDeleteLockDays(value: number);
    resetBackupDeleteLockDays(): void;
    get backupDeleteLockDaysInput(): number | undefined;
    private _backupRetainDays?;
    get backupRetainDays(): number;
    set backupRetainDays(value: number);
    resetBackupRetainDays(): void;
    get backupRetainDaysInput(): number | undefined;
    private _locked?;
    get locked(): boolean | cdktf.IResolvable;
    set locked(value: boolean | cdktf.IResolvable);
    resetLocked(): void;
    get lockedInput(): boolean | cdktf.IResolvable | undefined;
}
export interface GkeBackupBackupPlanTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#create GkeBackupBackupPlan#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#delete GkeBackupBackupPlan#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#update GkeBackupBackupPlan#update}
    */
    readonly update?: string;
}
export declare function gkeBackupBackupPlanTimeoutsToTerraform(struct?: GkeBackupBackupPlanTimeouts | cdktf.IResolvable): any;
export declare function gkeBackupBackupPlanTimeoutsToHclTerraform(struct?: GkeBackupBackupPlanTimeouts | cdktf.IResolvable): any;
export declare class GkeBackupBackupPlanTimeoutsOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    private resolvableValue?;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string);
    get internalValue(): GkeBackupBackupPlanTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: GkeBackupBackupPlanTimeouts | cdktf.IResolvable | undefined);
    private _create?;
    get create(): string;
    set create(value: string);
    resetCreate(): void;
    get createInput(): string | undefined;
    private _delete?;
    get delete(): string;
    set delete(value: string);
    resetDelete(): void;
    get deleteInput(): string | undefined;
    private _update?;
    get update(): string;
    set update(value: string);
    resetUpdate(): void;
    get updateInput(): string | undefined;
}
/**
* Represents a {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan google_gke_backup_backup_plan}
*/
export declare class GkeBackupBackupPlan extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_gke_backup_backup_plan";
    /**
    * Generates CDKTF code for importing a GkeBackupBackupPlan resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the GkeBackupBackupPlan to import
    * @param importFromId The id of the existing GkeBackupBackupPlan that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the GkeBackupBackupPlan to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/hashicorp/google/6.36.0/docs/resources/gke_backup_backup_plan google_gke_backup_backup_plan} Resource
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options GkeBackupBackupPlanConfig
    */
    constructor(scope: Construct, id: string, config: GkeBackupBackupPlanConfig);
    private _cluster?;
    get cluster(): string;
    set cluster(value: string);
    get clusterInput(): string | undefined;
    private _deactivated?;
    get deactivated(): boolean | cdktf.IResolvable;
    set deactivated(value: boolean | cdktf.IResolvable);
    resetDeactivated(): void;
    get deactivatedInput(): boolean | cdktf.IResolvable | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    get etag(): string;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    get protectedPodCount(): number;
    get state(): string;
    get stateReason(): string;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get uid(): string;
    private _backupConfig;
    get backupConfig(): GkeBackupBackupPlanBackupConfigOutputReference;
    putBackupConfig(value: GkeBackupBackupPlanBackupConfig): void;
    resetBackupConfig(): void;
    get backupConfigInput(): GkeBackupBackupPlanBackupConfig | undefined;
    private _backupSchedule;
    get backupSchedule(): GkeBackupBackupPlanBackupScheduleOutputReference;
    putBackupSchedule(value: GkeBackupBackupPlanBackupSchedule): void;
    resetBackupSchedule(): void;
    get backupScheduleInput(): GkeBackupBackupPlanBackupSchedule | undefined;
    private _retentionPolicy;
    get retentionPolicy(): GkeBackupBackupPlanRetentionPolicyOutputReference;
    putRetentionPolicy(value: GkeBackupBackupPlanRetentionPolicy): void;
    resetRetentionPolicy(): void;
    get retentionPolicyInput(): GkeBackupBackupPlanRetentionPolicy | undefined;
    private _timeouts;
    get timeouts(): GkeBackupBackupPlanTimeoutsOutputReference;
    putTimeouts(value: GkeBackupBackupPlanTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | GkeBackupBackupPlanTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
