import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Fabric V4 API compatible resource allows creation and management of [Equinix Fabric Service Token](https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm).
 *
 * Additional documentation:
 * * Getting Started: https://docs.equinix.com/en-us/Content/Interconnection/Fabric/service%20tokens/Fabric-Service-Tokens.htm
 * * API: https://docs.equinix.com/en-us/Content/KnowledgeCenter/Fabric/GettingStarted/Integrating-with-Fabric-V4-APIs/ConnectUsingServiceToken.htm
 *
 * ## Example Usage
 *
 * Aside Port Service Token
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const test = new equinix.fabric.ServiceToken("test", {
 *     description: "Aside COLO Service Token",
 *     expirationDateTime: "2025-01-18T06:43:49.981Z",
 *     notifications: [{
 *         emails: [
 *             "example@equinix.com",
 *             "test1@equinix.com",
 *         ],
 *         type: "ALL",
 *     }],
 *     serviceTokenConnections: [{
 *         aSides: [{
 *             accessPointSelectors: [{
 *                 linkProtocol: {
 *                     type: "DOT1Q",
 *                     vlanTag: 2987,
 *                 },
 *                 port: {
 *                     uuid: "<port_uuid>",
 *                 },
 *                 type: "COLO",
 *             }],
 *         }],
 *         bandwidthLimit: 1000,
 *         type: "EVPL_VC",
 *     }],
 *     type: "VC_TOKEN",
 * });
 * ```
 *
 * Zside Port Service Token
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const test = new equinix.fabric.ServiceToken("test", {
 *     description: "Zside COLO Service Token",
 *     expirationDateTime: "2025-01-18T06:43:49.981Z",
 *     notifications: [{
 *         emails: [
 *             "example@equinix.com",
 *             "test1@equinix.com",
 *         ],
 *         type: "ALL",
 *     }],
 *     serviceTokenConnections: [{
 *         supportedBandwidths: [
 *             50,
 *             200,
 *             10000,
 *         ],
 *         type: "EVPL_VC",
 *         zSides: [{
 *             accessPointSelectors: [{
 *                 linkProtocol: {
 *                     type: "DOT1Q",
 *                     vlanTag: 2087,
 *                 },
 *                 port: {
 *                     uuid: "<port_uuid>",
 *                 },
 *                 type: "COLO",
 *             }],
 *         }],
 *     }],
 *     type: "VC_TOKEN",
 * });
 * ```
 *
 * Zside Network Service Token
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const test = new equinix.fabric.ServiceToken("test", {
 *     description: "Zside Network Service Token",
 *     expirationDateTime: "2025-01-18T06:43:49.986Z",
 *     notifications: [{
 *         emails: ["example@equinix.com"],
 *         type: "ALL",
 *     }],
 *     serviceTokenConnections: [{
 *         supportedBandwidths: [
 *             50,
 *             200,
 *             10000,
 *         ],
 *         type: "EVPL_VC",
 *         zSides: [{
 *             accessPointSelectors: [{
 *                 network: {
 *                     uuid: "<network_uuid>",
 *                 },
 *                 type: "NETWORK",
 *             }],
 *         }],
 *     }],
 *     type: "VC_TOKEN",
 * });
 * ```
 *
 * Zside Virtual Device Service Token
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as equinix from "@equinix-labs/pulumi-equinix";
 *
 * const test = new equinix.fabric.ServiceToken("test", {
 *     description: "Zside VD Service Token",
 *     expirationDateTime: "2025-01-18T06:43:49.986Z",
 *     notifications: [{
 *         emails: ["example@equinix.com"],
 *         type: "ALL",
 *     }],
 *     serviceTokenConnections: [{
 *         supportedBandwidths: [
 *             50,
 *             200,
 *             10000,
 *         ],
 *         type: "EVPL_VC",
 *         zSides: [{
 *             accessPointSelectors: [{
 *                 "interface": {
 *                     type: "NETWORK",
 *                 },
 *                 type: "VD",
 *                 virtualDevice: {
 *                     type: "EDGE",
 *                     uuid: "<device_uuid>",
 *                 },
 *             }],
 *         }],
 *     }],
 *     type: "VC_TOKEN",
 * });
 * ```
 */
