import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Creates and manages Scaleway Interlink Links.
 *
 * A link is a logical Interlink session created within a PoP, representing the connection between your infrastructure and Scaleway. Links can be hosted (facilitated by a partner's shared connection) or self-hosted (using your own dedicated physical connection).
 *
 * For more information, see [the Interlink documentation](https://www.scaleway.com/en/docs/network/interlink/) and [API documentation](https://www.scaleway.com/en/developers/api/interlink/).
 *
 * ## Example Usage
 *
 * ### Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const pop = scaleway.interlink.getPop({
 *     name: "Telehouse TH2",
 * });
 * const partner = scaleway.interlink.getPartner({
 *     name: "FranceIX",
 * });
 * const main = new scaleway.interlink.Link("main", {
 *     name: "my-hosted-link",
 *     popId: pop.then(pop => pop.id),
 *     partnerId: partner.then(partner => partner.id),
 *     bandwidthMbps: 50,
 * });
 * ```
 *
 * ### With VPC
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const pop = scaleway.interlink.getPop({
 *     name: "Telehouse TH2",
 * });
 * const partner = scaleway.interlink.getPartner({
 *     name: "FranceIX",
 * });
 * const vpc = new scaleway.network.Vpc("vpc", {name: "my-vpc"});
 * const main = new scaleway.interlink.Link("main", {
 *     name: "my-hosted-link",
 *     popId: pop.then(pop => pop.id),
 *     partnerId: partner.then(partner => partner.id),
 *     bandwidthMbps: 50,
 *     vpcId: vpc.id,
 * });
 * ```
 *
 * ## Import
 *
 * Interlink Links can be imported using `{region}/{id}`, e.g.
 *
 * ```sh
 * $ pulumi import scaleway:interlink/link:Link main fr-par/11111111-1111-1111-1111-111111111111
 * ```
 */
