import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
import * as enums from "../types/enums";
/**
 * Resource Schema of AWS::EC2::IPAMPool Type
 */
export declare class IpamPool extends pulumi.CustomResource {
    /**
     * Get an existing IpamPool resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): IpamPool;
    /**
     * Returns true if the given object is an instance of IpamPool.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is IpamPool;
    /**
     * The address family of the address space in this pool. Either IPv4 or IPv6.
     */
    readonly addressFamily: pulumi.Output<string>;
    /**
     * The default netmask length for allocations made from this pool. This value is used when the netmask length of an allocation isn't specified.
     */
    readonly allocationDefaultNetmaskLength: pulumi.Output<number | undefined>;
    /**
     * The maximum allowed netmask length for allocations made from this pool.
     */
    readonly allocationMaxNetmaskLength: pulumi.Output<number | undefined>;
    /**
     * The minimum allowed netmask length for allocations made from this pool.
     */
    readonly allocationMinNetmaskLength: pulumi.Output<number | undefined>;
    /**
     * When specified, an allocation will not be allowed unless a resource has a matching set of tags.
     */
    readonly allocationResourceTags: pulumi.Output<outputs.ec2.IpamPoolTag[] | undefined>;
    /**
     * The Amazon Resource Name (ARN) of the IPAM Pool.
     */
    readonly arn: pulumi.Output<string>;
    /**
     * Determines what to do if IPAM discovers resources that haven't been assigned an allocation. If set to true, an allocation will be made automatically.
     */
    readonly autoImport: pulumi.Output<boolean | undefined>;
    /**
     * Limits which service in Amazon Web Services that the pool can be used in.
     */
    readonly awsService: pulumi.Output<enums.ec2.IpamPoolAwsService | undefined>;
    /**
     * The description of the IPAM pool.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * The Amazon Resource Name (ARN) of the IPAM this pool is a part of.
     */
    readonly ipamArn: pulumi.Output<string>;
    /**
     * Id of the IPAM Pool.
     */
    readonly ipamPoolId: pulumi.Output<string>;
    /**
     * The Amazon Resource Name (ARN) of the scope this pool is a part of.
     */
    readonly ipamScopeArn: pulumi.Output<string>;
    /**
     * The Id of the scope this pool is a part of.
     */
    readonly ipamScopeId: pulumi.Output<string>;
    /**
     * Determines whether this scope contains publicly routable space or space for a private network
     */
    readonly ipamScopeType: pulumi.Output<enums.ec2.IpamPoolIpamScopeType>;
    /**
     * The region of this pool. If not set, this will default to "None" which will disable non-custom allocations. If the locale has been specified for the source pool, this value must match.
     */
    readonly locale: pulumi.Output<string | undefined>;
    /**
     * The depth of this pool in the source pool hierarchy.
     */
    readonly poolDepth: pulumi.Output<number>;
    /**
     * A list of cidrs representing the address space available for allocation in this pool.
     */
    readonly provisionedCidrs: pulumi.Output<outputs.ec2.IpamPoolProvisionedCidr[] | undefined>;
    /**
     * The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Default is `byoip`.
     */
    readonly publicIpSource: pulumi.Output<enums.ec2.IpamPoolPublicIpSource | undefined>;
    /**
     * Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.
     */
    readonly publiclyAdvertisable: pulumi.Output<boolean | undefined>;
    /**
     * The Id of this pool's source. If set, all space provisioned in this pool must be free space provisioned in the parent pool.
     */
    readonly sourceIpamPoolId: pulumi.Output<string | undefined>;
    /**
     * The resource used to provision CIDRs to a resource planning pool.
     */
    readonly sourceResource: pulumi.Output<outputs.ec2.IpamPoolSourceResource | undefined>;
    /**
     * The state of this pool. This can be one of the following values: "create-in-progress", "create-complete", "modify-in-progress", "modify-complete", "delete-in-progress", or "delete-complete"
     */
    readonly state: pulumi.Output<enums.ec2.IpamPoolState>;
    /**
     * An explanation of how the pool arrived at it current state.
     */
    readonly stateMessage: pulumi.Output<string>;
    /**
     * An array of key-value pairs to apply to this resource.
     */
    readonly tags: pulumi.Output<outputs.Tag[] | undefined>;
    /**
     * Create a IpamPool resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: IpamPoolArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a IpamPool resource.
 */
export interface IpamPoolArgs {
    /**
     * The address family of the address space in this pool. Either IPv4 or IPv6.
     */
    addressFamily: pulumi.Input<string>;
    /**
     * The default netmask length for allocations made from this pool. This value is used when the netmask length of an allocation isn't specified.
     */
    allocationDefaultNetmaskLength?: pulumi.Input<number>;
    /**
     * The maximum allowed netmask length for allocations made from this pool.
     */
    allocationMaxNetmaskLength?: pulumi.Input<number>;
    /**
     * The minimum allowed netmask length for allocations made from this pool.
     */
    allocationMinNetmaskLength?: pulumi.Input<number>;
    /**
     * When specified, an allocation will not be allowed unless a resource has a matching set of tags.
     */
    allocationResourceTags?: pulumi.Input<pulumi.Input<inputs.ec2.IpamPoolTagArgs>[]>;
    /**
     * Determines what to do if IPAM discovers resources that haven't been assigned an allocation. If set to true, an allocation will be made automatically.
     */
    autoImport?: pulumi.Input<boolean>;
    /**
     * Limits which service in Amazon Web Services that the pool can be used in.
     */
    awsService?: pulumi.Input<enums.ec2.IpamPoolAwsService>;
    /**
     * The description of the IPAM pool.
     */
    description?: pulumi.Input<string>;
    /**
     * The Id of the scope this pool is a part of.
     */
    ipamScopeId: pulumi.Input<string>;
    /**
     * The region of this pool. If not set, this will default to "None" which will disable non-custom allocations. If the locale has been specified for the source pool, this value must match.
     */
    locale?: pulumi.Input<string>;
    /**
     * A list of cidrs representing the address space available for allocation in this pool.
     */
    provisionedCidrs?: pulumi.Input<pulumi.Input<inputs.ec2.IpamPoolProvisionedCidrArgs>[]>;
    /**
     * The IP address source for pools in the public scope. Only used for provisioning IP address CIDRs to pools in the public scope. Default is `byoip`.
     */
    publicIpSource?: pulumi.Input<enums.ec2.IpamPoolPublicIpSource>;
    /**
     * Determines whether or not address space from this pool is publicly advertised. Must be set if and only if the pool is IPv6.
     */
    publiclyAdvertisable?: pulumi.Input<boolean>;
    /**
     * The Id of this pool's source. If set, all space provisioned in this pool must be free space provisioned in the parent pool.
     */
    sourceIpamPoolId?: pulumi.Input<string>;
    /**
     * The resource used to provision CIDRs to a resource planning pool.
     */
    sourceResource?: pulumi.Input<inputs.ec2.IpamPoolSourceResourceArgs>;
    /**
     * An array of key-value pairs to apply to this resource.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.TagArgs>[]>;
}