export declare class ServiceToken extends pulumi.CustomResource {
    /**
     * Get an existing ServiceToken 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?: ServiceTokenState, opts?: pulumi.CustomResourceOptions): ServiceToken;
    /**
     * Returns true if the given object is an instance of ServiceToken.  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 ServiceToken;
    /**
     * Customer account information that is associated with this service token
     */
    readonly accounts: pulumi.Output<outputs.fabric.ServiceTokenAccount[]>;
    /**
     * Captures connection lifecycle change information
     */
    readonly changeLogs: pulumi.Output<outputs.fabric.ServiceTokenChangeLog[]>;
    /**
     * Optional Description to the Service Token you will be creating
     */
    readonly description: pulumi.Output<string>;
    /**
     * Expiration date and time of the service token; 2020-11-06T07:00:00Z
     */
    readonly expirationDateTime: pulumi.Output<string>;
    /**
     * An absolute URL that is the subject of the link's context.
     */
    readonly href: pulumi.Output<string>;
    /**
     * Information about token side; ASIDE, ZSIDE
     */
    readonly issuerSide: pulumi.Output<string>;
    /**
     * Name of the Service Token
     */
    readonly name: pulumi.Output<string>;
    /**
     * Preferences for notifications on Service Token configuration or status changes
     */
    readonly notifications: pulumi.Output<outputs.fabric.ServiceTokenNotification[]>;
    /**
     * Project information
     */
    readonly project: pulumi.Output<outputs.fabric.ServiceTokenProject>;
    /**
     * Service Token Connection Type Information
     */
    readonly serviceTokenConnections: pulumi.Output<outputs.fabric.ServiceTokenServiceTokenConnection[]>;
    /**
     * Service token state; ACTIVE, INACTIVE, EXPIRED, DELETED
     */
    readonly state: pulumi.Output<string>;
    /**
     * Service Token Type; VC*TOKEN,EPL*TOKEN
     */
    readonly type: pulumi.Output<string>;
    /**
     * Equinix-assigned service token identifier
     */
    readonly uuid: pulumi.Output<string>;
    /**
     * Create a ServiceToken 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: ServiceTokenArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering ServiceToken resources.
 */
export interface ServiceTokenState {
    /**
     * Customer account information that is associated with this service token
     */
    accounts?: pulumi.Input<pulumi.Input<inputs.fabric.ServiceTokenAccount>[]>;
    /**
     * Captures connection lifecycle change information
     */
    changeLogs?: pulumi.Input<pulumi.Input<inputs.fabric.ServiceTokenChangeLog>[]>;
    /**
     * Optional Description to the Service Token you will be creating
     */
    description?: pulumi.Input<string>;
    /**
     * Expiration date and time of the service token; 2020-11-06T07:00:00Z
     */
    expirationDateTime?: pulumi.Input<string>;
    /**
     * An absolute URL that is the subject of the link's context.
     */
    href?: pulumi.Input<string>;
    /**
     * Information about token side; ASIDE, ZSIDE
     */
    issuerSide?: pulumi.Input<string>;
    /**
     * Name of the Service Token
     */
    name?: pulumi.Input<string>;
    /**
     * Preferences for notifications on Service Token configuration or status changes
     */
    notifications?: pulumi.Input<pulumi.Input<inputs.fabric.ServiceTokenNotification>[]>;
    /**
     * Project information
     */
    project?: pulumi.Input<inputs.fabric.ServiceTokenProject>;
    /**
     * Service Token Connection Type Information
     */
    serviceTokenConnections?: pulumi.Input<pulumi.Input<inputs.fabric.ServiceTokenServiceTokenConnection>[]>;
    /**
     * Service token state; ACTIVE, INACTIVE, EXPIRED, DELETED
     */
    state?: pulumi.Input<string>;
    /**
     * Service Token Type; VC*TOKEN,EPL*TOKEN
     */
    type?: pulumi.Input<string>;
    /**
     * Equinix-assigned service token identifier
     */
    uuid?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a ServiceToken resource.
 */
export interface ServiceTokenArgs {
    /**
     * Optional Description to the Service Token you will be creating
     */
    description?: pulumi.Input<string>;
    /**
     * Expiration date and time of the service token; 2020-11-06T07:00:00Z
     */
    expirationDateTime: pulumi.Input<string>;
    /**
     * Name of the Service Token
     */
    name?: pulumi.Input<string>;
    /**
     * Preferences for notifications on Service Token configuration or status changes
     */
    notifications: pulumi.Input<pulumi.Input<inputs.fabric.ServiceTokenNotification>[]>;
    /**
     * Project information
     */
    project?: pulumi.Input<inputs.fabric.ServiceTokenProject>;
    /**
     * Service Token Connection Type Information
     */
    serviceTokenConnections: pulumi.Input<pulumi.Input<inputs.fabric.ServiceTokenServiceTokenConnection>[]>;
    /**
     * Service Token Type; VC*TOKEN,EPL*TOKEN
     */
    type: pulumi.Input<string>;
}
