import * as HttpClient from "effect/unstable/http/HttpClient";
import * as redacted from "effect/Redacted";
import * as S from "effect/Schema";
import * as stream from "effect/Stream";
import * as API from "../client/api.js";
import * as T from "../traits.js";
import { SensitiveString } from "../sensitive.js";
const svc = T.AwsApiService({
    sdkId: "DataSync",
    serviceShapeName: "FmrsService",
});
const auth = T.AwsAuthSigv4({ name: "datasync" });
const ver = T.ServiceVersion("2018-11-09");
const proto = T.AwsProtocolsAwsJson1_1();
const rules = T.EndpointResolver((p, _) => {
    const { Region, UseDualStack = false, UseFIPS = false, Endpoint } = p;
    const e = (u, p = {}, h = {}) => ({
        type: "endpoint",
        endpoint: { url: u, properties: p, headers: h },
    });
    const err = (m) => ({
        type: "error",
        message: m,
    });
    if (Endpoint != null) {
        if (UseFIPS === true) {
            return err("Invalid Configuration: FIPS and custom endpoint are not supported");
        }
        if (UseDualStack === true) {
            return err("Invalid Configuration: Dualstack and custom endpoint are not supported");
        }
        return e(Endpoint);
    }
    if (Region != null) {
        {
            const PartitionResult = _.partition(Region);
            if (PartitionResult != null && PartitionResult !== false) {
                if (UseFIPS === true && UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsFIPS") &&
                        true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://datasync-fips.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("FIPS and DualStack are enabled, but this partition does not support one or both");
                }
                if (UseFIPS === true) {
                    if (_.getAttr(PartitionResult, "supportsFIPS") === true) {
                        return e(`https://datasync-fips.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
                    }
                    return err("FIPS is enabled but this partition does not support FIPS");
                }
                if (UseDualStack === true) {
                    if (true === _.getAttr(PartitionResult, "supportsDualStack")) {
                        return e(`https://datasync.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://datasync.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const CancelTaskExecutionRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TaskExecutionArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CancelTaskExecutionRequest",
});
export const CancelTaskExecutionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "CancelTaskExecutionResponse",
});
export const TagListEntry = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Key: S.String, Value: S.optional(S.String) })).annotate({ identifier: "TagListEntry" });
export const InputTagList = /*@__PURE__*/ /*#__PURE__*/ S.Array(TagListEntry);
export const PLSubnetArnList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const PLSecurityGroupArnList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const CreateAgentRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActivationKey: S.String,
    AgentName: S.optional(S.String),
    Tags: S.optional(InputTagList),
    VpcEndpointId: S.optional(S.String),
    SubnetArns: S.optional(PLSubnetArnList),
    SecurityGroupArns: S.optional(PLSecurityGroupArnList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateAgentRequest",
});
export const CreateAgentResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AgentArn: S.optional(S.String) })).annotate({
    identifier: "CreateAgentResponse",
});
export const AzureBlobAuthenticationType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AzureBlobSasConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Token: SensitiveString })).annotate({
    identifier: "AzureBlobSasConfiguration",
});
export const AzureBlobType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AzureAccessTier = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AgentArnList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const CmkSecretConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SecretArn: S.optional(S.String),
    KmsKeyArn: S.optional(S.String),
})).annotate({
    identifier: "CmkSecretConfig",
});
export const CustomSecretConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SecretArn: S.optional(S.String),
    SecretAccessRoleArn: S.optional(S.String),
})).annotate({
    identifier: "CustomSecretConfig",
});
export const CreateLocationAzureBlobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ContainerUrl: S.String,
    AuthenticationType: AzureBlobAuthenticationType,
    SasConfiguration: S.optional(AzureBlobSasConfiguration),
    BlobType: S.optional(AzureBlobType),
    AccessTier: S.optional(AzureAccessTier),
    Subdirectory: S.optional(S.String),
    AgentArns: S.optional(AgentArnList),
    Tags: S.optional(InputTagList),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationAzureBlobRequest",
});
export const CreateLocationAzureBlobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationAzureBlobResponse",
});
export const Ec2SecurityGroupArnList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const Ec2Config = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ SubnetArn: S.String, SecurityGroupArns: Ec2SecurityGroupArnList })).annotate({ identifier: "Ec2Config" });
export const EfsInTransitEncryption = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateLocationEfsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Subdirectory: S.optional(S.String),
    EfsFilesystemArn: S.String,
    Ec2Config: Ec2Config,
    Tags: S.optional(InputTagList),
    AccessPointArn: S.optional(S.String),
    FileSystemAccessRoleArn: S.optional(S.String),
    InTransitEncryption: S.optional(EfsInTransitEncryption),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationEfsRequest",
});
export const CreateLocationEfsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationEfsResponse",
});
export const CreateLocationFsxLustreRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    FsxFilesystemArn: S.String,
    SecurityGroupArns: Ec2SecurityGroupArnList,
    Subdirectory: S.optional(S.String),
    Tags: S.optional(InputTagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationFsxLustreRequest",
});
export const CreateLocationFsxLustreResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationFsxLustreResponse",
});
export const NfsVersion = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const NfsMountOptions = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Version: S.optional(NfsVersion) })).annotate({
    identifier: "NfsMountOptions",
});
export const FsxProtocolNfs = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MountOptions: S.optional(NfsMountOptions) })).annotate({ identifier: "FsxProtocolNfs" });
export const SmbVersion = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SmbMountOptions = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Version: S.optional(SmbVersion) })).annotate({
    identifier: "SmbMountOptions",
});
export const ManagedSecretConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ SecretArn: S.optional(S.String) })).annotate({
    identifier: "ManagedSecretConfig",
});
export const FsxProtocolSmb = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Domain: S.optional(S.String),
    MountOptions: S.optional(SmbMountOptions),
    Password: S.optional(SensitiveString),
    User: S.String,
    ManagedSecretConfig: S.optional(ManagedSecretConfig),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
})).annotate({ identifier: "FsxProtocolSmb" });
export const FsxProtocol = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NFS: S.optional(FsxProtocolNfs),
    SMB: S.optional(FsxProtocolSmb),
})).annotate({ identifier: "FsxProtocol" });
export const CreateLocationFsxOntapRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Protocol: FsxProtocol,
    SecurityGroupArns: Ec2SecurityGroupArnList,
    StorageVirtualMachineArn: S.String,
    Subdirectory: S.optional(S.String),
    Tags: S.optional(InputTagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationFsxOntapRequest",
});
export const CreateLocationFsxOntapResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationFsxOntapResponse",
});
export const CreateLocationFsxOpenZfsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    FsxFilesystemArn: S.String,
    Protocol: FsxProtocol,
    SecurityGroupArns: Ec2SecurityGroupArnList,
    Subdirectory: S.optional(S.String),
    Tags: S.optional(InputTagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationFsxOpenZfsRequest",
});
export const CreateLocationFsxOpenZfsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationFsxOpenZfsResponse",
});
export const CreateLocationFsxWindowsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Subdirectory: S.optional(S.String),
    FsxFilesystemArn: S.String,
    SecurityGroupArns: Ec2SecurityGroupArnList,
    Tags: S.optional(InputTagList),
    User: S.String,
    Domain: S.optional(S.String),
    Password: S.optional(SensitiveString),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationFsxWindowsRequest",
});
export const CreateLocationFsxWindowsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationFsxWindowsResponse",
});
export const HdfsNameNode = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Hostname: S.String, Port: S.Number })).annotate({ identifier: "HdfsNameNode" });
export const HdfsNameNodeList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(HdfsNameNode);
export const HdfsRpcProtection = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const HdfsDataTransferProtection = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const QopConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    RpcProtection: S.optional(HdfsRpcProtection),
    DataTransferProtection: S.optional(HdfsDataTransferProtection),
})).annotate({
    identifier: "QopConfiguration",
});
export const HdfsAuthenticationType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateLocationHdfsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Subdirectory: S.optional(S.String),
    NameNodes: HdfsNameNodeList,
    BlockSize: S.optional(S.Number),
    ReplicationFactor: S.optional(S.Number),
    KmsKeyProviderUri: S.optional(S.String),
    QopConfiguration: S.optional(QopConfiguration),
    AuthenticationType: HdfsAuthenticationType,
    SimpleUser: S.optional(S.String),
    KerberosPrincipal: S.optional(S.String),
    KerberosKeytab: S.optional(T.Blob),
    KerberosKrb5Conf: S.optional(T.Blob),
    AgentArns: AgentArnList,
    Tags: S.optional(InputTagList),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationHdfsRequest",
});
export const CreateLocationHdfsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationHdfsResponse",
});
export const OnPremConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AgentArns: AgentArnList })).annotate({ identifier: "OnPremConfig" });
export const CreateLocationNfsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Subdirectory: S.String,
    ServerHostname: S.String,
    OnPremConfig: OnPremConfig,
    MountOptions: S.optional(NfsMountOptions),
    Tags: S.optional(InputTagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationNfsRequest",
});
export const CreateLocationNfsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationNfsResponse",
});
export const ObjectStorageServerProtocol = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateLocationObjectStorageRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ServerHostname: S.String,
    ServerPort: S.optional(S.Number),
    ServerProtocol: S.optional(ObjectStorageServerProtocol),
    Subdirectory: S.optional(S.String),
    BucketName: S.String,
    AccessKey: S.optional(S.String),
    SecretKey: S.optional(SensitiveString),
    AgentArns: S.optional(AgentArnList),
    Tags: S.optional(InputTagList),
    ServerCertificate: S.optional(T.Blob),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationObjectStorageRequest",
});
export const CreateLocationObjectStorageResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationObjectStorageResponse",
});
export const S3StorageClass = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const S3Config = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ BucketAccessRoleArn: S.String })).annotate({ identifier: "S3Config" });
export const CreateLocationS3Request = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Subdirectory: S.optional(S.String),
    S3BucketArn: S.String,
    S3StorageClass: S.optional(S3StorageClass),
    S3Config: S3Config,
    AgentArns: S.optional(AgentArnList),
    Tags: S.optional(InputTagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationS3Request",
});
export const CreateLocationS3Response = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationS3Response",
});
export const SmbAuthenticationType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DnsIpList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const CreateLocationSmbRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Subdirectory: S.String,
    ServerHostname: S.String,
    User: S.optional(S.String),
    Domain: S.optional(S.String),
    Password: S.optional(SensitiveString),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
    AgentArns: AgentArnList,
    MountOptions: S.optional(SmbMountOptions),
    Tags: S.optional(InputTagList),
    AuthenticationType: S.optional(SmbAuthenticationType),
    DnsIpAddresses: S.optional(DnsIpList),
    KerberosPrincipal: S.optional(S.String),
    KerberosKeytab: S.optional(T.Blob),
    KerberosKrb5Conf: S.optional(T.Blob),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLocationSmbRequest",
});
export const CreateLocationSmbResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.optional(S.String) })).annotate({
    identifier: "CreateLocationSmbResponse",
});
export const VerifyMode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const OverwriteMode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Atime = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Mtime = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Uid = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Gid = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PreserveDeletedFiles = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PreserveDevices = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PosixPermissions = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TaskQueueing = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const LogLevel = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TransferMode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SmbSecurityDescriptorCopyFlags = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const ObjectTags = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Options = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    VerifyMode: S.optional(VerifyMode),
    OverwriteMode: S.optional(OverwriteMode),
    Atime: S.optional(Atime),
    Mtime: S.optional(Mtime),
    Uid: S.optional(Uid),
    Gid: S.optional(Gid),
    PreserveDeletedFiles: S.optional(PreserveDeletedFiles),
    PreserveDevices: S.optional(PreserveDevices),
    PosixPermissions: S.optional(PosixPermissions),
    BytesPerSecond: S.optional(S.Number),
    TaskQueueing: S.optional(TaskQueueing),
    LogLevel: S.optional(LogLevel),
    TransferMode: S.optional(TransferMode),
    SecurityDescriptorCopyFlags: S.optional(SmbSecurityDescriptorCopyFlags),
    ObjectTags: S.optional(ObjectTags),
})).annotate({ identifier: "Options" });
export const FilterType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const FilterRule = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ FilterType: S.optional(FilterType), Value: S.optional(S.String) })).annotate({ identifier: "FilterRule" });
export const FilterList = /*@__PURE__*/ /*#__PURE__*/ S.Array(FilterRule);
export const ScheduleStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TaskSchedule = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ScheduleExpression: S.String,
    Status: S.optional(ScheduleStatus),
})).annotate({ identifier: "TaskSchedule" });
export const ManifestAction = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ManifestFormat = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const S3ManifestConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestObjectPath: S.String,
    BucketAccessRoleArn: S.String,
    S3BucketArn: S.String,
    ManifestObjectVersionId: S.optional(S.String),
})).annotate({
    identifier: "S3ManifestConfig",
});
export const SourceManifestConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ S3: S3ManifestConfig })).annotate({
    identifier: "SourceManifestConfig",
});
export const ManifestConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Action: S.optional(ManifestAction),
    Format: S.optional(ManifestFormat),
    Source: S.optional(SourceManifestConfig),
})).annotate({ identifier: "ManifestConfig" });
export const ReportDestinationS3 = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Subdirectory: S.optional(S.String),
    S3BucketArn: S.String,
    BucketAccessRoleArn: S.String,
})).annotate({
    identifier: "ReportDestinationS3",
});
export const ReportDestination = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ S3: S.optional(ReportDestinationS3) })).annotate({
    identifier: "ReportDestination",
});
export const ReportOutputType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ReportLevel = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ObjectVersionIds = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ReportOverride = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ReportLevel: S.optional(ReportLevel) })).annotate({ identifier: "ReportOverride" });
export const ReportOverrides = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Transferred: S.optional(ReportOverride),
    Verified: S.optional(ReportOverride),
    Deleted: S.optional(ReportOverride),
    Skipped: S.optional(ReportOverride),
})).annotate({
    identifier: "ReportOverrides",
});
export const TaskReportConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Destination: S.optional(ReportDestination),
    OutputType: S.optional(ReportOutputType),
    ReportLevel: S.optional(ReportLevel),
    ObjectVersionIds: S.optional(ObjectVersionIds),
    Overrides: S.optional(ReportOverrides),
})).annotate({
    identifier: "TaskReportConfig",
});
export const TaskMode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateTaskRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SourceLocationArn: S.String,
    DestinationLocationArn: S.String,
    CloudWatchLogGroupArn: S.optional(S.String),
    Name: S.optional(S.String),
    Options: S.optional(Options),
    Excludes: S.optional(FilterList),
    Schedule: S.optional(TaskSchedule),
    Tags: S.optional(InputTagList),
    Includes: S.optional(FilterList),
    ManifestConfig: S.optional(ManifestConfig),
    TaskReportConfig: S.optional(TaskReportConfig),
    TaskMode: S.optional(TaskMode),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateTaskRequest",
});
export const CreateTaskResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TaskArn: S.optional(S.String) })).annotate({
    identifier: "CreateTaskResponse",
});
export const DeleteAgentRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AgentArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteAgentRequest",
});
export const DeleteAgentResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteAgentResponse",
});
export const DeleteLocationRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteLocationRequest",
});
export const DeleteLocationResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteLocationResponse",
});
export const DeleteTaskRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TaskArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteTaskRequest",
});
export const DeleteTaskResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteTaskResponse",
});
export const DescribeAgentRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AgentArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeAgentRequest",
});
export const AgentStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const EndpointType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PrivateLinkConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    VpcEndpointId: S.optional(S.String),
    PrivateLinkEndpoint: S.optional(S.String),
    SubnetArns: S.optional(PLSubnetArnList),
    SecurityGroupArns: S.optional(PLSecurityGroupArnList),
})).annotate({
    identifier: "PrivateLinkConfig",
});
export const Platform = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Version: S.optional(S.String) })).annotate({ identifier: "Platform" });
export const DescribeAgentResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AgentArn: S.optional(S.String),
    Name: S.optional(S.String),
    Status: S.optional(AgentStatus),
    LastConnectionTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    EndpointType: S.optional(EndpointType),
    PrivateLinkConfig: S.optional(PrivateLinkConfig),
    Platform: S.optional(Platform),
})).annotate({
    identifier: "DescribeAgentResponse",
});
export const DescribeLocationAzureBlobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationAzureBlobRequest",
});
export const DescribeLocationAzureBlobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    AuthenticationType: S.optional(AzureBlobAuthenticationType),
    BlobType: S.optional(AzureBlobType),
    AccessTier: S.optional(AzureAccessTier),
    AgentArns: S.optional(AgentArnList),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ManagedSecretConfig: S.optional(ManagedSecretConfig),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
})).annotate({
    identifier: "DescribeLocationAzureBlobResponse",
});
export const DescribeLocationEfsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationEfsRequest",
});
export const DescribeLocationEfsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    Ec2Config: S.optional(Ec2Config),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    AccessPointArn: S.optional(S.String),
    FileSystemAccessRoleArn: S.optional(S.String),
    InTransitEncryption: S.optional(EfsInTransitEncryption),
})).annotate({
    identifier: "DescribeLocationEfsResponse",
});
export const DescribeLocationFsxLustreRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationFsxLustreRequest",
});
export const DescribeLocationFsxLustreResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    SecurityGroupArns: S.optional(Ec2SecurityGroupArnList),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "DescribeLocationFsxLustreResponse",
});
export const DescribeLocationFsxOntapRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationFsxOntapRequest",
});
export const DescribeLocationFsxOntapResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    Protocol: S.optional(FsxProtocol),
    SecurityGroupArns: S.optional(Ec2SecurityGroupArnList),
    StorageVirtualMachineArn: S.optional(S.String),
    FsxFilesystemArn: S.optional(S.String),
})).annotate({
    identifier: "DescribeLocationFsxOntapResponse",
});
export const DescribeLocationFsxOpenZfsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationFsxOpenZfsRequest",
});
export const DescribeLocationFsxOpenZfsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    SecurityGroupArns: S.optional(Ec2SecurityGroupArnList),
    Protocol: S.optional(FsxProtocol),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "DescribeLocationFsxOpenZfsResponse",
});
export const DescribeLocationFsxWindowsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationFsxWindowsRequest",
});
export const DescribeLocationFsxWindowsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    SecurityGroupArns: S.optional(Ec2SecurityGroupArnList),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    User: S.optional(S.String),
    Domain: S.optional(S.String),
    ManagedSecretConfig: S.optional(ManagedSecretConfig),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
})).annotate({
    identifier: "DescribeLocationFsxWindowsResponse",
});
export const DescribeLocationHdfsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationHdfsRequest",
});
export const DescribeLocationHdfsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    NameNodes: S.optional(HdfsNameNodeList),
    BlockSize: S.optional(S.Number),
    ReplicationFactor: S.optional(S.Number),
    KmsKeyProviderUri: S.optional(S.String),
    QopConfiguration: S.optional(QopConfiguration),
    AuthenticationType: S.optional(HdfsAuthenticationType),
    SimpleUser: S.optional(S.String),
    KerberosPrincipal: S.optional(S.String),
    AgentArns: S.optional(AgentArnList),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ManagedSecretConfig: S.optional(ManagedSecretConfig),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
})).annotate({
    identifier: "DescribeLocationHdfsResponse",
});
export const DescribeLocationNfsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationNfsRequest",
});
export const DescribeLocationNfsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    OnPremConfig: S.optional(OnPremConfig),
    MountOptions: S.optional(NfsMountOptions),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "DescribeLocationNfsResponse",
});
export const DescribeLocationObjectStorageRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationObjectStorageRequest",
});
export const DescribeLocationObjectStorageResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    AccessKey: S.optional(S.String),
    ServerPort: S.optional(S.Number),
    ServerProtocol: S.optional(ObjectStorageServerProtocol),
    AgentArns: S.optional(AgentArnList),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ServerCertificate: S.optional(T.Blob),
    ManagedSecretConfig: S.optional(ManagedSecretConfig),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
})).annotate({
    identifier: "DescribeLocationObjectStorageResponse",
});
export const DescribeLocationS3Request = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationS3Request",
});
export const DescribeLocationS3Response = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    S3StorageClass: S.optional(S3StorageClass),
    S3Config: S.optional(S3Config),
    AgentArns: S.optional(AgentArnList),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "DescribeLocationS3Response",
});
export const DescribeLocationSmbRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LocationArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeLocationSmbRequest",
});
export const DescribeLocationSmbResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
    AgentArns: S.optional(AgentArnList),
    User: S.optional(S.String),
    Domain: S.optional(S.String),
    MountOptions: S.optional(SmbMountOptions),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    DnsIpAddresses: S.optional(DnsIpList),
    KerberosPrincipal: S.optional(S.String),
    AuthenticationType: S.optional(SmbAuthenticationType),
    ManagedSecretConfig: S.optional(ManagedSecretConfig),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
})).annotate({
    identifier: "DescribeLocationSmbResponse",
});
export const DescribeTaskRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TaskArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeTaskRequest",
});
export const TaskStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SourceNetworkInterfaceArns = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const DestinationNetworkInterfaceArns = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ScheduleDisabledBy = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TaskScheduleDetails = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StatusUpdateTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    DisabledReason: S.optional(S.String),
    DisabledBy: S.optional(ScheduleDisabledBy),
})).annotate({
    identifier: "TaskScheduleDetails",
});
export const DescribeTaskResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TaskArn: S.optional(S.String),
    Status: S.optional(TaskStatus),
    Name: S.optional(S.String),
    CurrentTaskExecutionArn: S.optional(S.String),
    SourceLocationArn: S.optional(S.String),
    DestinationLocationArn: S.optional(S.String),
    CloudWatchLogGroupArn: S.optional(S.String),
    SourceNetworkInterfaceArns: S.optional(SourceNetworkInterfaceArns),
    DestinationNetworkInterfaceArns: S.optional(DestinationNetworkInterfaceArns),
    Options: S.optional(Options),
    Excludes: S.optional(FilterList),
    Schedule: S.optional(TaskSchedule),
    ErrorCode: S.optional(S.String),
    ErrorDetail: S.optional(S.String),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    Includes: S.optional(FilterList),
    ManifestConfig: S.optional(ManifestConfig),
    TaskReportConfig: S.optional(TaskReportConfig),
    ScheduleDetails: S.optional(TaskScheduleDetails),
    TaskMode: S.optional(TaskMode),
})).annotate({
    identifier: "DescribeTaskResponse",
});
export const DescribeTaskExecutionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TaskExecutionArn: S.String }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeTaskExecutionRequest",
});
export const TaskExecutionStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PhaseStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TaskExecutionResultDetail = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PrepareDuration: S.optional(S.Number),
    PrepareStatus: S.optional(PhaseStatus),
    TotalDuration: S.optional(S.Number),
    TransferDuration: S.optional(S.Number),
    TransferStatus: S.optional(PhaseStatus),
    VerifyDuration: S.optional(S.Number),
    VerifyStatus: S.optional(PhaseStatus),
    ErrorCode: S.optional(S.String),
    ErrorDetail: S.optional(S.String),
})).annotate({
    identifier: "TaskExecutionResultDetail",
});
export const ReportResult = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Status: S.optional(PhaseStatus),
    ErrorCode: S.optional(S.String),
    ErrorDetail: S.optional(S.String),
})).annotate({ identifier: "ReportResult" });
export const TaskExecutionFilesListedDetail = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AtSource: S.optional(S.Number),
    AtDestinationForDelete: S.optional(S.Number),
})).annotate({
    identifier: "TaskExecutionFilesListedDetail",
});
export const TaskExecutionFilesFailedDetail = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Prepare: S.optional(S.Number),
    Transfer: S.optional(S.Number),
    Verify: S.optional(S.Number),
    Delete: S.optional(S.Number),
})).annotate({
    identifier: "TaskExecutionFilesFailedDetail",
});
export const TaskExecutionFoldersListedDetail = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AtSource: S.optional(S.Number),
    AtDestinationForDelete: S.optional(S.Number),
})).annotate({
    identifier: "TaskExecutionFoldersListedDetail",
});
export const TaskExecutionFoldersFailedDetail = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    List: S.optional(S.Number),
    Prepare: S.optional(S.Number),
    Transfer: S.optional(S.Number),
    Verify: S.optional(S.Number),
    Delete: S.optional(S.Number),
})).annotate({
    identifier: "TaskExecutionFoldersFailedDetail",
});
export const DescribeTaskExecutionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TaskExecutionArn: S.optional(S.String),
    Status: S.optional(TaskExecutionStatus),
    Options: S.optional(Options),
    Excludes: S.optional(FilterList),
    Includes: S.optional(FilterList),
    ManifestConfig: S.optional(ManifestConfig),
    StartTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    EstimatedFilesToTransfer: S.optional(S.Number),
    EstimatedBytesToTransfer: S.optional(S.Number),
    FilesTransferred: S.optional(S.Number),
    BytesWritten: S.optional(S.Number),
    BytesTransferred: S.optional(S.Number),
    BytesCompressed: S.optional(S.Number),
    Result: S.optional(TaskExecutionResultDetail),
    TaskReportConfig: S.optional(TaskReportConfig),
    FilesDeleted: S.optional(S.Number),
    FilesSkipped: S.optional(S.Number),
    FilesVerified: S.optional(S.Number),
    ReportResult: S.optional(ReportResult),
    EstimatedFilesToDelete: S.optional(S.Number),
    TaskMode: S.optional(TaskMode),
    FilesPrepared: S.optional(S.Number),
    FilesListed: S.optional(TaskExecutionFilesListedDetail),
    FilesFailed: S.optional(TaskExecutionFilesFailedDetail),
    EstimatedFoldersToDelete: S.optional(S.Number),
    EstimatedFoldersToTransfer: S.optional(S.Number),
    FoldersSkipped: S.optional(S.Number),
    FoldersPrepared: S.optional(S.Number),
    FoldersTransferred: S.optional(S.Number),
    FoldersVerified: S.optional(S.Number),
    FoldersDeleted: S.optional(S.Number),
    FoldersListed: S.optional(TaskExecutionFoldersListedDetail),
    FoldersFailed: S.optional(TaskExecutionFoldersFailedDetail),
    LaunchTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    EndTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "DescribeTaskExecutionResponse",
});
export const ListAgentsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAgentsRequest",
});
export const AgentListEntry = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AgentArn: S.optional(S.String),
    Name: S.optional(S.String),
    Status: S.optional(AgentStatus),
    Platform: S.optional(Platform),
})).annotate({ identifier: "AgentListEntry" });
export const AgentList = /*@__PURE__*/ /*#__PURE__*/ S.Array(AgentListEntry);
export const ListAgentsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Agents: S.optional(AgentList), NextToken: S.optional(S.String) })).annotate({
    identifier: "ListAgentsResponse",
});
export const LocationFilterName = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const FilterValues = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const Operator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const LocationFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: LocationFilterName,
    Values: FilterValues,
    Operator: Operator,
})).annotate({ identifier: "LocationFilter" });
export const LocationFilters = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(LocationFilter);
export const ListLocationsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
    Filters: S.optional(LocationFilters),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListLocationsRequest",
});
export const LocationListEntry = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.optional(S.String),
    LocationUri: S.optional(S.String),
})).annotate({
    identifier: "LocationListEntry",
});
export const LocationList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(LocationListEntry);
export const ListLocationsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Locations: S.optional(LocationList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListLocationsResponse",
});
export const ListTagsForResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceArn: S.String,
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTagsForResourceRequest",
});
export const OutputTagList = /*@__PURE__*/ /*#__PURE__*/ S.Array(TagListEntry);
export const ListTagsForResourceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Tags: S.optional(OutputTagList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListTagsForResourceResponse",
});
export const ListTaskExecutionsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TaskArn: S.optional(S.String),
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTaskExecutionsRequest",
});
export const TaskExecutionListEntry = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TaskExecutionArn: S.optional(S.String),
    Status: S.optional(TaskExecutionStatus),
    TaskMode: S.optional(TaskMode),
})).annotate({
    identifier: "TaskExecutionListEntry",
});
export const TaskExecutionList = /*@__PURE__*/ /*#__PURE__*/ S.Array(TaskExecutionListEntry);
export const ListTaskExecutionsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TaskExecutions: S.optional(TaskExecutionList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListTaskExecutionsResponse",
});
export const TaskFilterName = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TaskFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: TaskFilterName, Values: FilterValues, Operator: Operator })).annotate({ identifier: "TaskFilter" });
export const TaskFilters = /*@__PURE__*/ /*#__PURE__*/ S.Array(TaskFilter);
export const ListTasksRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
    Filters: S.optional(TaskFilters),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTasksRequest",
});
export const TaskListEntry = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TaskArn: S.optional(S.String),
    Status: S.optional(TaskStatus),
    Name: S.optional(S.String),
    TaskMode: S.optional(TaskMode),
})).annotate({ identifier: "TaskListEntry" });
export const TaskList = /*@__PURE__*/ /*#__PURE__*/ S.Array(TaskListEntry);
export const ListTasksResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Tasks: S.optional(TaskList), NextToken: S.optional(S.String) })).annotate({
    identifier: "ListTasksResponse",
});
export const StartTaskExecutionRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TaskArn: S.String,
    OverrideOptions: S.optional(Options),
    Includes: S.optional(FilterList),
    Excludes: S.optional(FilterList),
    ManifestConfig: S.optional(ManifestConfig),
    TaskReportConfig: S.optional(TaskReportConfig),
    Tags: S.optional(InputTagList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StartTaskExecutionRequest",
});
export const StartTaskExecutionResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TaskExecutionArn: S.optional(S.String) })).annotate({
    identifier: "StartTaskExecutionResponse",
});
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String, Tags: InputTagList }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "TagResourceRequest",
});
export const TagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "TagResourceResponse",
});
export const TagKeyList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const UntagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String, Keys: TagKeyList }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UntagResourceRequest",
});
export const UntagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UntagResourceResponse",
});
export const UpdateAgentRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AgentArn: S.String, Name: S.optional(S.String) }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateAgentRequest",
});
export const UpdateAgentResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateAgentResponse",
});
export const UpdateLocationAzureBlobRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Subdirectory: S.optional(S.String),
    AuthenticationType: S.optional(AzureBlobAuthenticationType),
    SasConfiguration: S.optional(AzureBlobSasConfiguration),
    BlobType: S.optional(AzureBlobType),
    AccessTier: S.optional(AzureAccessTier),
    AgentArns: S.optional(AgentArnList),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationAzureBlobRequest",
});
export const UpdateLocationAzureBlobResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationAzureBlobResponse",
});
export const UpdateLocationEfsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Subdirectory: S.optional(S.String),
    AccessPointArn: S.optional(S.String),
    FileSystemAccessRoleArn: S.optional(S.String),
    InTransitEncryption: S.optional(EfsInTransitEncryption),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationEfsRequest",
});
export const UpdateLocationEfsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationEfsResponse",
});
export const UpdateLocationFsxLustreRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Subdirectory: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationFsxLustreRequest",
});
export const UpdateLocationFsxLustreResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationFsxLustreResponse",
});
export const FsxUpdateProtocolSmb = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Domain: S.optional(S.String),
    MountOptions: S.optional(SmbMountOptions),
    Password: S.optional(SensitiveString),
    User: S.optional(S.String),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
})).annotate({
    identifier: "FsxUpdateProtocolSmb",
});
export const FsxUpdateProtocol = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NFS: S.optional(FsxProtocolNfs),
    SMB: S.optional(FsxUpdateProtocolSmb),
})).annotate({
    identifier: "FsxUpdateProtocol",
});
export const UpdateLocationFsxOntapRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Protocol: S.optional(FsxUpdateProtocol),
    Subdirectory: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationFsxOntapRequest",
});
export const UpdateLocationFsxOntapResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationFsxOntapResponse",
});
export const UpdateLocationFsxOpenZfsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Protocol: S.optional(FsxProtocol),
    Subdirectory: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationFsxOpenZfsRequest",
});
export const UpdateLocationFsxOpenZfsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationFsxOpenZfsResponse",
});
export const UpdateLocationFsxWindowsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Subdirectory: S.optional(S.String),
    Domain: S.optional(S.String),
    User: S.optional(S.String),
    Password: S.optional(SensitiveString),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationFsxWindowsRequest",
});
export const UpdateLocationFsxWindowsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationFsxWindowsResponse",
});
export const UpdateLocationHdfsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Subdirectory: S.optional(S.String),
    NameNodes: S.optional(HdfsNameNodeList),
    BlockSize: S.optional(S.Number),
    ReplicationFactor: S.optional(S.Number),
    KmsKeyProviderUri: S.optional(S.String),
    QopConfiguration: S.optional(QopConfiguration),
    AuthenticationType: S.optional(HdfsAuthenticationType),
    SimpleUser: S.optional(S.String),
    KerberosPrincipal: S.optional(S.String),
    KerberosKeytab: S.optional(T.Blob),
    KerberosKrb5Conf: S.optional(T.Blob),
    AgentArns: S.optional(AgentArnList),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationHdfsRequest",
});
export const UpdateLocationHdfsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationHdfsResponse",
});
export const UpdateLocationNfsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Subdirectory: S.optional(S.String),
    ServerHostname: S.optional(S.String),
    OnPremConfig: S.optional(OnPremConfig),
    MountOptions: S.optional(NfsMountOptions),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationNfsRequest",
});
export const UpdateLocationNfsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationNfsResponse",
});
export const UpdateLocationObjectStorageRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    ServerPort: S.optional(S.Number),
    ServerProtocol: S.optional(ObjectStorageServerProtocol),
    Subdirectory: S.optional(S.String),
    ServerHostname: S.optional(S.String),
    AccessKey: S.optional(S.String),
    SecretKey: S.optional(SensitiveString),
    AgentArns: S.optional(AgentArnList),
    ServerCertificate: S.optional(T.Blob),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationObjectStorageRequest",
});
export const UpdateLocationObjectStorageResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationObjectStorageResponse",
});
export const UpdateLocationS3Request = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Subdirectory: S.optional(S.String),
    S3StorageClass: S.optional(S3StorageClass),
    S3Config: S.optional(S3Config),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationS3Request",
});
export const UpdateLocationS3Response = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationS3Response",
});
export const UpdateLocationSmbRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LocationArn: S.String,
    Subdirectory: S.optional(S.String),
    ServerHostname: S.optional(S.String),
    User: S.optional(S.String),
    Domain: S.optional(S.String),
    Password: S.optional(SensitiveString),
    CmkSecretConfig: S.optional(CmkSecretConfig),
    CustomSecretConfig: S.optional(CustomSecretConfig),
    AgentArns: S.optional(AgentArnList),
    MountOptions: S.optional(SmbMountOptions),
    AuthenticationType: S.optional(SmbAuthenticationType),
    DnsIpAddresses: S.optional(DnsIpList),
    KerberosPrincipal: S.optional(S.String),
    KerberosKeytab: S.optional(T.Blob),
    KerberosKrb5Conf: S.optional(T.Blob),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateLocationSmbRequest",
});
export const UpdateLocationSmbResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateLocationSmbResponse",
});
export const UpdateTaskRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TaskArn: S.String,
    Options: S.optional(Options),
    Excludes: S.optional(FilterList),
    Schedule: S.optional(TaskSchedule),
    Name: S.optional(S.String),
    CloudWatchLogGroupArn: S.optional(S.String),
    Includes: S.optional(FilterList),
    ManifestConfig: S.optional(ManifestConfig),
    TaskReportConfig: S.optional(TaskReportConfig),
}).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateTaskRequest",
});
export const UpdateTaskResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateTaskResponse",
});
export const UpdateTaskExecutionRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TaskExecutionArn: S.String, Options: Options }).pipe(T.all(T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateTaskExecutionRequest",
});
export const UpdateTaskExecutionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateTaskExecutionResponse",
});
//# Errors
export class InternalException extends S.TaggedErrorClass()("InternalException", { message: S.optional(S.String), errorCode: S.optional(S.String) }) {
}
export class InvalidRequestException extends S.TaggedErrorClass()("InvalidRequestException", {
    message: S.optional(S.String),
    errorCode: S.optional(S.String),
    datasyncErrorCode: S.optional(S.String),
}) {
}
/**
 * Stops an DataSync task execution that's in progress. The transfer of some
 * files are abruptly interrupted. File contents that're transferred to the destination might be
 * incomplete or inconsistent with the source files.
 *
 * However, if you start a new task execution using the same task and allow it to finish,
 * file content on the destination will be complete and consistent. This applies to other
 * unexpected failures that interrupt a task execution. In all of these cases, DataSync
 * successfully completes the transfer when you start the next task execution.
 */
