import * as pulumi from "@pulumi/pulumi";
/**
 * Resource for creating a Harness Infrastructure.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as harness from "@lbrlabs/pulumi-harness";
 *
 * const example = new harness.platform.Infrastructure("example", {
 *     deploymentType: "Kubernetes",
 *     envId: "environmentIdentifier",
 *     identifier: "identifier",
 *     orgId: "orgIdentifer",
 *     projectId: "projectIdentifier",
 *     type: "KubernetesDirect",
 *     yaml: `  infrastructureDefinition:
 *    name: name
 *    identifier: identifier
 *    description: ""
 *    tags:
 *      asda: ""
 *    orgIdentifier: orgIdentifer
 *    projectIdentifier: projectIdentifier
 *    environmentRef: environmentIdentifier
 *    deploymentType: Kubernetes
 *    type: KubernetesDirect
 *    spec:
 *     connectorRef: account.gfgf
 *     namespace: asdasdsa
 *     releaseName: release-<+INFRA_KEY>
 *     allowSimultaneousDeployments: false
 *
 * `,
 * });
 * ```
 *
 * ## Import
 *
 * Import account level infrastructure
 *
 * ```sh
 *  $ pulumi import harness:platform/infrastructure:Infrastructure example <env_id>/<infrastructure_id>
 * ```
 *
 *  Import org level infrastructure
 *
 * ```sh
 *  $ pulumi import harness:platform/infrastructure:Infrastructure example <org_id>/<env_id>/<infrastructure_id>
 * ```
 *
 *  Import project level infrastructure
 *
 * ```sh
 *  $ pulumi import harness:platform/infrastructure:Infrastructure example <org_id>/<project_id>/<env_id>/<infrastructure_id>
 * ```
 */
export declare class Infrastructure extends pulumi.CustomResource {
    /**
     * Get an existing Infrastructure 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?: InfrastructureState, opts?: pulumi.CustomResourceOptions): Infrastructure;
    /**
     * Returns true if the given object is an instance of Infrastructure.  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 Infrastructure;
    /**
     * Infrastructure deployment type. Valid values are Kubernetes, NativeHelm, Ssh, WinRm, ServerlessAwsLambda, AzureWebApp, Custom, ECS.
     */
    readonly deploymentType: pulumi.Output<string>;
    /**
     * Description of the resource.
     */
    readonly description: pulumi.Output<string | undefined>;
    /**
     * Environment Identifier.
     */
    readonly envId: pulumi.Output<string>;
    /**
     * Enable this flag for force deletion of infrastructure
     */
    readonly forceDelete: pulumi.Output<string>;
    /**
     * Unique identifier of the resource.
     */
    readonly identifier: pulumi.Output<string>;
    /**
     * Name of the resource.
     */
    readonly name: pulumi.Output<string>;
    /**
     * Unique identifier of the organization.
     */
    readonly orgId: pulumi.Output<string | undefined>;
    /**
     * Unique identifier of the project.
     */
    readonly projectId: pulumi.Output<string | undefined>;
    /**
     * Tags to associate with the resource.
     */
    readonly tags: pulumi.Output<string[]>;
    /**
     * Type of Infrastructure. Valid values are KubernetesDirect, KubernetesGcp, ServerlessAwsLambda, Pdc, KubernetesAzure, SshWinRmAzure, SshWinRmAws, AzureWebApp, ECS, GitOps, CustomDeployment, TAS.
     */
    readonly type: pulumi.Output<string>;
    /**
     * Infrastructure YAML. In YAML, to reference an entity at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference an entity at the account scope, prefix 'account` to the expression: account.{identifier}. For eg, to reference a connector with identifier 'connectorId' at the organization scope in a stage mention it as connectorRef: org.connectorId.
     */
    readonly yaml: pulumi.Output<string>;
    /**
     * Create a Infrastructure 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: InfrastructureArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Infrastructure resources.
 */
export interface InfrastructureState {
    /**
     * Infrastructure deployment type. Valid values are Kubernetes, NativeHelm, Ssh, WinRm, ServerlessAwsLambda, AzureWebApp, Custom, ECS.
     */
    deploymentType?: pulumi.Input<string>;
    /**
     * Description of the resource.
     */
    description?: pulumi.Input<string>;
    /**
     * Environment Identifier.
     */
    envId?: pulumi.Input<string>;
    /**
     * Enable this flag for force deletion of infrastructure
     */
    forceDelete?: pulumi.Input<string>;
    /**
     * Unique identifier of the resource.
     */
    identifier?: pulumi.Input<string>;
    /**
     * Name of the resource.
     */
    name?: pulumi.Input<string>;
    /**
     * Unique identifier of the organization.
     */
    orgId?: pulumi.Input<string>;
    /**
     * Unique identifier of the project.
     */
    projectId?: pulumi.Input<string>;
    /**
     * Tags to associate with the resource.
     */
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Type of Infrastructure. Valid values are KubernetesDirect, KubernetesGcp, ServerlessAwsLambda, Pdc, KubernetesAzure, SshWinRmAzure, SshWinRmAws, AzureWebApp, ECS, GitOps, CustomDeployment, TAS.
     */
    type?: pulumi.Input<string>;
    /**
     * Infrastructure YAML. In YAML, to reference an entity at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference an entity at the account scope, prefix 'account` to the expression: account.{identifier}. For eg, to reference a connector with identifier 'connectorId' at the organization scope in a stage mention it as connectorRef: org.connectorId.
     */
    yaml?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a Infrastructure resource.
 */
export interface InfrastructureArgs {
    /**
     * Infrastructure deployment type. Valid values are Kubernetes, NativeHelm, Ssh, WinRm, ServerlessAwsLambda, AzureWebApp, Custom, ECS.
     */
    deploymentType?: pulumi.Input<string>;
    /**
     * Description of the resource.
     */
    description?: pulumi.Input<string>;
    /**
     * Environment Identifier.
     */
    envId: pulumi.Input<string>;
    /**
     * Enable this flag for force deletion of infrastructure
     */
    forceDelete?: pulumi.Input<string>;
    /**
     * Unique identifier of the resource.
     */
    identifier: pulumi.Input<string>;
    /**
     * Name of the resource.
     */
    name?: pulumi.Input<string>;
    /**
     * Unique identifier of the organization.
     */
    orgId?: pulumi.Input<string>;
    /**
     * Unique identifier of the project.
     */
    projectId?: pulumi.Input<string>;
    /**
     * Tags to associate with the resource.
     */
    tags?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Type of Infrastructure. Valid values are KubernetesDirect, KubernetesGcp, ServerlessAwsLambda, Pdc, KubernetesAzure, SshWinRmAzure, SshWinRmAws, AzureWebApp, ECS, GitOps, CustomDeployment, TAS.
     */
    type: pulumi.Input<string>;
    /**
     * Infrastructure YAML. In YAML, to reference an entity at the organization scope, prefix 'org' to the expression: org.{identifier}. To reference an entity at the account scope, prefix 'account` to the expression: account.{identifier}. For eg, to reference a connector with identifier 'connectorId' at the organization scope in a stage mention it as connectorRef: org.connectorId.
     */
    yaml: pulumi.Input<string>;
}