export declare class Link extends pulumi.CustomResource {
    /**
     * Get an existing Link 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 state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: LinkState, opts?: pulumi.CustomResourceOptions): Link;
    /**
     * Returns true if the given object is an instance of Link.  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 Link;
    /**
     * Desired bandwidth for the link. Must be compatible with available link bandwidths and remaining bandwidth capacity of the connection.
     */
    readonly bandwidthMbps: pulumi.Output<number>;
    /**
     * Status of the link's BGP IPv4 session.
     */
    readonly bgpV4Status: pulumi.Output<string>;
    /**
     * Status of the link's BGP IPv6 session.
     */
    readonly bgpV6Status: pulumi.Output<string>;
    /**
     * If set, creates a self-hosted link using this dedicated physical connection. Conflicts with `partnerId`.
     */
    readonly connectionId: pulumi.Output<string | undefined>;
    /**
     * Creation date of the link (RFC 3339 format).
     */
    readonly createdAt: pulumi.Output<string>;
    /**
     * Defines whether route propagation is enabled or not. Defaults to `false`.
     */
    readonly enableRoutePropagation: pulumi.Output<boolean | undefined>;
    /**
     * Name of the link. If not provided, a name will be randomly generated.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Organization ID.
     */
    readonly organizationId: pulumi.Output<string>;
    /**
     * Used to identify a link from a user or partner's point of view.
     */
    readonly pairingKey: pulumi.Output<string>;
    /**
     * If set, creates a hosted link on a partner's connection. Specify the ID of the chosen partner, who already has a shared connection with available bandwidth. Conflicts with `connectionId`.
     */
    readonly partnerId: pulumi.Output<string | undefined>;
    /**
     * For self-hosted links, the peer AS Number to establish BGP session. Required when `connectionId` is set.
     */
    readonly peerAsn: pulumi.Output<number>;
    /**
     * BGP configuration on peer's side (on-premises or other hosting provider). Contains `asn`, `ipv4`, `ipv6`.
     */
    readonly peerBgpConfigs: pulumi.Output<outputs.interlink.LinkPeerBgpConfig[]>;
    /**
     * PoP (location) where the link will be created.
     */
    readonly popId: pulumi.Output<string>;
    /**
     * `projectId`) The ID of the project the link is associated with.
     */
    readonly projectId: pulumi.Output<string>;
    /**
     * `region`) The region in which the link should be created.
     */
    readonly region: pulumi.Output<string | undefined>;
    /**
     * If set, attaches this routing policy containing IPv4 prefixes to the link. A BGP IPv4 session will be created.
     */
    readonly routingPolicyV4Id: pulumi.Output<string>;
    /**
     * If set, attaches this routing policy containing IPv6 prefixes to the link. A BGP IPv6 session will be created.
     */
    readonly routingPolicyV6Id: pulumi.Output<string>;
    /**
     * BGP configuration on Scaleway's side. Contains `asn`, `ipv4`, `ipv6`.
     */
    readonly scwBgpConfigs: pulumi.Output<outputs.interlink.LinkScwBgpConfig[]>;
    /**
     * Status of the link.
     */
    readonly status: pulumi.Output<string>;
    /**
     * List of tags to apply to the link.
     */
    readonly tags: pulumi.Output<string[] | undefined>;
    /**
     * Last modification date of the link (RFC 3339 format).
     */
    readonly updatedAt: pulumi.Output<string>;
    /**
     * For self-hosted links only, the VLAN ID. If the VLAN is not available (already taken or out of range), an error is returned.
     */
    readonly vlan: pulumi.Output<number>;
    /**
     * ID of the Scaleway VPC to attach to the link.
     */
    readonly vpcId: pulumi.Output<string | undefined>;
    /**
     * Create a Link 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: LinkArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Link resources.
 */
export interface LinkState {
    /**
     * Desired bandwidth for the link. Must be compatible with available link bandwidths and remaining bandwidth capacity of the connection.
     */
    bandwidthMbps?: pulumi.Input<number | undefined>;
    /**
     * Status of the link's BGP IPv4 session.
     */
    bgpV4Status?: pulumi.Input<string | undefined>;
    /**
     * Status of the link's BGP IPv6 session.
     */
    bgpV6Status?: pulumi.Input<string | undefined>;
    /**
     * If set, creates a self-hosted link using this dedicated physical connection. Conflicts with `partnerId`.
     */
    connectionId?: pulumi.Input<string | undefined>;
    /**
     * Creation date of the link (RFC 3339 format).
     */
    createdAt?: pulumi.Input<string | undefined>;
    /**
     * Defines whether route propagation is enabled or not. Defaults to `false`.
     */
    enableRoutePropagation?: pulumi.Input<boolean | undefined>;
    /**
     * Name of the link. If not provided, a name will be randomly generated.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Organization ID.
     */
    organizationId?: pulumi.Input<string | undefined>;
    /**
     * Used to identify a link from a user or partner's point of view.
     */
    pairingKey?: pulumi.Input<string | undefined>;
    /**
     * If set, creates a hosted link on a partner's connection. Specify the ID of the chosen partner, who already has a shared connection with available bandwidth. Conflicts with `connectionId`.
     */
    partnerId?: pulumi.Input<string | undefined>;
    /**
     * For self-hosted links, the peer AS Number to establish BGP session. Required when `connectionId` is set.
     */
    peerAsn?: pulumi.Input<number | undefined>;
    /**
     * BGP configuration on peer's side (on-premises or other hosting provider). Contains `asn`, `ipv4`, `ipv6`.
     */
    peerBgpConfigs?: pulumi.Input<pulumi.Input<inputs.interlink.LinkPeerBgpConfig>[] | undefined>;
    /**
     * PoP (location) where the link will be created.
     */
    popId?: pulumi.Input<string | undefined>;
    /**
     * `projectId`) The ID of the project the link is associated with.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * `region`) The region in which the link should be created.
     */
    region?: pulumi.Input<string | undefined>;
    /**
     * If set, attaches this routing policy containing IPv4 prefixes to the link. A BGP IPv4 session will be created.
     */
    routingPolicyV4Id?: pulumi.Input<string | undefined>;
    /**
     * If set, attaches this routing policy containing IPv6 prefixes to the link. A BGP IPv6 session will be created.
     */
    routingPolicyV6Id?: pulumi.Input<string | undefined>;
    /**
     * BGP configuration on Scaleway's side. Contains `asn`, `ipv4`, `ipv6`.
     */
    scwBgpConfigs?: pulumi.Input<pulumi.Input<inputs.interlink.LinkScwBgpConfig>[] | undefined>;
    /**
     * Status of the link.
     */
    status?: pulumi.Input<string | undefined>;
    /**
     * List of tags to apply to the link.
     */
    tags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Last modification date of the link (RFC 3339 format).
     */
    updatedAt?: pulumi.Input<string | undefined>;
    /**
     * For self-hosted links only, the VLAN ID. If the VLAN is not available (already taken or out of range), an error is returned.
     */
    vlan?: pulumi.Input<number | undefined>;
    /**
     * ID of the Scaleway VPC to attach to the link.
     */
    vpcId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Link resource.
 */
export interface LinkArgs {
    /**
     * Desired bandwidth for the link. Must be compatible with available link bandwidths and remaining bandwidth capacity of the connection.
     */
    bandwidthMbps: pulumi.Input<number>;
    /**
     * If set, creates a self-hosted link using this dedicated physical connection. Conflicts with `partnerId`.
     */
    connectionId?: pulumi.Input<string | undefined>;
    /**
     * Defines whether route propagation is enabled or not. Defaults to `false`.
     */
    enableRoutePropagation?: pulumi.Input<boolean | undefined>;
    /**
     * Name of the link. If not provided, a name will be randomly generated.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * If set, creates a hosted link on a partner's connection. Specify the ID of the chosen partner, who already has a shared connection with available bandwidth. Conflicts with `connectionId`.
     */
    partnerId?: pulumi.Input<string | undefined>;
    /**
     * For self-hosted links, the peer AS Number to establish BGP session. Required when `connectionId` is set.
     */
    peerAsn?: pulumi.Input<number | undefined>;
    /**
     * PoP (location) where the link will be created.
     */
    popId: pulumi.Input<string>;
    /**
     * `projectId`) The ID of the project the link is associated with.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * `region`) The region in which the link should be created.
     */
    region?: pulumi.Input<string | undefined>;
    /**
     * If set, attaches this routing policy containing IPv4 prefixes to the link. A BGP IPv4 session will be created.
     */
    routingPolicyV4Id?: pulumi.Input<string | undefined>;
    /**
     * If set, attaches this routing policy containing IPv6 prefixes to the link. A BGP IPv6 session will be created.
     */
    routingPolicyV6Id?: pulumi.Input<string | undefined>;
    /**
     * List of tags to apply to the link.
     */
    tags?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * For self-hosted links only, the VLAN ID. If the VLAN is not available (already taken or out of range), an error is returned.
     */
    vlan?: pulumi.Input<number | undefined>;
    /**
     * ID of the Scaleway VPC to attach to the link.
     */
    vpcId?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=link.d.ts.map