import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface MarketplacePublicationConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#compartment_id MarketplacePublication#compartment_id}
    */
    readonly compartmentId: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#defined_tags MarketplacePublication#defined_tags}
    */
    readonly definedTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#freeform_tags MarketplacePublication#freeform_tags}
    */
    readonly freeformTags?: {
        [key: string]: string;
    };
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#id MarketplacePublication#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/oracle/oci/6.18.0/docs/resources/marketplace_publication#is_agreement_acknowledged MarketplacePublication#is_agreement_acknowledged}
    */
    readonly isAgreementAcknowledged: boolean | cdktf.IResolvable;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#listing_type MarketplacePublication#listing_type}
    */
    readonly listingType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#long_description MarketplacePublication#long_description}
    */
    readonly longDescription?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#name MarketplacePublication#name}
    */
    readonly name: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#short_description MarketplacePublication#short_description}
    */
    readonly shortDescription: string;
    /**
    * package_details block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#package_details MarketplacePublication#package_details}
    */
    readonly packageDetails: MarketplacePublicationPackageDetails;
    /**
    * support_contacts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#support_contacts MarketplacePublication#support_contacts}
    */
    readonly supportContacts: MarketplacePublicationSupportContacts[] | cdktf.IResolvable;
    /**
    * timeouts block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#timeouts MarketplacePublication#timeouts}
    */
    readonly timeouts?: MarketplacePublicationTimeouts;
}
export interface MarketplacePublicationIcon {
}
export declare function marketplacePublicationIconToTerraform(struct?: MarketplacePublicationIcon): any;
export declare function marketplacePublicationIconToHclTerraform(struct?: MarketplacePublicationIcon): any;
export declare class MarketplacePublicationIconOutputReference 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(): MarketplacePublicationIcon | undefined;
    set internalValue(value: MarketplacePublicationIcon | undefined);
    get contentUrl(): string;
    get fileExtension(): string;
    get mimeType(): string;
    get name(): string;
}
export declare class MarketplacePublicationIconList 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): MarketplacePublicationIconOutputReference;
}
export interface MarketplacePublicationSupportedOperatingSystems {
}
export declare function marketplacePublicationSupportedOperatingSystemsToTerraform(struct?: MarketplacePublicationSupportedOperatingSystems): any;
export declare function marketplacePublicationSupportedOperatingSystemsToHclTerraform(struct?: MarketplacePublicationSupportedOperatingSystems): any;
export declare class MarketplacePublicationSupportedOperatingSystemsOutputReference 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(): MarketplacePublicationSupportedOperatingSystems | undefined;
    set internalValue(value: MarketplacePublicationSupportedOperatingSystems | undefined);
    get name(): string;
}
export declare class MarketplacePublicationSupportedOperatingSystemsList 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): MarketplacePublicationSupportedOperatingSystemsOutputReference;
}
export interface MarketplacePublicationPackageDetailsEula {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#eula_type MarketplacePublication#eula_type}
    */
    readonly eulaType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#license_text MarketplacePublication#license_text}
    */
    readonly licenseText?: string;
}
export declare function marketplacePublicationPackageDetailsEulaToTerraform(struct?: MarketplacePublicationPackageDetailsEula | cdktf.IResolvable): any;
export declare function marketplacePublicationPackageDetailsEulaToHclTerraform(struct?: MarketplacePublicationPackageDetailsEula | cdktf.IResolvable): any;
export declare class MarketplacePublicationPackageDetailsEulaOutputReference 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(): MarketplacePublicationPackageDetailsEula | cdktf.IResolvable | undefined;
    set internalValue(value: MarketplacePublicationPackageDetailsEula | cdktf.IResolvable | undefined);
    private _eulaType?;
    get eulaType(): string;
    set eulaType(value: string);
    get eulaTypeInput(): string | undefined;
    private _licenseText?;
    get licenseText(): string;
    set licenseText(value: string);
    resetLicenseText(): void;
    get licenseTextInput(): string | undefined;
}
export declare class MarketplacePublicationPackageDetailsEulaList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: MarketplacePublicationPackageDetailsEula[] | 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): MarketplacePublicationPackageDetailsEulaOutputReference;
}
export interface MarketplacePublicationPackageDetailsOperatingSystem {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#name MarketplacePublication#name}
    */
    readonly name?: string;
}
export declare function marketplacePublicationPackageDetailsOperatingSystemToTerraform(struct?: MarketplacePublicationPackageDetailsOperatingSystemOutputReference | MarketplacePublicationPackageDetailsOperatingSystem): any;
export declare function marketplacePublicationPackageDetailsOperatingSystemToHclTerraform(struct?: MarketplacePublicationPackageDetailsOperatingSystemOutputReference | MarketplacePublicationPackageDetailsOperatingSystem): any;
export declare class MarketplacePublicationPackageDetailsOperatingSystemOutputReference 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(): MarketplacePublicationPackageDetailsOperatingSystem | undefined;
    set internalValue(value: MarketplacePublicationPackageDetailsOperatingSystem | undefined);
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
}
export interface MarketplacePublicationPackageDetails {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#image_id MarketplacePublication#image_id}
    */
    readonly imageId?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#package_type MarketplacePublication#package_type}
    */
    readonly packageType: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#package_version MarketplacePublication#package_version}
    */
    readonly packageVersion: string;
    /**
    * eula block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#eula MarketplacePublication#eula}
    */
    readonly eula: MarketplacePublicationPackageDetailsEula[] | cdktf.IResolvable;
    /**
    * operating_system block
    *
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#operating_system MarketplacePublication#operating_system}
    */
    readonly operatingSystem: MarketplacePublicationPackageDetailsOperatingSystem;
}
export declare function marketplacePublicationPackageDetailsToTerraform(struct?: MarketplacePublicationPackageDetailsOutputReference | MarketplacePublicationPackageDetails): any;
export declare function marketplacePublicationPackageDetailsToHclTerraform(struct?: MarketplacePublicationPackageDetailsOutputReference | MarketplacePublicationPackageDetails): any;
export declare class MarketplacePublicationPackageDetailsOutputReference 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(): MarketplacePublicationPackageDetails | undefined;
    set internalValue(value: MarketplacePublicationPackageDetails | undefined);
    private _imageId?;
    get imageId(): string;
    set imageId(value: string);
    resetImageId(): void;
    get imageIdInput(): string | undefined;
    private _packageType?;
    get packageType(): string;
    set packageType(value: string);
    get packageTypeInput(): string | undefined;
    private _packageVersion?;
    get packageVersion(): string;
    set packageVersion(value: string);
    get packageVersionInput(): string | undefined;
    private _eula;
    get eula(): MarketplacePublicationPackageDetailsEulaList;
    putEula(value: MarketplacePublicationPackageDetailsEula[] | cdktf.IResolvable): void;
    get eulaInput(): cdktf.IResolvable | MarketplacePublicationPackageDetailsEula[] | undefined;
    private _operatingSystem;
    get operatingSystem(): MarketplacePublicationPackageDetailsOperatingSystemOutputReference;
    putOperatingSystem(value: MarketplacePublicationPackageDetailsOperatingSystem): void;
    get operatingSystemInput(): MarketplacePublicationPackageDetailsOperatingSystem | undefined;
}
export interface MarketplacePublicationSupportContacts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#email MarketplacePublication#email}
    */
    readonly email?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#name MarketplacePublication#name}
    */
    readonly name?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#phone MarketplacePublication#phone}
    */
    readonly phone?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#subject MarketplacePublication#subject}
    */
    readonly subject?: string;
}
export declare function marketplacePublicationSupportContactsToTerraform(struct?: MarketplacePublicationSupportContacts | cdktf.IResolvable): any;
export declare function marketplacePublicationSupportContactsToHclTerraform(struct?: MarketplacePublicationSupportContacts | cdktf.IResolvable): any;
export declare class MarketplacePublicationSupportContactsOutputReference 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(): MarketplacePublicationSupportContacts | cdktf.IResolvable | undefined;
    set internalValue(value: MarketplacePublicationSupportContacts | cdktf.IResolvable | undefined);
    private _email?;
    get email(): string;
    set email(value: string);
    resetEmail(): void;
    get emailInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _phone?;
    get phone(): string;
    set phone(value: string);
    resetPhone(): void;
    get phoneInput(): string | undefined;
    private _subject?;
    get subject(): string;
    set subject(value: string);
    resetSubject(): void;
    get subjectInput(): string | undefined;
}
export declare class MarketplacePublicationSupportContactsList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    internalValue?: MarketplacePublicationSupportContacts[] | 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): MarketplacePublicationSupportContactsOutputReference;
}
export interface MarketplacePublicationTimeouts {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#create MarketplacePublication#create}
    */
    readonly create?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#delete MarketplacePublication#delete}
    */
    readonly delete?: string;
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#update MarketplacePublication#update}
    */
    readonly update?: string;
}
export declare function marketplacePublicationTimeoutsToTerraform(struct?: MarketplacePublicationTimeouts | cdktf.IResolvable): any;
export declare function marketplacePublicationTimeoutsToHclTerraform(struct?: MarketplacePublicationTimeouts | cdktf.IResolvable): any;
export declare class MarketplacePublicationTimeoutsOutputReference 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(): MarketplacePublicationTimeouts | cdktf.IResolvable | undefined;
    set internalValue(value: MarketplacePublicationTimeouts | 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/oracle/oci/6.18.0/docs/resources/marketplace_publication oci_marketplace_publication}
