import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Provides a resource to manage nas file system
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as volcengine from "@pulumi/volcengine";
 * import * as volcengine from "@volcengine/pulumi";
 *
 * const fooZones = volcengine.nas.getZones({});
 * // create nas file system
 * const fooFileSystem = new volcengine.nas.FileSystem("fooFileSystem", {
 *     fileSystemName: "acc-test-fs",
 *     description: "acc-test",
 *     zoneId: fooZones.then(fooZones => fooZones.zones?.[0]?.id),
 *     capacity: 103,
 *     projectName: "default",
 *     tags: [{
 *         key: "k1",
 *         value: "v1",
 *     }],
 * });
 * // create vpc
 * const fooVpc = new volcengine.vpc.Vpc("fooVpc", {
 *     vpcName: "acc-test-vpc",
 *     cidrBlock: "172.16.0.0/16",
 * });
 * // create subnet
 * const fooSubnet = new volcengine.vpc.Subnet("fooSubnet", {
 *     subnetName: "acc-test-subnet",
 *     cidrBlock: "172.16.0.0/24",
 *     zoneId: fooZones.then(fooZones => fooZones.zones?.[0]?.id),
 *     vpcId: fooVpc.id,
 * });
 * // create nas permission group
 * const fooPermissionGroup = new volcengine.nas.PermissionGroup("fooPermissionGroup", {
 *     permissionGroupName: "acc-test",
 *     description: "acctest",
 *     permissionRules: [
 *         {
 *             cidrIp: "*",
 *             rwMode: "RW",
 *             useMode: "All_squash",
 *         },
 *         {
 *             cidrIp: "192.168.0.0",
 *             rwMode: "RO",
 *             useMode: "All_squash",
 *         },
 *     ],
 * });
 * // create nas mount point
 * const fooMountPoint = new volcengine.nas.MountPoint("fooMountPoint", {
 *     fileSystemId: fooFileSystem.id,
 *     mountPointName: "acc-test",
 *     permissionGroupId: fooPermissionGroup.id,
 *     subnetId: fooSubnet.id,
 * });
 * ```
 *
 * ## Import
 *
 * NasFileSystem can be imported using the id, e.g.
 *
 * ```sh
 * $ pulumi import volcengine:nas/fileSystem:FileSystem default enas-cnbjd3879745****
 * ```
 */
export declare class FileSystem extends pulumi.CustomResource {
    /**
     * Get an existing FileSystem 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?: FileSystemState, opts?: pulumi.CustomResourceOptions): FileSystem;
    /**
     * Returns true if the given object is an instance of FileSystem.  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 FileSystem;
    /**
     * The capacity of the nas file system. Unit: GiB.
     */
    readonly capacity: pulumi.Output<number>;
    /**
     * The charge type of the nas file system.
     */
    readonly chargeType: pulumi.Output<string>;
    /**
     * The create time of the nas file system.
     */
    readonly createTime: pulumi.Output<string>;
    /**
     * The description of the nas file system.
     */
    readonly description: pulumi.Output<string>;
    /**
     * The name of the nas file system.
     */
    readonly fileSystemName: pulumi.Output<string>;
    /**
     * The type of the nas file system.
     */
    readonly fileSystemType: pulumi.Output<string>;
    /**
     * The project name of the nas file system.
     */
    readonly projectName: pulumi.Output<string>;
    /**
     * The protocol type of the nas file system.
     */
    readonly protocolType: pulumi.Output<string>;
    /**
     * The region id of the nas file system.
     */
    readonly regionId: pulumi.Output<string>;
    /**
     * The snapshot count of the nas file system.
     */
    readonly snapshotCount: pulumi.Output<number>;
    /**
     * The snapshot id when creating the nas file system. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    readonly snapshotId: pulumi.Output<string | undefined>;
    /**
     * The status of the nas file system.
     */
    readonly status: pulumi.Output<string>;
    /**
     * The storage type of the nas file system.
     */
    readonly storageType: pulumi.Output<string>;
    /**
     * Tags.
     */
    readonly tags: pulumi.Output<outputs.nas.FileSystemTag[] | undefined>;
    /**
     * The update time of the nas file system.
     */
    readonly updateTime: pulumi.Output<string>;
    /**
     * The version of the nas file system.
     */
    readonly version: pulumi.Output<string>;
    /**
     * The zone id of the nas file system.
     */
    readonly zoneId: pulumi.Output<string>;
    /**
     * The zone name of the nas file system.
     */
    readonly zoneName: pulumi.Output<string>;
    /**
     * Create a FileSystem 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: FileSystemArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering FileSystem resources.
 */
export interface FileSystemState {
    /**
     * The capacity of the nas file system. Unit: GiB.
     */
    capacity?: pulumi.Input<number>;
    /**
     * The charge type of the nas file system.
     */
    chargeType?: pulumi.Input<string>;
    /**
     * The create time of the nas file system.
     */
    createTime?: pulumi.Input<string>;
    /**
     * The description of the nas file system.
     */
    description?: pulumi.Input<string>;
    /**
     * The name of the nas file system.
     */
    fileSystemName?: pulumi.Input<string>;
    /**
     * The type of the nas file system.
     */
    fileSystemType?: pulumi.Input<string>;
    /**
     * The project name of the nas file system.
     */
    projectName?: pulumi.Input<string>;
    /**
     * The protocol type of the nas file system.
     */
    protocolType?: pulumi.Input<string>;
    /**
     * The region id of the nas file system.
     */
    regionId?: pulumi.Input<string>;
    /**
     * The snapshot count of the nas file system.
     */
    snapshotCount?: pulumi.Input<number>;
    /**
     * The snapshot id when creating the nas file system. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    snapshotId?: pulumi.Input<string>;
    /**
     * The status of the nas file system.
     */
    status?: pulumi.Input<string>;
    /**
     * The storage type of the nas file system.
     */
    storageType?: pulumi.Input<string>;
    /**
     * Tags.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.nas.FileSystemTag>[]>;
    /**
     * The update time of the nas file system.
     */
    updateTime?: pulumi.Input<string>;
    /**
     * The version of the nas file system.
     */
    version?: pulumi.Input<string>;
    /**
     * The zone id of the nas file system.
     */
    zoneId?: pulumi.Input<string>;
    /**
     * The zone name of the nas file system.
     */
    zoneName?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a FileSystem resource.
 */
export interface FileSystemArgs {
    /**
     * The capacity of the nas file system. Unit: GiB.
     */
    capacity: pulumi.Input<number>;
    /**
     * The description of the nas file system.
     */
    description?: pulumi.Input<string>;
    /**
     * The name of the nas file system.
     */
    fileSystemName: pulumi.Input<string>;
    /**
     * The project name of the nas file system.
     */
    projectName?: pulumi.Input<string>;
    /**
     * The snapshot id when creating the nas file system. When importing resources, this attribute will not be imported. If this attribute is set, please use lifecycle and ignoreChanges ignore changes in fields.
     */
    snapshotId?: pulumi.Input<string>;
    /**
     * Tags.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.nas.FileSystemTag>[]>;
    /**
     * The zone id of the nas file system.
     */
    zoneId: pulumi.Input<string>;
}
