import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface DataProxmoxTemplateConfig extends cdktf.TerraformMetaArguments {
    /**
    * The identifier of the template.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/d/template#id DataProxmoxTemplate#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?: number;
    /**
    * The name of the template.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/d/template#name DataProxmoxTemplate#name}
    */
    readonly name?: string;
    /**
    * The node to create the template on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/d/template#node DataProxmoxTemplate#node}
    */
    readonly nodeAttribute: string;
}
export interface DataProxmoxTemplateAgent {
}
export declare function dataProxmoxTemplateAgentToTerraform(struct?: DataProxmoxTemplateAgent): any;
export declare class DataProxmoxTemplateAgentOutputReference 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(): DataProxmoxTemplateAgent | undefined;
    set internalValue(value: DataProxmoxTemplateAgent | undefined);
    get enabled(): cdktf.IResolvable;
    get type(): string;
    get useFstrim(): cdktf.IResolvable;
}
export interface DataProxmoxTemplateCloudInitDns {
}
export declare function dataProxmoxTemplateCloudInitDnsToTerraform(struct?: DataProxmoxTemplateCloudInitDns): any;
export declare class DataProxmoxTemplateCloudInitDnsOutputReference 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(): DataProxmoxTemplateCloudInitDns | undefined;
    set internalValue(value: DataProxmoxTemplateCloudInitDns | undefined);
    get domain(): string;
    get nameserver(): string;
}
export interface DataProxmoxTemplateCloudInitIpV4 {
}
export declare function dataProxmoxTemplateCloudInitIpV4ToTerraform(struct?: DataProxmoxTemplateCloudInitIpV4): any;
export declare class DataProxmoxTemplateCloudInitIpV4OutputReference 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(): DataProxmoxTemplateCloudInitIpV4 | undefined;
    set internalValue(value: DataProxmoxTemplateCloudInitIpV4 | undefined);
    get address(): string;
    get dhcp(): cdktf.IResolvable;
    get gateway(): string;
    get netmask(): string;
}
export interface DataProxmoxTemplateCloudInitIpV6 {
}
export declare function dataProxmoxTemplateCloudInitIpV6ToTerraform(struct?: DataProxmoxTemplateCloudInitIpV6): any;
export declare class DataProxmoxTemplateCloudInitIpV6OutputReference 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(): DataProxmoxTemplateCloudInitIpV6 | undefined;
    set internalValue(value: DataProxmoxTemplateCloudInitIpV6 | undefined);
    get address(): string;
    get dhcp(): cdktf.IResolvable;
    get gateway(): string;
    get netmask(): string;
}
export interface DataProxmoxTemplateCloudInitIp {
}
export declare function dataProxmoxTemplateCloudInitIpToTerraform(struct?: DataProxmoxTemplateCloudInitIp): any;
export declare class DataProxmoxTemplateCloudInitIpOutputReference 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(): DataProxmoxTemplateCloudInitIp | undefined;
    set internalValue(value: DataProxmoxTemplateCloudInitIp | undefined);
    get position(): number;
    private _v4;
    get v4(): DataProxmoxTemplateCloudInitIpV4OutputReference;
    private _v6;
    get v6(): DataProxmoxTemplateCloudInitIpV6OutputReference;
}
export declare class DataProxmoxTemplateCloudInitIpList 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): DataProxmoxTemplateCloudInitIpOutputReference;
}
export interface DataProxmoxTemplateCloudInitUser {
}
export declare function dataProxmoxTemplateCloudInitUserToTerraform(struct?: DataProxmoxTemplateCloudInitUser): any;
export declare class DataProxmoxTemplateCloudInitUserOutputReference 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(): DataProxmoxTemplateCloudInitUser | undefined;
    set internalValue(value: DataProxmoxTemplateCloudInitUser | undefined);
    get name(): string;
    get password(): string;
    get publicKeys(): string[];
}
export interface DataProxmoxTemplateCloudInit {
}
export declare function dataProxmoxTemplateCloudInitToTerraform(struct?: DataProxmoxTemplateCloudInit): any;
export declare class DataProxmoxTemplateCloudInitOutputReference 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(): DataProxmoxTemplateCloudInit | undefined;
    set internalValue(value: DataProxmoxTemplateCloudInit | undefined);
    private _dns;
    get dns(): DataProxmoxTemplateCloudInitDnsOutputReference;
    private _ip;
    get ip(): DataProxmoxTemplateCloudInitIpList;
    private _user;
    get user(): DataProxmoxTemplateCloudInitUserOutputReference;
}
export interface DataProxmoxTemplateCpu {
}
export declare function dataProxmoxTemplateCpuToTerraform(struct?: DataProxmoxTemplateCpu): any;
export declare class DataProxmoxTemplateCpuOutputReference 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(): DataProxmoxTemplateCpu | undefined;
    set internalValue(value: DataProxmoxTemplateCpu | undefined);
    get architecture(): string;
    get cores(): number;
    get cpuUnits(): number;
    get emulatedType(): string;
    get sockets(): number;
}
export interface DataProxmoxTemplateDisksSpeedLimits {
}
export declare function dataProxmoxTemplateDisksSpeedLimitsToTerraform(struct?: DataProxmoxTemplateDisksSpeedLimits): any;
export declare class DataProxmoxTemplateDisksSpeedLimitsOutputReference 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(): DataProxmoxTemplateDisksSpeedLimits | undefined;
    set internalValue(value: DataProxmoxTemplateDisksSpeedLimits | undefined);
    get read(): number;
    get readBurstable(): number;
    get write(): number;
    get writeBurstable(): number;
}
export interface DataProxmoxTemplateDisks {
}
export declare function dataProxmoxTemplateDisksToTerraform(struct?: DataProxmoxTemplateDisks): any;
export declare class DataProxmoxTemplateDisksOutputReference 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(): DataProxmoxTemplateDisks | undefined;
    set internalValue(value: DataProxmoxTemplateDisks | undefined);
    get discard(): cdktf.IResolvable;
    get fileFormat(): string;
    get interfaceType(): string;
    get name(): string;
    get position(): number;
    get size(): number;
    private _speedLimits;
    get speedLimits(): DataProxmoxTemplateDisksSpeedLimitsOutputReference;
    get ssdEmulation(): cdktf.IResolvable;
    get storage(): string;
    get useIothread(): cdktf.IResolvable;
}
export declare class DataProxmoxTemplateDisksList 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): DataProxmoxTemplateDisksOutputReference;
}
export interface DataProxmoxTemplateMemory {
}
export declare function dataProxmoxTemplateMemoryToTerraform(struct?: DataProxmoxTemplateMemory): any;
export declare class DataProxmoxTemplateMemoryOutputReference 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(): DataProxmoxTemplateMemory | undefined;
    set internalValue(value: DataProxmoxTemplateMemory | undefined);
    get dedicated(): number;
    get floating(): number;
    get shared(): number;
}
export interface DataProxmoxTemplateNetworkInterfaces {
}
export declare function dataProxmoxTemplateNetworkInterfacesToTerraform(struct?: DataProxmoxTemplateNetworkInterfaces): any;
export declare class DataProxmoxTemplateNetworkInterfacesOutputReference 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(): DataProxmoxTemplateNetworkInterfaces | undefined;
    set internalValue(value: DataProxmoxTemplateNetworkInterfaces | undefined);
    get bridge(): string;
    get enabled(): cdktf.IResolvable;
    get macAddress(): string;
    get model(): string;
    get mtu(): number;
    get position(): number;
    get rateLimit(): number;
    get useFirewall(): cdktf.IResolvable;
    get vlan(): number;
}
export declare class DataProxmoxTemplateNetworkInterfacesList 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): DataProxmoxTemplateNetworkInterfacesOutputReference;
}
export interface DataProxmoxTemplatePciDevices {
}
export declare function dataProxmoxTemplatePciDevicesToTerraform(struct?: DataProxmoxTemplatePciDevices): any;
export declare class DataProxmoxTemplatePciDevicesOutputReference 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(): DataProxmoxTemplatePciDevices | undefined;
    set internalValue(value: DataProxmoxTemplatePciDevices | undefined);
    get id(): string;
    get mdev(): string;
    get name(): string;
    get pcie(): cdktf.IResolvable;
    get primaryGpu(): cdktf.IResolvable;
    get romFile(): string;
    get rombar(): cdktf.IResolvable;
}
export declare class DataProxmoxTemplatePciDevicesList 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): DataProxmoxTemplatePciDevicesOutputReference;
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/proxmox/d/template proxmox_template}
*/
export declare class DataProxmoxTemplate extends cdktf.TerraformDataSource {
    static readonly tfResourceType = "proxmox_template";
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/proxmox/d/template proxmox_template} Data Source
    *
    * @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 DataProxmoxTemplateConfig
    */
    constructor(scope: Construct, id: string, config: DataProxmoxTemplateConfig);
    private _agent;
    get agent(): DataProxmoxTemplateAgentOutputReference;
    get bios(): string;
    private _cloudInit;
    get cloudInit(): DataProxmoxTemplateCloudInitOutputReference;
    private _cpu;
    get cpu(): DataProxmoxTemplateCpuOutputReference;
    get description(): string;
    private _disks;
    get disks(): DataProxmoxTemplateDisksList;
    private _id?;
    get id(): number;
    set id(value: number);
    resetId(): void;
    get idInput(): number | undefined;
    get keyboardLayout(): string;
    get kvmArguments(): string;
    get machineType(): string;
    private _memory;
    get memory(): DataProxmoxTemplateMemoryOutputReference;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _networkInterfaces;
    get networkInterfaces(): DataProxmoxTemplateNetworkInterfacesList;
    private _node?;
    get nodeAttribute(): string;
    set nodeAttribute(value: string);
    get nodeAttributeInput(): string | undefined;
    private _pciDevices;
    get pciDevices(): DataProxmoxTemplatePciDevicesList;
    get resourcePool(): string;
    get startOnNodeBoot(): cdktf.IResolvable;
    get tags(): string[];
    get type(): string;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
}