*/
export declare class MarketplacePublication extends cdktf.TerraformResource {
    static readonly tfResourceType = "oci_marketplace_publication";
    /**
    * Generates CDKTF code for importing a MarketplacePublication 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 MarketplacePublication to import
    * @param importFromId The id of the existing MarketplacePublication that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/resources/marketplace_publication#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the MarketplacePublication 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/oracle/oci/6.18.0/docs/resources/marketplace_publication oci_marketplace_publication} 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 MarketplacePublicationConfig
    */
    constructor(scope: Construct, id: string, config: MarketplacePublicationConfig);
    private _compartmentId?;
    get compartmentId(): string;
    set compartmentId(value: string);
    get compartmentIdInput(): string | undefined;
    private _definedTags?;
    get definedTags(): {
        [key: string]: string;
    };
    set definedTags(value: {
        [key: string]: string;
    });
    resetDefinedTags(): void;
    get definedTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _freeformTags?;
    get freeformTags(): {
        [key: string]: string;
    };
    set freeformTags(value: {
        [key: string]: string;
    });
    resetFreeformTags(): void;
    get freeformTagsInput(): {
        [key: string]: string;
    } | undefined;
    private _icon;
    get icon(): MarketplacePublicationIconList;
    private _id?;
    get id(): string;
    set id(value: string);
    resetId(): void;
    get idInput(): string | undefined;
    private _isAgreementAcknowledged?;
    get isAgreementAcknowledged(): boolean | cdktf.IResolvable;
    set isAgreementAcknowledged(value: boolean | cdktf.IResolvable);
    get isAgreementAcknowledgedInput(): boolean | cdktf.IResolvable | undefined;
    private _listingType?;
    get listingType(): string;
    set listingType(value: string);
    get listingTypeInput(): string | undefined;
    private _longDescription?;
    get longDescription(): string;
    set longDescription(value: string);
    resetLongDescription(): void;
    get longDescriptionInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    get nameInput(): string | undefined;
    get packageType(): string;
    private _shortDescription?;
    get shortDescription(): string;
    set shortDescription(value: string);
    get shortDescriptionInput(): string | undefined;
    get state(): string;
    private _supportedOperatingSystems;
    get supportedOperatingSystems(): MarketplacePublicationSupportedOperatingSystemsList;
    private _systemTags;
    get systemTags(): cdktf.StringMap;
    get timeCreated(): string;
    private _packageDetails;
    get packageDetails(): MarketplacePublicationPackageDetailsOutputReference;
    putPackageDetails(value: MarketplacePublicationPackageDetails): void;
    get packageDetailsInput(): MarketplacePublicationPackageDetails | undefined;
    private _supportContacts;
    get supportContacts(): MarketplacePublicationSupportContactsList;
    putSupportContacts(value: MarketplacePublicationSupportContacts[] | cdktf.IResolvable): void;
    get supportContactsInput(): cdktf.IResolvable | MarketplacePublicationSupportContacts[] | undefined;
    private _timeouts;
    get timeouts(): MarketplacePublicationTimeoutsOutputReference;
    putTimeouts(value: MarketplacePublicationTimeouts): void;
    resetTimeouts(): void;
    get timeoutsInput(): cdktf.IResolvable | MarketplacePublicationTimeouts | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
