import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface NetworkBondConfig extends cdktf.TerraformMetaArguments {
    /**
    * If the bond is set to autostart.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#autostart NetworkBond#autostart}
    */
    readonly autostart?: boolean | cdktf.IResolvable;
    /**
    * Primary interface on the bond.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#bond_primary NetworkBond#bond_primary}
    */
    readonly bondPrimary?: string;
    /**
    * Comment in the bond.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#comments NetworkBond#comments}
    */
    readonly comments?: string;
    /**
    * Hash policy used on the bond.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#hash_policy NetworkBond#hash_policy}
    */
    readonly hashPolicy?: string;
    /**
    * List of interfaces on the bond.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#interfaces NetworkBond#interfaces}
    */
    readonly interfaces: string[];
    /**
    * Information of the ipv4 address.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#ipv4 NetworkBond#ipv4}
    */
    readonly ipv4?: NetworkBondIpv4 | cdktf.IResolvable;
    /**
    * The ipv4 gateway.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#ipv4_gateway NetworkBond#ipv4_gateway}
    */
    readonly ipv4Gateway?: string;
    /**
    * Information of the ipv6 address.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#ipv6 NetworkBond#ipv6}
    */
    readonly ipv6?: NetworkBondIpv6 | cdktf.IResolvable;
    /**
    * The ipv6 gateway.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#ipv6_gateway NetworkBond#ipv6_gateway}
    */
    readonly ipv6Gateway?: string;
    /**
    * Mode of the bond.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#mode NetworkBond#mode}
    */
    readonly mode: string;
    /**
    * The name of the bond.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#name NetworkBond#name}
    */
    readonly name?: string;
    /**
    * The node the bond is on.
    *
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#node NetworkBond#node}
    */
    readonly nodeAttribute: string;
}
export interface NetworkBondIpv4 {
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#address NetworkBond#address}
    */
    readonly address?: string;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#netmask NetworkBond#netmask}
    */
    readonly netmask?: string;
}
export declare function networkBondIpv4ToTerraform(struct?: NetworkBondIpv4 | cdktf.IResolvable): any;
export declare class NetworkBondIpv4OutputReference 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(): NetworkBondIpv4 | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkBondIpv4 | cdktf.IResolvable | undefined);
    private _address?;
    get address(): string;
    set address(value: string);
    resetAddress(): void;
    get addressInput(): string | undefined;
    private _netmask?;
    get netmask(): string;
    set netmask(value: string);
    resetNetmask(): void;
    get netmaskInput(): string | undefined;
}
export interface NetworkBondIpv6 {
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#address NetworkBond#address}
    */
    readonly address?: string;
    /**
    * Docs at Terraform Registry: {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond#netmask NetworkBond#netmask}
    */
    readonly netmask?: string;
}
export declare function networkBondIpv6ToTerraform(struct?: NetworkBondIpv6 | cdktf.IResolvable): any;
export declare class NetworkBondIpv6OutputReference 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(): NetworkBondIpv6 | cdktf.IResolvable | undefined;
    set internalValue(value: NetworkBondIpv6 | cdktf.IResolvable | undefined);
    private _address?;
    get address(): string;
    set address(value: string);
    resetAddress(): void;
    get addressInput(): string | undefined;
    private _netmask?;
    get netmask(): string;
    set netmask(value: string);
    resetNetmask(): void;
    get netmaskInput(): string | undefined;
}
/**
* Represents a {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond proxmox_network_bond}
*/
export declare class NetworkBond extends cdktf.TerraformResource {
    static readonly tfResourceType = "proxmox_network_bond";
    /**
    * Create a new {@link https://www.terraform.io/docs/providers/proxmox/r/network_bond proxmox_network_bond} 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 NetworkBondConfig
    */
    constructor(scope: Construct, id: string, config: NetworkBondConfig);
    get active(): cdktf.IResolvable;
    private _autostart?;
    get autostart(): boolean | cdktf.IResolvable;
    set autostart(value: boolean | cdktf.IResolvable);
    resetAutostart(): void;
    get autostartInput(): boolean | cdktf.IResolvable | undefined;
    private _bondPrimary?;
    get bondPrimary(): string;
    set bondPrimary(value: string);
    resetBondPrimary(): void;
    get bondPrimaryInput(): string | undefined;
    private _comments?;
    get comments(): string;
    set comments(value: string);
    resetComments(): void;
    get commentsInput(): string | undefined;
    private _hashPolicy?;
    get hashPolicy(): string;
    set hashPolicy(value: string);
    resetHashPolicy(): void;
    get hashPolicyInput(): string | undefined;
    get id(): string;
    private _interfaces?;
    get interfaces(): string[];
    set interfaces(value: string[]);
    get interfacesInput(): string[] | undefined;
    private _ipv4?;
    get ipv4(): NetworkBondIpv4 | cdktf.IResolvable;
    set ipv4(value: NetworkBondIpv4 | cdktf.IResolvable);
    resetIpv4(): void;
    get ipv4Input(): cdktf.IResolvable | NetworkBondIpv4 | undefined;
    private _ipv4Gateway?;
    get ipv4Gateway(): string;
    set ipv4Gateway(value: string);
    resetIpv4Gateway(): void;
    get ipv4GatewayInput(): string | undefined;
    private _ipv6?;
    get ipv6(): NetworkBondIpv6 | cdktf.IResolvable;
    set ipv6(value: NetworkBondIpv6 | cdktf.IResolvable);
    resetIpv6(): void;
    get ipv6Input(): cdktf.IResolvable | NetworkBondIpv6 | undefined;
    private _ipv6Gateway?;
    get ipv6Gateway(): string;
    set ipv6Gateway(value: string);
    resetIpv6Gateway(): void;
    get ipv6GatewayInput(): string | undefined;
    get miiMon(): string;
    private _mode?;
    get mode(): string;
    set mode(value: string);
    get modeInput(): string | undefined;
    private _name?;
    get name(): string;
    set name(value: string);
    resetName(): void;
    get nameInput(): string | undefined;
    private _node?;
    get nodeAttribute(): string;
    set nodeAttribute(value: string);
    get nodeAttributeInput(): string | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
}