export const cancelTaskExecution = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CancelTaskExecutionRequest,
    output: CancelTaskExecutionResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Activates an DataSync agent that you deploy in your storage environment.
 * The activation process associates the agent with your Amazon Web Services account.
 *
 * If you haven't deployed an agent yet, see Do I need a DataSync
 * agent?
 */
export const createAgent = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateAgentRequest,
    output: CreateAgentResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for a Microsoft Azure Blob Storage
 * container. DataSync can use this location as a transfer source or destination.
 * You can make transfers with or without a DataSync agent that connects to your
 * container.
 *
 * Before you begin, make sure you know how DataSync accesses Azure Blob Storage and works with access tiers and blob types.
 */
export const createLocationAzureBlob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationAzureBlobRequest,
    output: CreateLocationAzureBlobResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for an Amazon EFS file system.
 * DataSync can use this location as a source or destination for transferring
 * data.
 *
 * Before you begin, make sure that you understand how DataSync
 * accesses
 * Amazon EFS file systems.
 */
export const createLocationEfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationEfsRequest,
    output: CreateLocationEfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for an Amazon FSx for Lustre file
 * system. DataSync can use this location as a source or destination for
 * transferring data.
 *
 * Before you begin, make sure that you understand how DataSync
 * accesses FSx for Lustre file systems.
 */
