/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface FirebaseAppHostingBackendConfig extends cdktf.TerraformMetaArguments {
    /**
    * Unstructured key value map that may be set by external tools to
    * store and arbitrary metadata. They are not queryable and should be
    * preserved when modifying objects.
    *
    * **Note**: This field is non-authoritative, and will only manage the annotations present in your configuration.
    * Please refer to the field 'effective_annotations' for all of the annotations present on the resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#annotations FirebaseAppHostingBackend#annotations}
    */
    readonly annotations?: {
        [key: string]: string;
    };
    /**
    * The [ID of a Web
    * App](https://firebase.google.com/docs/reference/firebase-management/rest/v1beta1/projects.webApps#WebApp.FIELDS.app_id)
    * associated with the backend.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#app_id FirebaseAppHostingBackend#app_id}
    */
    readonly appId: string;
    /**
    * Id of the backend. Also used as the service ID for Cloud Run, and as part
    * of the default domain name.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#backend_id FirebaseAppHostingBackend#backend_id}
    */
    readonly backendId: string;
    /**
    * Human-readable name. 63 character limit.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#display_name FirebaseAppHostingBackend#display_name}
    */
    readonly displayName?: string;
    /**
    * The environment name of the backend, used to load environment variables
    * from environment specific configuration.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#environment FirebaseAppHostingBackend#environment}
    */
    readonly environment?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#id FirebaseAppHostingBackend#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;
    /**
    * Unstructured key value map that can be used to organize and categorize
    * objects.
    *
    * **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.41.0/docs/resources/firebase_app_hosting_backend#labels FirebaseAppHostingBackend#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * The canonical IDs of a Google Cloud location such as "us-east1".
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#location FirebaseAppHostingBackend#location}
    */
    readonly location: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#project FirebaseAppHostingBackend#project}
    */
    readonly project?: string;
    /**
    * The name of the service account used for Cloud Build and Cloud Run.
    * Should have the role roles/firebaseapphosting.computeRunner
    * or equivalent permissions.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#service_account FirebaseAppHostingBackend#service_account}
    */
    readonly serviceAccount: string;
    /**
    * Immutable. Specifies how App Hosting will serve the content for this backend. It will
    * either be contained to a single region (REGIONAL_STRICT) or allowed to use
    * App Hosting's global-replicated serving infrastructure (GLOBAL_ACCESS). Possible values: ["REGIONAL_STRICT", "GLOBAL_ACCESS"]
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#serving_locality FirebaseAppHostingBackend#serving_locality}
    */
    readonly servingLocality: string;
    /**
    * codebase block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#codebase FirebaseAppHostingBackend#codebase}
    */
    readonly codebase?: FirebaseAppHostingBackendCodebase;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#timeouts FirebaseAppHostingBackend#timeouts}
    */
    readonly timeouts?: FirebaseAppHostingBackendTimeouts;
}
export interface FirebaseAppHostingBackendManagedResourcesRunService {
}
export declare function firebaseAppHostingBackendManagedResourcesRunServiceToTerraform(struct?: FirebaseAppHostingBackendManagedResourcesRunService): any;
export declare function firebaseAppHostingBackendManagedResourcesRunServiceToHclTerraform(struct?: FirebaseAppHostingBackendManagedResourcesRunService): any;
export declare class FirebaseAppHostingBackendManagedResourcesRunServiceOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): FirebaseAppHostingBackendManagedResourcesRunService | undefined;
    set internalValue(value: FirebaseAppHostingBackendManagedResourcesRunService | undefined);
    get service(): string;
}
export declare class FirebaseAppHostingBackendManagedResourcesRunServiceList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): FirebaseAppHostingBackendManagedResourcesRunServiceOutputReference;
}
export interface FirebaseAppHostingBackendManagedResources {
}
export declare function firebaseAppHostingBackendManagedResourcesToTerraform(struct?: FirebaseAppHostingBackendManagedResources): any;
export declare function firebaseAppHostingBackendManagedResourcesToHclTerraform(struct?: FirebaseAppHostingBackendManagedResources): any;
export declare class FirebaseAppHostingBackendManagedResourcesOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @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(): FirebaseAppHostingBackendManagedResources | undefined;
    set internalValue(value: FirebaseAppHostingBackendManagedResources | undefined);
    private _runService;
    get runService(): FirebaseAppHostingBackendManagedResourcesRunServiceList;
}
export declare class FirebaseAppHostingBackendManagedResourcesList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @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): FirebaseAppHostingBackendManagedResourcesOutputReference;
}
export interface FirebaseAppHostingBackendCodebase {
    /**
    * The resource name for the Developer Connect
    * ['gitRepositoryLink'](https://cloud.google.com/developer-connect/docs/api/reference/rest/v1/projects.locations.connections.gitRepositoryLinks)
    * connected to this backend, in the format:
    *
    * projects/{project}/locations/{location}/connections/{connection}/gitRepositoryLinks/{repositoryLink}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#repository FirebaseAppHostingBackend#repository}
    */
    readonly repository: string;
    /**
    * If 'repository' is provided, the directory relative to the root of the
    * repository to use as the root for the deployed web app.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#root_directory FirebaseAppHostingBackend#root_directory}
    */
    readonly rootDirectory?: string;
}
export declare function firebaseAppHostingBackendCodebaseToTerraform(struct?: FirebaseAppHostingBackendCodebaseOutputReference | FirebaseAppHostingBackendCodebase): any;
export declare function firebaseAppHostingBackendCodebaseToHclTerraform(struct?: FirebaseAppHostingBackendCodebaseOutputReference | FirebaseAppHostingBackendCodebase): any;
export declare class FirebaseAppHostingBackendCodebaseOutputReference 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(): FirebaseAppHostingBackendCodebase | undefined;
    set internalValue(value: FirebaseAppHostingBackendCodebase | undefined);
    private _repository?;
    get repository(): string;
    set repository(value: string);
    get repositoryInput(): string | undefined;
    private _rootDirectory?;
    get rootDirectory(): string;
    set rootDirectory(value: string);
    resetRootDirectory(): void;
    get rootDirectoryInput(): string | undefined;
}
export interface FirebaseAppHostingBackendTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#create FirebaseAppHostingBackend#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#delete FirebaseAppHostingBackend#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#update FirebaseAppHostingBackend#update}
    */
    readonly update?: string;
}
export declare function firebaseAppHostingBackendTimeoutsToTerraform(struct?: FirebaseAppHostingBackendTimeouts | cdktf.IResolvable): any;
export declare function firebaseAppHostingBackendTimeoutsToHclTerraform(struct?: FirebaseAppHostingBackendTimeouts | cdktf.IResolvable): any;
export declare class FirebaseAppHostingBackendTimeoutsOutputReference 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(): FirebaseAppHostingBackendTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: FirebaseAppHostingBackendTimeouts | 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.41.0/docs/resources/firebase_app_hosting_backend google_firebase_app_hosting_backend}
*/
export declare class FirebaseAppHostingBackend extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_firebase_app_hosting_backend";
    /**
    * Generates CDKTF code for importing a FirebaseAppHostingBackend 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 FirebaseAppHostingBackend to import
    * @param importFromId The id of the existing FirebaseAppHostingBackend that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/firebase_app_hosting_backend#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the FirebaseAppHostingBackend 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.41.0/docs/resources/firebase_app_hosting_backend google_firebase_app_hosting_backend} 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 FirebaseAppHostingBackendConfig
    */
    constructor(scope: Construct, id: string, config: FirebaseAppHostingBackendConfig);
    private _annotations?;
    get annotations(): {
        [key: string]: string;
    };
    set annotations(value: {
        [key: string]: string;
    });
    resetAnnotations(): void;
    get annotationsInput(): {
        [key: string]: string;
    } | undefined;
    private _appId?;
    get appId(): string;
    set appId(value: string);
    get appIdInput(): string | undefined;
    private _backendId?;
    get backendId(): string;
    set backendId(value: string);
    get backendIdInput(): string | undefined;
    get createTime(): string;
    get deleteTime(): string;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    resetDisplayName(): void;
    get displayNameInput(): string | undefined;
    private _effectiveAnnotations;
    get effectiveAnnotations(): cdktf.StringMap;
    private _effectiveLabels;
    get effectiveLabels(): cdktf.StringMap;
    private _environment?;
    get environment(): string;
    set environment(value: string);
    resetEnvironment(): void;
    get environmentInput(): string | undefined;
    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 _managedResources;
    get managedResources(): FirebaseAppHostingBackendManagedResourcesList;
    get name(): string;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    private _serviceAccount?;
    get serviceAccount(): string;
    set serviceAccount(value: string);
    get serviceAccountInput(): string | undefined;
    private _servingLocality?;
    get servingLocality(): string;
    set servingLocality(value: string);
    get servingLocalityInput(): string | undefined;
    private _terraformLabels;
    get terraformLabels(): cdktf.StringMap;
    get uid(): string;
    get updateTime(): string;
    get uri(): string;
    private _codebase;
    get codebase(): FirebaseAppHostingBackendCodebaseOutputReference;
    putCodebase(value: FirebaseAppHostingBackendCodebase): void;
    resetCodebase(): void;
    get codebaseInput(): FirebaseAppHostingBackendCodebase | undefined;
    private _timeouts;
    get timeouts(): FirebaseAppHostingBackendTimeoutsOutputReference;
    putTimeouts(value: FirebaseAppHostingBackendTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | FirebaseAppHostingBackendTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
