/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */
import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface DataplexEntryConfig extends cdktf.TerraformMetaArguments {
    /**
    * The entry group id of the entry group the entry will be created in.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#entry_group_id DataplexEntry#entry_group_id}
    */
    readonly entryGroupId?: string;
    /**
    * The entry id of the entry.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#entry_id DataplexEntry#entry_id}
    */
    readonly entryId?: string;
    /**
    * The relative resource name of the entry type that was used to create this entry, in the format projects/{project_number}/locations/{locationId}/entryTypes/{entryTypeId}.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#entry_type DataplexEntry#entry_type}
    */
    readonly entryType: string;
    /**
    * A name for the entry that can be referenced by an external system. For more information, see https://cloud.google.com/dataplex/docs/fully-qualified-names.
    * The maximum size of the field is 4000 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#fully_qualified_name DataplexEntry#fully_qualified_name}
    */
    readonly fullyQualifiedName?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#id DataplexEntry#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 where entry will be created.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#location DataplexEntry#location}
    */
    readonly location?: string;
    /**
    * The resource name of the parent entry, in the format projects/{project_number}/locations/{locationId}/entryGroups/{entryGroupId}/entries/{entryId}.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#parent_entry DataplexEntry#parent_entry}
    */
    readonly parentEntry?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#project DataplexEntry#project}
    */
    readonly project?: string;
    /**
    * aspects block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#aspects DataplexEntry#aspects}
    */
    readonly aspects?: DataplexEntryAspects[] | cdktf.IResolvable;
    /**
    * entry_source block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#entry_source DataplexEntry#entry_source}
    */
    readonly entrySource?: DataplexEntryEntrySource;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#timeouts DataplexEntry#timeouts}
    */
    readonly timeouts?: DataplexEntryTimeouts;
}
export interface DataplexEntryAspectsAspect {
    /**
    * The content of the aspect in JSON form, according to its aspect type schema. The maximum size of the field is 120KB (encoded as UTF-8).
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#data DataplexEntry#data}
    */
    readonly data: string;
}
export declare function dataplexEntryAspectsAspectToTerraform(struct?: DataplexEntryAspectsAspectOutputReference | DataplexEntryAspectsAspect): any;
export declare function dataplexEntryAspectsAspectToHclTerraform(struct?: DataplexEntryAspectsAspectOutputReference | DataplexEntryAspectsAspect): any;
export declare class DataplexEntryAspectsAspectOutputReference 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(): DataplexEntryAspectsAspect | undefined;
    set internalValue(value: DataplexEntryAspectsAspect | undefined);
    get aspectType(): string;
    get createTime(): string;
    private _data?;
    get data(): string;
    set data(value: string);
    get dataInput(): string | undefined;
    get path(): string;
    get updateTime(): string;
}
export interface DataplexEntryAspects {
    /**
    * Depending on how the aspect is attached to the entry, the format of the aspect key can be one of the following:
    *
    * If the aspect is attached directly to the entry: {project_number}.{locationId}.{aspectTypeId}
    * If the aspect is attached to an entry's path: {project_number}.{locationId}.{aspectTypeId}@{path}
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#aspect_key DataplexEntry#aspect_key}
    */
    readonly aspectKey: string;
    /**
    * aspect block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#aspect DataplexEntry#aspect}
    */
    readonly aspect: DataplexEntryAspectsAspect;
}
export declare function dataplexEntryAspectsToTerraform(struct?: DataplexEntryAspects | cdktf.IResolvable): any;
export declare function dataplexEntryAspectsToHclTerraform(struct?: DataplexEntryAspects | cdktf.IResolvable): any;
export declare class DataplexEntryAspectsOutputReference 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(): DataplexEntryAspects | cdktf.IResolvable | undefined;
    set internalValue(value: DataplexEntryAspects | cdktf.IResolvable | undefined);
    private _aspectKey?;
    get aspectKey(): string;
    set aspectKey(value: string);
    get aspectKeyInput(): string | undefined;
    private _aspect;
    get aspect(): DataplexEntryAspectsAspectOutputReference;
    putAspect(value: DataplexEntryAspectsAspect): void;
    get aspectInput(): DataplexEntryAspectsAspect | undefined;
}
export declare class DataplexEntryAspectsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: DataplexEntryAspects[] | 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): DataplexEntryAspectsOutputReference;
}
export interface DataplexEntryEntrySourceAncestors {
    /**
    * The name of the ancestor resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#name DataplexEntry#name}
    */
    readonly name?: string;
    /**
    * The type of the ancestor resource.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#type DataplexEntry#type}
    */
    readonly type?: string;
}
export declare function dataplexEntryEntrySourceAncestorsToTerraform(struct?: DataplexEntryEntrySourceAncestors | cdktf.IResolvable): any;
export declare function dataplexEntryEntrySourceAncestorsToHclTerraform(struct?: DataplexEntryEntrySourceAncestors | cdktf.IResolvable): any;
export declare class DataplexEntryEntrySourceAncestorsOutputReference 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(): DataplexEntryEntrySourceAncestors | cdktf.IResolvable | undefined;
    set internalValue(value: DataplexEntryEntrySourceAncestors | cdktf.IResolvable | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _type?;
    get type(): string;
    set type(value: string);
    resetType(): void;
    get typeInput(): string | undefined;
}
export declare class DataplexEntryEntrySourceAncestorsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: DataplexEntryEntrySourceAncestors[] | 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): DataplexEntryEntrySourceAncestorsOutputReference;
}
export interface DataplexEntryEntrySource {
    /**
    * The time when the resource was created in the source system.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#create_time DataplexEntry#create_time}
    */
    readonly createTime?: string;
    /**
    * A description of the data resource. Maximum length is 2,000 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#description DataplexEntry#description}
    */
    readonly description?: string;
    /**
    * A user-friendly display name. Maximum length is 500 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#display_name DataplexEntry#display_name}
    */
    readonly displayName?: string;
    /**
    * User-defined labels. The maximum size of keys and values is 128 characters each.
    * An object containing a list of "key": value pairs. Example: { "name": "wrench", "mass": "1.3kg", "count": "3" }.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#labels DataplexEntry#labels}
    */
    readonly labels?: {
        [key: string]: string;
    };
    /**
    * The platform containing the source system. Maximum length is 64 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#platform DataplexEntry#platform}
    */
    readonly platform?: string;
    /**
    * The name of the resource in the source system. Maximum length is 4,000 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#resource DataplexEntry#resource}
    */
    readonly resource?: string;
    /**
    * The name of the source system. Maximum length is 64 characters.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#system DataplexEntry#system}
    */
    readonly systemAttribute?: string;
    /**
    * The time when the resource was last updated in the source system.
    * If the entry exists in the system and its EntrySource has updateTime populated,
    * further updates to the EntrySource of the entry must provide incremental updates to its updateTime.
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#update_time DataplexEntry#update_time}
    */
    readonly updateTime?: string;
    /**
    * ancestors block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#ancestors DataplexEntry#ancestors}
    */
    readonly ancestors?: DataplexEntryEntrySourceAncestors[] | cdktf.IResolvable;
}
export declare function dataplexEntryEntrySourceToTerraform(struct?: DataplexEntryEntrySourceOutputReference | DataplexEntryEntrySource): any;
export declare function dataplexEntryEntrySourceToHclTerraform(struct?: DataplexEntryEntrySourceOutputReference | DataplexEntryEntrySource): any;
export declare class DataplexEntryEntrySourceOutputReference 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(): DataplexEntryEntrySource | undefined;
    set internalValue(value: DataplexEntryEntrySource | undefined);
    private _createTime?;
    get createTime(): string;
    set createTime(value: string);
    resetCreateTime(): void;
    get createTimeInput(): string | undefined;
    private _description?;
    get description(): string;
    set description(value: string);
    resetDescription(): void;
    get descriptionInput(): string | undefined;
    private _displayName?;
    get displayName(): string;
    set displayName(value: string);
    resetDisplayName(): void;
    get displayNameInput(): string | undefined;
    private _labels?;
    get labels(): {
        [key: string]: string;
    };
    set labels(value: {
        [key: string]: string;
    });
    resetLabels(): void;
    get labelsInput(): {
        [key: string]: string;
    } | undefined;
    get location(): string;
    private _platform?;
    get platform(): string;
    set platform(value: string);
    resetPlatform(): void;
    get platformInput(): string | undefined;
    private _resource?;
    get resource(): string;
    set resource(value: string);
    resetResource(): void;
    get resourceInput(): string | undefined;
    private _system?;
    get systemAttribute(): string;
    set systemAttribute(value: string);
    resetSystemAttribute(): void;
    get systemAttributeInput(): string | undefined;
    private _updateTime?;
    get updateTime(): string;
    set updateTime(value: string);
    resetUpdateTime(): void;
    get updateTimeInput(): string | undefined;
    private _ancestors;
    get ancestors(): DataplexEntryEntrySourceAncestorsList;
    putAncestors(value: DataplexEntryEntrySourceAncestors[] | cdktf.IResolvable): void;
    resetAncestors(): void;
    get ancestorsInput(): cdktf.IResolvable | DataplexEntryEntrySourceAncestors[] | undefined;
}
export interface DataplexEntryTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#create DataplexEntry#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#delete DataplexEntry#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#update DataplexEntry#update}
    */
    readonly update?: string;
}
export declare function dataplexEntryTimeoutsToTerraform(struct?: DataplexEntryTimeouts | cdktf.IResolvable): any;
export declare function dataplexEntryTimeoutsToHclTerraform(struct?: DataplexEntryTimeouts | cdktf.IResolvable): any;
export declare class DataplexEntryTimeoutsOutputReference 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(): DataplexEntryTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: DataplexEntryTimeouts | 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/dataplex_entry google_dataplex_entry}
*/
export declare class DataplexEntry extends cdktf.TerraformResource {
    static readonly tfResourceType = "google_dataplex_entry";
    /**
    * Generates CDKTF code for importing a DataplexEntry 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 DataplexEntry to import
    * @param importFromId The id of the existing DataplexEntry that should be imported. Refer to the {@link https://registry.terraform.io/providers/hashicorp/google/6.41.0/docs/resources/dataplex_entry#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the DataplexEntry 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/dataplex_entry google_dataplex_entry} 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 DataplexEntryConfig
    */
    constructor(scope: Construct, id: string, config: DataplexEntryConfig);
    get createTime(): string;
    private _entryGroupId?;
    get entryGroupId(): string;
    set entryGroupId(value: string);
    resetEntryGroupId(): void;
    get entryGroupIdInput(): string | undefined;
    private _entryId?;
    get entryId(): string;
    set entryId(value: string);
    resetEntryId(): void;
    get entryIdInput(): string | undefined;
    private _entryType?;
    get entryType(): string;
    set entryType(value: string);
    get entryTypeInput(): string | undefined;
    private _fullyQualifiedName?;
    get fullyQualifiedName(): string;
    set fullyQualifiedName(value: string);
    resetFullyQualifiedName(): void;
    get fullyQualifiedNameInput(): 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);
    resetLocation(): void;
    get locationInput(): string | undefined;
    get name(): string;
    private _parentEntry?;
    get parentEntry(): string;
    set parentEntry(value: string);
    resetParentEntry(): void;
    get parentEntryInput(): string | undefined;
    private _project?;
    get project(): string;
    set project(value: string);
    resetProject(): void;
    get projectInput(): string | undefined;
    get updateTime(): string;
    private _aspects;
    get aspects(): DataplexEntryAspectsList;
    putAspects(value: DataplexEntryAspects[] | cdktf.IResolvable): void;
    resetAspects(): void;
    get aspectsInput(): cdktf.IResolvable | DataplexEntryAspects[] | undefined;
    private _entrySource;
    get entrySource(): DataplexEntryEntrySourceOutputReference;
    putEntrySource(value: DataplexEntryEntrySource): void;
    resetEntrySource(): void;
    get entrySourceInput(): DataplexEntryEntrySource | undefined;
    private _timeouts;
    get timeouts(): DataplexEntryTimeoutsOutputReference;
    putTimeouts(value: DataplexEntryTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | DataplexEntryTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