export const createLocationFsxLustre = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationFsxLustreRequest,
    output: CreateLocationFsxLustreResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for an Amazon FSx for NetApp ONTAP file
 * system. DataSync can use this location as a source or destination for
 * transferring data.
 *
 * Before you begin, make sure that you understand how DataSync
 * accesses FSx for ONTAP file systems.
 */
export const createLocationFsxOntap = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationFsxOntapRequest,
    output: CreateLocationFsxOntapResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for an Amazon FSx for OpenZFS file
 * system. DataSync can use this location as a source or destination for
 * transferring data.
 *
 * Before you begin, make sure that you understand how DataSync
 * accesses
 * FSx for OpenZFS file systems.
 *
 * Request parameters related to `SMB` aren't supported with the
 * `CreateLocationFsxOpenZfs` operation.
 */
export const createLocationFsxOpenZfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationFsxOpenZfsRequest,
    output: CreateLocationFsxOpenZfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for an Amazon FSx for Windows File Server file
 * system. DataSync can use this location as a source or destination for
 * transferring data.
 *
 * Before you begin, make sure that you understand how DataSync
 * accesses
 * FSx for Windows File Server file systems.
 */
export const createLocationFsxWindows = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationFsxWindowsRequest,
    output: CreateLocationFsxWindowsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for a Hadoop Distributed File System
 * (HDFS). DataSync can use this location as a source or destination for
 * transferring data.
 *
 * Before you begin, make sure that you understand how DataSync
 * accesses HDFS
 * clusters.
 */
