/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface ColabScheduleConfig extends cdktf.TerraformMetaArguments {
    /**
    * Whether new scheduled runs can be queued when max_concurrent_runs limit is reached. If set to true, new runs will be queued instead of skipped. Default to false.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#allow_queueing ColabSchedule#allow_queueing}
    */
    readonly allowQueueing?: boolean | cdktf.IResolvable;
    /**
    * Cron schedule (https://en.wikipedia.org/wiki/Cron) to launch scheduled runs.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#cron ColabSchedule#cron}
    */
    readonly cron: string;
    /**
    * Desired state of the Colab Schedule. Set this field to 'ACTIVE' to start/resume the schedule, and 'PAUSED' to pause the schedule.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#desired_state ColabSchedule#desired_state}
    */
    readonly desiredState?: string;
    /**
    * Required. The display name of the Schedule.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#display_name ColabSchedule#display_name}
    */
    readonly displayName: string;
    /**
    * Timestamp after which no new runs can be scheduled. If specified, the schedule will be completed when either end_time is reached or when scheduled_run_count >= max_run_count. Must be in the RFC 3339 (https://www.ietf.org/rfc/rfc3339.txt) format.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#end_time ColabSchedule#end_time}
    */
    readonly endTime?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#id ColabSchedule#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;
    /**
    * The location for the resource: https://cloud.google.com/colab/docs/locations
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#location ColabSchedule#location}
    */
    readonly location: string;
    /**
    * Maximum number of runs that can be started concurrently for this Schedule. This is the limit for starting the scheduled requests and not the execution of the notebook execution jobs created by the requests.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#max_concurrent_run_count ColabSchedule#max_concurrent_run_count}
    */
    readonly maxConcurrentRunCount: string;
    /**
    * Maximum run count of the schedule. If specified, The schedule will be completed when either startedRunCount >= maxRunCount or when endTime is reached. If not specified, new runs will keep getting scheduled until this Schedule is paused or deleted. Already scheduled runs will be allowed to complete. Unset if not specified.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#max_run_count ColabSchedule#max_run_count}
    */
    readonly maxRunCount?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#project ColabSchedule#project}
    */
    readonly project?: string;
    /**
    * The timestamp after which the first run can be scheduled. Defaults to the schedule creation time. Must be in the RFC 3339 (https://www.ietf.org/rfc/rfc3339.txt) format.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#start_time ColabSchedule#start_time}
    */
    readonly startTime?: string;
    /**
    * create_notebook_execution_job_request block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#create_notebook_execution_job_request ColabSchedule#create_notebook_execution_job_request}
    */
    readonly createNotebookExecutionJobRequest: ColabScheduleCreateNotebookExecutionJobRequest;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#timeouts ColabSchedule#timeouts}
    */
    readonly timeouts?: ColabScheduleTimeouts;
}
export interface ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource {
    /**
    * The commit SHA to read repository with. If unset, the file will be read at HEAD.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#commit_sha ColabSchedule#commit_sha}
    */
    readonly commitSha?: string;
    /**
    * The resource name of the Dataform Repository.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#dataform_repository_resource_name ColabSchedule#dataform_repository_resource_name}
    */
    readonly dataformRepositoryResourceName: string;
}
export declare function colabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySourceToTerraform(struct?: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySourceOutputReference | ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource): any;
export declare function colabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySourceToHclTerraform(struct?: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySourceOutputReference | ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource): any;
export declare class ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySourceOutputReference 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(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource | undefined;
    set internalValue(value: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource | undefined);
    private _commitSha?;
    get commitSha(): string;
    set commitSha(value: string);
    resetCommitSha(): void;
    get commitShaInput(): string | undefined;
    private _dataformRepositoryResourceName?;
    get dataformRepositoryResourceName(): string;
    set dataformRepositoryResourceName(value: string);
    get dataformRepositoryResourceNameInput(): string | undefined;
}
export interface ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource {
    /**
    * The version of the Cloud Storage object to read. If unset, the current version of the object is read. See https://cloud.google.com/storage/docs/metadata#generation-number.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#generation ColabSchedule#generation}
    */
    readonly generation?: string;
    /**
    * The Cloud Storage uri pointing to the ipynb file. Format: gs://bucket/notebook_file.ipynb
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#uri ColabSchedule#uri}
    */
    readonly uri: string;
}
export declare function colabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSourceToTerraform(struct?: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSourceOutputReference | ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource): any;
export declare function colabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSourceToHclTerraform(struct?: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSourceOutputReference | ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource): any;
export declare class ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSourceOutputReference 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(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource | undefined;
    set internalValue(value: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource | undefined);
    private _generation?;
    get generation(): string;
    set generation(value: string);
    resetGeneration(): void;
    get generationInput(): string | undefined;
    private _uri?;
    get uri(): string;
    set uri(value: string);
    get uriInput(): string | undefined;
}
export interface ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob {
    /**
    * Required. The display name of the Notebook Execution.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#display_name ColabSchedule#display_name}
    */
    readonly displayName: string;
    /**
    * Max running time of the execution job in seconds (default 86400s / 24 hrs). A duration in seconds with up to nine fractional digits, ending with "s". Example: "3.5s".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#execution_timeout ColabSchedule#execution_timeout}
    */
    readonly executionTimeout?: string;
    /**
    * The user email to run the execution as.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#execution_user ColabSchedule#execution_user}
    */
    readonly executionUser?: string;
    /**
    * The Cloud Storage location to upload the result to. Format:'gs://bucket-name'
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#gcs_output_uri ColabSchedule#gcs_output_uri}
    */
    readonly gcsOutputUri: string;
    /**
    * The NotebookRuntimeTemplate to source compute configuration from.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#notebook_runtime_template_resource_name ColabSchedule#notebook_runtime_template_resource_name}
    */
    readonly notebookRuntimeTemplateResourceName: string;
    /**
    * The service account to run the execution as.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#service_account ColabSchedule#service_account}
    */
    readonly serviceAccount?: string;
    /**
    * dataform_repository_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#dataform_repository_source ColabSchedule#dataform_repository_source}
    */
    readonly dataformRepositorySource?: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource;
    /**
    * gcs_notebook_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#gcs_notebook_source ColabSchedule#gcs_notebook_source}
    */
    readonly gcsNotebookSource?: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource;
}
export declare function colabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobToTerraform(struct?: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobOutputReference | ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob): any;
export declare function colabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobToHclTerraform(struct?: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobOutputReference | ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob): any;
export declare class ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobOutputReference 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(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob | undefined;
    set internalValue(value: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob | undefined);
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
    private _executionTimeout?;
    get executionTimeout(): string;
    set executionTimeout(value: string);
    resetExecutionTimeout(): void;
    get executionTimeoutInput(): string | undefined;
    private _executionUser?;
    get executionUser(): string;
    set executionUser(value: string);
    resetExecutionUser(): void;
    get executionUserInput(): string | undefined;
    private _gcsOutputUri?;
    get gcsOutputUri(): string;
    set gcsOutputUri(value: string);
    get gcsOutputUriInput(): string | undefined;
    private _notebookRuntimeTemplateResourceName?;
    get notebookRuntimeTemplateResourceName(): string;
    set notebookRuntimeTemplateResourceName(value: string);
    get notebookRuntimeTemplateResourceNameInput(): string | undefined;
    private _serviceAccount?;
    get serviceAccount(): string;
    set serviceAccount(value: string);
    resetServiceAccount(): void;
    get serviceAccountInput(): string | undefined;
    private _dataformRepositorySource;
    get dataformRepositorySource(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySourceOutputReference;
    putDataformRepositorySource(value: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource): void;
    resetDataformRepositorySource(): void;
    get dataformRepositorySourceInput(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobDataformRepositorySource | undefined;
    private _gcsNotebookSource;
    get gcsNotebookSource(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSourceOutputReference;
    putGcsNotebookSource(value: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource): void;
    resetGcsNotebookSource(): void;
    get gcsNotebookSourceInput(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobGcsNotebookSource | undefined;
}
export interface ColabScheduleCreateNotebookExecutionJobRequest {
    /**
    * notebook_execution_job block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#notebook_execution_job ColabSchedule#notebook_execution_job}
    */
    readonly notebookExecutionJob: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob;
}
export declare function colabScheduleCreateNotebookExecutionJobRequestToTerraform(struct?: ColabScheduleCreateNotebookExecutionJobRequestOutputReference | ColabScheduleCreateNotebookExecutionJobRequest): any;
export declare function colabScheduleCreateNotebookExecutionJobRequestToHclTerraform(struct?: ColabScheduleCreateNotebookExecutionJobRequestOutputReference | ColabScheduleCreateNotebookExecutionJobRequest): any;
export declare class ColabScheduleCreateNotebookExecutionJobRequestOutputReference 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(): ColabScheduleCreateNotebookExecutionJobRequest | undefined;
    set internalValue(value: ColabScheduleCreateNotebookExecutionJobRequest | undefined);
    private _notebookExecutionJob;
    get notebookExecutionJob(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJobOutputReference;
    putNotebookExecutionJob(value: ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob): void;
    get notebookExecutionJobInput(): ColabScheduleCreateNotebookExecutionJobRequestNotebookExecutionJob | undefined;
}
export interface ColabScheduleTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#create ColabSchedule#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#delete ColabSchedule#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#update ColabSchedule#update}
    */
    readonly update?: string;
}
export declare function colabScheduleTimeoutsToTerraform(struct?: ColabScheduleTimeouts | cdktf.IResolvable): any;
export declare function colabScheduleTimeoutsToHclTerraform(struct?: ColabScheduleTimeouts | cdktf.IResolvable): any;
export declare class ColabScheduleTimeoutsOutputReference 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(): ColabScheduleTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: ColabScheduleTimeouts | 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.40.0/docs/resources/colab_schedule google_colab_schedule}
*/
export declare class ColabSchedule extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_colab_schedule";
    /**
    * Generates CDKTF code for importing a ColabSchedule 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 ColabSchedule to import
    * @param importFromId The id of the existing ColabSchedule that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.40.0/docs/resources/colab_schedule#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the ColabSchedule 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.40.0/docs/resources/colab_schedule google_colab_schedule} 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 ColabScheduleConfig
    */
    constructor(scope: Construct, id: string, config: ColabScheduleConfig);
    private _allowQueueing?;
    get allowQueueing(): boolean | cdktf.IResolvable;
    set allowQueueing(value: boolean | cdktf.IResolvable);
    resetAllowQueueing(): void;
    get allowQueueingInput(): boolean | cdktf.IResolvable | undefined;
    private _cron?;
    get cron(): string;
    set cron(value: string);
    get cronInput(): string | undefined;
    private _desiredState?;
    get desiredState(): string;
    set desiredState(value: string);
    resetDesiredState(): void;
    get desiredStateInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    get displayNameInput(): string | undefined;
    private _endTime?;
    get endTime(): string;
    set endTime(value: string);
    resetEndTime(): void;
    get endTimeInput(): string | undefined;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _location?;
    get location(): string;
    set location(value: string);
    get locationInput(): string | undefined;
    private _maxConcurrentRunCount?;
    get maxConcurrentRunCount(): string;
    set maxConcurrentRunCount(value: string);
    get maxConcurrentRunCountInput(): string | undefined;
    private _maxRunCount?;
    get maxRunCount(): string;
    set maxRunCount(value: string);
    resetMaxRunCount(): void;
    get maxRunCountInput(): string | undefined;
    get name(): string;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _startTime?;
    get startTime(): string;
    set startTime(value: string);
    resetStartTime(): void;
    get startTimeInput(): string | undefined;
    get state(): string;
    private _createNotebookExecutionJobRequest;
    get createNotebookExecutionJobRequest(): ColabScheduleCreateNotebookExecutionJobRequestOutputReference;
    putCreateNotebookExecutionJobRequest(value: ColabScheduleCreateNotebookExecutionJobRequest): void;
    get createNotebookExecutionJobRequestInput(): ColabScheduleCreateNotebookExecutionJobRequest | undefined;
    private _timeouts;
    get timeouts(): ColabScheduleTimeoutsOutputReference;
    putTimeouts(value: ColabScheduleTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | ColabScheduleTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
