/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface AppConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#budget_policy_id App#budget_policy_id}
    */
    readonly budgetPolicyId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#description App#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#name App#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#no_compute App#no_compute}
    */
    readonly noCompute?: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#resources App#resources}
    */
    readonly resources?: AppResources[] | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#user_api_scopes App#user_api_scopes}
    */
    readonly userApiScopes?: string[];
}
export interface AppActiveDeploymentDeploymentArtifacts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#source_code_path App#source_code_path}
    */
    readonly sourceCodePath?: string;
}
export declare function appActiveDeploymentDeploymentArtifactsToTerraform(struct?: AppActiveDeploymentDeploymentArtifacts): any;
export declare function appActiveDeploymentDeploymentArtifactsToHclTerraform(struct?: AppActiveDeploymentDeploymentArtifacts): any;
export declare class AppActiveDeploymentDeploymentArtifactsOutputReference 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(): AppActiveDeploymentDeploymentArtifacts | undefined;
    set internalValue(value: AppActiveDeploymentDeploymentArtifacts | undefined);
    private _sourceCodePath?;
    get sourceCodePath(): string;
    set sourceCodePath(value: string);
    resetSourceCodePath(): void;
    get sourceCodePathInput(): string | undefined;
}
export interface AppActiveDeploymentStatus {
}
export declare function appActiveDeploymentStatusToTerraform(struct?: AppActiveDeploymentStatus): any;
export declare function appActiveDeploymentStatusToHclTerraform(struct?: AppActiveDeploymentStatus): any;
export declare class AppActiveDeploymentStatusOutputReference 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(): AppActiveDeploymentStatus | undefined;
    set internalValue(value: AppActiveDeploymentStatus | undefined);
    get message(): string;
    get state(): string;
}
export interface AppActiveDeployment {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#deployment_id App#deployment_id}
    */
    readonly deploymentId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#mode App#mode}
    */
    readonly mode?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#source_code_path App#source_code_path}
    */
    readonly sourceCodePath?: string;
}
export declare function appActiveDeploymentToTerraform(struct?: AppActiveDeployment): any;
export declare function appActiveDeploymentToHclTerraform(struct?: AppActiveDeployment): any;
export declare class AppActiveDeploymentOutputReference 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(): AppActiveDeployment | undefined;
    set internalValue(value: AppActiveDeployment | undefined);
    get createTime(): string;
    get creator(): string;
    private _deploymentArtifacts;
    get deploymentArtifacts(): AppActiveDeploymentDeploymentArtifactsOutputReference;
    private _deploymentId?;
    get deploymentId(): string;
    set deploymentId(value: string);
    resetDeploymentId(): void;
    get deploymentIdInput(): string | undefined;
    private _mode?;
    get mode(): string;
    set mode(value: string);
    resetMode(): void;
    get modeInput(): string | undefined;
    private _sourceCodePath?;
    get sourceCodePath(): string;
    set sourceCodePath(value: string);
    resetSourceCodePath(): void;
    get sourceCodePathInput(): string | undefined;
    private _status;
    get status(): AppActiveDeploymentStatusOutputReference;
    get updateTime(): string;
}
export interface AppAppStatus {
}
export declare function appAppStatusToTerraform(struct?: AppAppStatus): any;
export declare function appAppStatusToHclTerraform(struct?: AppAppStatus): any;
export declare class AppAppStatusOutputReference 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(): AppAppStatus | undefined;
    set internalValue(value: AppAppStatus | undefined);
    get message(): string;
    get state(): string;
}
export interface AppComputeStatus {
}
export declare function appComputeStatusToTerraform(struct?: AppComputeStatus): any;
export declare function appComputeStatusToHclTerraform(struct?: AppComputeStatus): any;
export declare class AppComputeStatusOutputReference 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(): AppComputeStatus | undefined;
    set internalValue(value: AppComputeStatus | undefined);
    get message(): string;
    get state(): string;
}
export interface AppPendingDeploymentDeploymentArtifacts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#source_code_path App#source_code_path}
    */
    readonly sourceCodePath?: string;
}
export declare function appPendingDeploymentDeploymentArtifactsToTerraform(struct?: AppPendingDeploymentDeploymentArtifacts): any;
export declare function appPendingDeploymentDeploymentArtifactsToHclTerraform(struct?: AppPendingDeploymentDeploymentArtifacts): any;
export declare class AppPendingDeploymentDeploymentArtifactsOutputReference 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(): AppPendingDeploymentDeploymentArtifacts | undefined;
    set internalValue(value: AppPendingDeploymentDeploymentArtifacts | undefined);
    private _sourceCodePath?;
    get sourceCodePath(): string;
    set sourceCodePath(value: string);
    resetSourceCodePath(): void;
    get sourceCodePathInput(): string | undefined;
}
export interface AppPendingDeploymentStatus {
}
export declare function appPendingDeploymentStatusToTerraform(struct?: AppPendingDeploymentStatus): any;
export declare function appPendingDeploymentStatusToHclTerraform(struct?: AppPendingDeploymentStatus): any;
export declare class AppPendingDeploymentStatusOutputReference 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(): AppPendingDeploymentStatus | undefined;
    set internalValue(value: AppPendingDeploymentStatus | undefined);
    get message(): string;
    get state(): string;
}
export interface AppPendingDeployment {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#deployment_id App#deployment_id}
    */
    readonly deploymentId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#mode App#mode}
    */
    readonly mode?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#source_code_path App#source_code_path}
    */
    readonly sourceCodePath?: string;
}
export declare function appPendingDeploymentToTerraform(struct?: AppPendingDeployment): any;
export declare function appPendingDeploymentToHclTerraform(struct?: AppPendingDeployment): any;
export declare class AppPendingDeploymentOutputReference 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(): AppPendingDeployment | undefined;
    set internalValue(value: AppPendingDeployment | undefined);
    get createTime(): string;
    get creator(): string;
    private _deploymentArtifacts;
    get deploymentArtifacts(): AppPendingDeploymentDeploymentArtifactsOutputReference;
    private _deploymentId?;
    get deploymentId(): string;
    set deploymentId(value: string);
    resetDeploymentId(): void;
    get deploymentIdInput(): string | undefined;
    private _mode?;
    get mode(): string;
    set mode(value: string);
    resetMode(): void;
    get modeInput(): string | undefined;
    private _sourceCodePath?;
    get sourceCodePath(): string;
    set sourceCodePath(value: string);
    resetSourceCodePath(): void;
    get sourceCodePathInput(): string | undefined;
    private _status;
    get status(): AppPendingDeploymentStatusOutputReference;
    get updateTime(): string;
}
export interface AppResourcesJob {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#id App#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;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#permission App#permission}
    */
    readonly permission: string;
}
export declare function appResourcesJobToTerraform(struct?: AppResourcesJob | cdktf.IResolvable): any;
export declare function appResourcesJobToHclTerraform(struct?: AppResourcesJob | cdktf.IResolvable): any;
export declare class AppResourcesJobOutputReference 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(): AppResourcesJob | cdktf.IResolvable | undefined;
    set internalValue(value: AppResourcesJob | cdktf.IResolvable | undefined);
    private _id?;
    get id(): string;
    set id(value: string);
    get idInput(): string | undefined;
    private _permission?;
    get permission(): string;
    set permission(value: string);
    get permissionInput(): string | undefined;
}
export interface AppResourcesSecret {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#key App#key}
    */
    readonly key: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#permission App#permission}
    */
    readonly permission: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#scope App#scope}
    */
    readonly scope: string;
}
export declare function appResourcesSecretToTerraform(struct?: AppResourcesSecret | cdktf.IResolvable): any;
export declare function appResourcesSecretToHclTerraform(struct?: AppResourcesSecret | cdktf.IResolvable): any;
export declare class AppResourcesSecretOutputReference 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(): AppResourcesSecret | cdktf.IResolvable | undefined;
    set internalValue(value: AppResourcesSecret | cdktf.IResolvable | undefined);
    private _key?;
    get key(): string;
    set key(value: string);
    get keyInput(): string | undefined;
    private _permission?;
    get permission(): string;
    set permission(value: string);
    get permissionInput(): string | undefined;
    private _scope?;
    get scope(): string;
    set scope(value: string);
    get scopeInput(): string | undefined;
}
export interface AppResourcesServingEndpoint {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#name App#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#permission App#permission}
    */
    readonly permission: string;
}
export declare function appResourcesServingEndpointToTerraform(struct?: AppResourcesServingEndpoint | cdktf.IResolvable): any;
export declare function appResourcesServingEndpointToHclTerraform(struct?: AppResourcesServingEndpoint | cdktf.IResolvable): any;
export declare class AppResourcesServingEndpointOutputReference 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(): AppResourcesServingEndpoint | cdktf.IResolvable | undefined;
    set internalValue(value: AppResourcesServingEndpoint | cdktf.IResolvable | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _permission?;
    get permission(): string;
    set permission(value: string);
    get permissionInput(): string | undefined;
}
export interface AppResourcesSqlWarehouse {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#id App#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;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#permission App#permission}
    */
    readonly permission: string;
}
export declare function appResourcesSqlWarehouseToTerraform(struct?: AppResourcesSqlWarehouse | cdktf.IResolvable): any;
export declare function appResourcesSqlWarehouseToHclTerraform(struct?: AppResourcesSqlWarehouse | cdktf.IResolvable): any;
export declare class AppResourcesSqlWarehouseOutputReference 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(): AppResourcesSqlWarehouse | cdktf.IResolvable | undefined;
    set internalValue(value: AppResourcesSqlWarehouse | cdktf.IResolvable | undefined);
    private _id?;
    get id(): string;
    set id(value: string);
    get idInput(): string | undefined;
    private _permission?;
    get permission(): string;
    set permission(value: string);
    get permissionInput(): string | undefined;
}
export interface AppResources {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#description App#description}
    */
    readonly description?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#job App#job}
    */
    readonly job?: AppResourcesJob;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#name App#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#secret App#secret}
    */
    readonly secret?: AppResourcesSecret;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#serving_endpoint App#serving_endpoint}
    */
    readonly servingEndpoint?: AppResourcesServingEndpoint;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#sql_warehouse App#sql_warehouse}
    */
    readonly sqlWarehouse?: AppResourcesSqlWarehouse;
}
export declare function appResourcesToTerraform(struct?: AppResources | cdktf.IResolvable): any;
export declare function appResourcesToHclTerraform(struct?: AppResources | cdktf.IResolvable): any;
export declare class AppResourcesOutputReference 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(): AppResources | cdktf.IResolvable | undefined;
    set internalValue(value: AppResources | cdktf.IResolvable | undefined);
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _job;
    get job(): AppResourcesJobOutputReference;
    putJob(value: AppResourcesJob): void;
    resetJob(): void;
    get jobInput(): cdktf.IResolvable | AppResourcesJob | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _secret;
    get secret(): AppResourcesSecretOutputReference;
    putSecret(value: AppResourcesSecret): void;
    resetSecret(): void;
    get secretInput(): cdktf.IResolvable | AppResourcesSecret | undefined;
    private _servingEndpoint;
    get servingEndpoint(): AppResourcesServingEndpointOutputReference;
    putServingEndpoint(value: AppResourcesServingEndpoint): void;
    resetServingEndpoint(): void;
    get servingEndpointInput(): cdktf.IResolvable | AppResourcesServingEndpoint | undefined;
    private _sqlWarehouse;
    get sqlWarehouse(): AppResourcesSqlWarehouseOutputReference;
    putSqlWarehouse(value: AppResourcesSqlWarehouse): void;
    resetSqlWarehouse(): void;
    get sqlWarehouseInput(): cdktf.IResolvable | AppResourcesSqlWarehouse | undefined;
}
export declare class AppResourcesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: AppResources[] | 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): AppResourcesOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app databricks_app}
*/
export declare class App extends cdktf.TerraformResource {
    static readonly tfResourceType = "databricks_app";
    /**
    * Generates CDKTF code for importing a App 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 App to import
    * @param importFromId The id of the existing App that should be imported. Refer to the {@link https://registry.terraform.io/providers/databricks/databricks/1.71.0/docs/resources/app#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the App 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/databricks/databricks/1.71.0/docs/resources/app databricks_app} 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 AppConfig
    */
    constructor(scope: Construct, id: string, config: AppConfig);
    private _activeDeployment;
    get activeDeployment(): AppActiveDeploymentOutputReference;
    private _appStatus;
    get appStatus(): AppAppStatusOutputReference;
    private _budgetPolicyId?;
    get budgetPolicyId(): string;
    set budgetPolicyId(value: string);
    resetBudgetPolicyId(): void;
    get budgetPolicyIdInput(): string | undefined;
    private _computeStatus;
    get computeStatus(): AppComputeStatusOutputReference;
    get createTime(): string;
    get creator(): string;
    get defaultSourceCodePath(): string;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    get effectiveBudgetPolicyId(): string;
    get effectiveUserApiScopes(): string[];
    get id(): string;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    private _noCompute?;
    get noCompute(): boolean | cdktf.IResolvable;
    set noCompute(value: boolean | cdktf.IResolvable);
    resetNoCompute(): void;
    get noComputeInput(): boolean | cdktf.IResolvable | undefined;
    get oauth2AppClientId(): string;
    get oauth2AppIntegrationId(): string;
    private _pendingDeployment;
    get pendingDeployment(): AppPendingDeploymentOutputReference;
    private _resources;
    get resources(): AppResourcesList;
    putResources(value: AppResources[] | cdktf.IResolvable): void;
    resetResources(): void;
    get resourcesInput(): cdktf.IResolvable | AppResources[] | undefined;
    get servicePrincipalClientId(): string;
    get servicePrincipalId(): number;
    get servicePrincipalName(): string;
    get updateTime(): string;
    get updater(): string;
    get url(): string;
    private _userApiScopes?;
    get userApiScopes(): string[];
    set userApiScopes(value: string[]);
    resetUserApiScopes(): void;
    get userApiScopesInput(): string[] | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