export const createLocationHdfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationHdfsRequest,
    output: CreateLocationHdfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for a Network File System (NFS) file
 * server. DataSync can use this location as a source or destination for
 * transferring data.
 *
 * Before you begin, make sure that you understand how DataSync
 * accesses NFS file
 * servers.
 */
export const createLocationNfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationNfsRequest,
    output: CreateLocationNfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for an object storage system. DataSync can use this location as a source or destination for transferring data. You
 * can make transfers with or without a DataSync
 * agent.
 *
 * Before you begin, make sure that you understand the prerequisites for DataSync to work with object storage systems.
 */
export const createLocationObjectStorage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationObjectStorageRequest,
    output: CreateLocationObjectStorageResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for an Amazon S3 bucket.
 * DataSync can use this location as a source or destination for transferring
 * data.
 *
 * Before you begin, make sure that you read the following topics:
 *
 * - Storage
 * class considerations with Amazon S3 locations
 *
 * - Evaluating S3 request costs when using DataSync
 *
 * For more information, see Configuring
 * transfers with Amazon S3.
 */
export const createLocationS3 = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationS3Request,
    output: CreateLocationS3Response,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Creates a transfer *location* for a Server Message Block (SMB) file
 * server. DataSync can use this location as a source or destination for
 * transferring data.
 *
 * Before you begin, make sure that you understand how DataSync accesses SMB
 * file servers. For more information, see Providing DataSync access to SMB file servers.
 */
export const createLocationSmb = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLocationSmbRequest,
    output: CreateLocationSmbResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Configures a *task*, which defines where and how DataSync
 * transfers your data.
 *
 * A task includes a source location, destination location, and transfer options (such as
 * bandwidth limits, scheduling, and more).
 *
 * If you're planning to transfer data to or from an Amazon S3 location, review
 * how
 * DataSync can affect your S3 request charges and the DataSync pricing page before
 * you begin.
 */
export const createTask = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateTaskRequest,
    output: CreateTaskResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Removes an DataSync agent resource from your Amazon Web Services account.
 *
 * Keep in mind that this operation (which can't be undone) doesn't remove the agent's
 * virtual machine (VM) or Amazon EC2 instance from your storage environment. For next
 * steps, you can delete the VM or instance from your storage environment or reuse it to activate a new
 * agent.
 */
export const deleteAgent = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteAgentRequest,
    output: DeleteAgentResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Deletes a transfer location resource from DataSync.
 */
export const deleteLocation = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteLocationRequest,
    output: DeleteLocationResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Deletes a transfer task resource from DataSync.
 */
export const deleteTask = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteTaskRequest,
    output: DeleteTaskResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Returns information about an DataSync agent, such as its name, service
 * endpoint type, and status.
 */
export const describeAgent = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeAgentRequest,
    output: DescribeAgentResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for Microsoft Azure
 * Blob Storage is configured.
 */
export const describeLocationAzureBlob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationAzureBlobRequest,
    output: DescribeLocationAzureBlobResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for an Amazon EFS file system is configured.
 */
export const describeLocationEfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationEfsRequest,
    output: DescribeLocationEfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for an Amazon FSx for Lustre file system is configured.
 */
export const describeLocationFsxLustre = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationFsxLustreRequest,
    output: DescribeLocationFsxLustreResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for an Amazon FSx for NetApp ONTAP file system is configured.
 *
 * If your location uses SMB, the `DescribeLocationFsxOntap` operation doesn't
 * actually return a `Password`.
 */
export const describeLocationFsxOntap = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationFsxOntapRequest,
    output: DescribeLocationFsxOntapResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for an Amazon FSx for OpenZFS file system is configured.
 *
 * Response elements related to `SMB` aren't supported with the
 * `DescribeLocationFsxOpenZfs` operation.
 */
export const describeLocationFsxOpenZfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationFsxOpenZfsRequest,
    output: DescribeLocationFsxOpenZfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for an Amazon FSx for Windows File Server file system is configured.
 */
export const describeLocationFsxWindows = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationFsxWindowsRequest,
    output: DescribeLocationFsxWindowsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for a Hadoop
 * Distributed File System (HDFS) is configured.
 */
export const describeLocationHdfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationHdfsRequest,
    output: DescribeLocationHdfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for a Network
 * File System (NFS) file server is configured.
 */
export const describeLocationNfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationNfsRequest,
    output: DescribeLocationNfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for an object
 * storage system is configured.
 */
export const describeLocationObjectStorage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationObjectStorageRequest,
    output: DescribeLocationObjectStorageResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for an S3 bucket
 * is configured.
 */
export const describeLocationS3 = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationS3Request,
    output: DescribeLocationS3Response,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides details about how an DataSync transfer location for a Server
 * Message Block (SMB) file server is configured.
 */
export const describeLocationSmb = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeLocationSmbRequest,
    output: DescribeLocationSmbResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides information about a *task*, which defines where and how
 * DataSync transfers your data.
 */
export const describeTask = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeTaskRequest,
    output: DescribeTaskResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Provides information about an execution of your DataSync task. You can
 * use this operation to help monitor the progress of an ongoing data transfer or check the
 * results of the transfer.
 *
 * Some `DescribeTaskExecution` response elements are only relevant to a
 * specific task mode. For information, see Understanding task mode differences and Understanding data
 * transfer performance counters.
 */
export const describeTaskExecution = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeTaskExecutionRequest,
    output: DescribeTaskExecutionResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Returns a list of DataSync agents that belong to an Amazon Web Services account in the Amazon Web Services Region specified in the request.
 *
 * With pagination, you can reduce the number of agents returned in a response. If you get
 * a truncated list of agents in a response, the response contains a marker that you can specify
 * in your next request to fetch the next page of agents.
 *
 * `ListAgents` is eventually consistent. This means the result of running the
 * operation might not reflect that you just created or deleted an agent. For example, if you
 * create an agent with CreateAgent and then
 * immediately run `ListAgents`, that agent might not show up in the list right away.
 * In situations like this, you can always confirm whether an agent has been created (or deleted)
 * by using DescribeAgent.
 */
export const listAgents = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListAgentsRequest,
    output: ListAgentsResponse,
    errors: [InternalException, InvalidRequestException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Agents",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of source and destination locations.
 *
 * If you have more locations than are returned in a response (that is, the response
 * returns only a truncated list of your agents), the response contains a token that you can
 * specify in your next request to fetch the next page of locations.
 */
export const listLocations = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListLocationsRequest,
    output: ListLocationsResponse,
    errors: [InternalException, InvalidRequestException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Locations",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns all the tags associated with an Amazon Web Services resource.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [InternalException, InvalidRequestException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Tags",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of executions for an DataSync transfer task.
 */
export const listTaskExecutions = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListTaskExecutionsRequest,
    output: ListTaskExecutionsResponse,
    errors: [InternalException, InvalidRequestException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "TaskExecutions",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of the DataSync tasks you created.
 */
export const listTasks = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListTasksRequest,
    output: ListTasksResponse,
    errors: [InternalException, InvalidRequestException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Tasks",
        pageSize: "MaxResults",
    },
}));
/**
 * Starts an DataSync transfer task. For each task, you can only run one task
 * execution at a time.
 *
 * There are several steps to a task execution. For more information, see Task execution statuses.
 *
 * If you're planning to transfer data to or from an Amazon S3 location, review
 * how
 * DataSync can affect your S3 request charges and the DataSync pricing page before
 * you begin.
 */
export const startTaskExecution = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StartTaskExecutionRequest,
    output: StartTaskExecutionResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Applies a *tag* to an Amazon Web Services resource. Tags are
 * key-value pairs that can help you manage, filter, and search for your resources.
 *
 * These include DataSync resources, such as locations, tasks, and task
 * executions.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Removes tags from an Amazon Web Services resource.
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Updates the name of an DataSync agent.
 */
export const updateAgent = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateAgentRequest,
    output: UpdateAgentResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configurations of the Microsoft Azure Blob Storage transfer
 * location that you're using with DataSync.
 *
 * For more information, see Configuring DataSync transfers with Azure Blob Storage.
 */
export const updateLocationAzureBlob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationAzureBlobRequest,
    output: UpdateLocationAzureBlobResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Amazon EFS transfer
 * location that you're using with DataSync.
 *
 * For more information, see Configuring DataSync
 * transfers with Amazon EFS.
 */
export const updateLocationEfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationEfsRequest,
    output: UpdateLocationEfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Amazon FSx for Lustre
 * transfer location that you're using with DataSync.
 *
 * For more information, see Configuring DataSync
 * transfers with FSx for Lustre.
 */
export const updateLocationFsxLustre = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationFsxLustreRequest,
    output: UpdateLocationFsxLustreResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Amazon FSx for NetApp ONTAP
 * transfer location that you're using with DataSync.
 *
 * For more information, see Configuring DataSync
 * transfers with FSx for ONTAP.
 */
export const updateLocationFsxOntap = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationFsxOntapRequest,
    output: UpdateLocationFsxOntapResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Amazon FSx for OpenZFS
 * transfer location that you're using with DataSync.
 *
 * For more information, see Configuring DataSync
 * transfers with FSx for OpenZFS.
 *
 * Request parameters related to `SMB` aren't supported with the
 * `UpdateLocationFsxOpenZfs` operation.
 */
export const updateLocationFsxOpenZfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationFsxOpenZfsRequest,
    output: UpdateLocationFsxOpenZfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Amazon FSx for Windows File Server
 * transfer location that you're using with DataSync.
 *
 * For more information, see Configuring DataSync
 * transfers with FSx for Windows File Server.
 */
export const updateLocationFsxWindows = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationFsxWindowsRequest,
    output: UpdateLocationFsxWindowsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Hadoop Distributed File System
 * (HDFS) transfer location that you're using with DataSync.
 *
 * For more information, see Configuring DataSync
 * transfers with an HDFS cluster.
 */
export const updateLocationHdfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationHdfsRequest,
    output: UpdateLocationHdfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Network File System (NFS) transfer
 * location that you're using with DataSync.
 *
 * For more information, see Configuring transfers with an NFS
 * file server.
 */
export const updateLocationNfs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationNfsRequest,
    output: UpdateLocationNfsResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the object storage transfer location
 * that you're using with DataSync.
 *
 * For more information, see Configuring DataSync
 * transfers with an object storage system.
 */
export const updateLocationObjectStorage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationObjectStorageRequest,
    output: UpdateLocationObjectStorageResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Amazon S3 transfer location
 * that you're using with DataSync.
 *
 * Before you begin, make sure that you read the following topics:
 *
 * - Storage
 * class considerations with Amazon S3 locations
 *
 * - Evaluating S3 request costs when using DataSync
 */
export const updateLocationS3 = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationS3Request,
    output: UpdateLocationS3Response,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Modifies the following configuration parameters of the Server Message Block (SMB) transfer
 * location that you're using with DataSync.
 *
 * For more information, see Configuring DataSync
 * transfers with an SMB file server.
 */
export const updateLocationSmb = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateLocationSmbRequest,
    output: UpdateLocationSmbResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Updates the configuration of a *task*, which defines where and how
 * DataSync transfers your data.
 */
export const updateTask = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateTaskRequest,
    output: UpdateTaskResponse,
    errors: [InternalException, InvalidRequestException],
}));
/**
 * Updates the configuration of a running DataSync task execution.
 *
 * Currently, the only `Option` that you can modify with
 * `UpdateTaskExecution` is
 * BytesPerSecond
 * , which throttles bandwidth for a running or queued task
 * execution.
 */
export const updateTaskExecution = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateTaskExecutionRequest,
    output: UpdateTaskExecutionResponse,
    errors: [InternalException, InvalidRequestException],
}));
//# sourceMappingURL=datasync.js.map