import * as HttpClient from "effect/unstable/http/HttpClient";
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 * as C from "../category.js";
const ns = T.XmlNamespace("http://elasticbeanstalk.amazonaws.com/docs/2010-12-01/");
const svc = T.AwsApiService({
    sdkId: "Elastic Beanstalk",
    serviceShapeName: "AWSElasticBeanstalkService",
});
const auth = T.AwsAuthSigv4({ name: "elasticbeanstalk" });
const ver = T.ServiceVersion("2010-12-01");
const proto = T.AwsProtocolsAwsQuery();
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://elasticbeanstalk-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) {
                        if (_.getAttr(PartitionResult, "name") === "aws-us-gov") {
                            return e(`https://elasticbeanstalk.${Region}.amazonaws.com`);
                        }
                        return e(`https://elasticbeanstalk-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://elasticbeanstalk.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://elasticbeanstalk.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const AbortEnvironmentUpdateMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "AbortEnvironmentUpdateMessage",
});
export const AbortEnvironmentUpdateResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "AbortEnvironmentUpdateResponse",
});
export const ApplyEnvironmentManagedActionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentName: S.optional(S.String),
    EnvironmentId: S.optional(S.String),
    ActionId: S.String,
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ApplyEnvironmentManagedActionRequest",
});
export const ActionType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ApplyEnvironmentManagedActionResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionId: S.optional(S.String),
    ActionDescription: S.optional(S.String),
    ActionType: S.optional(ActionType),
    Status: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "ApplyEnvironmentManagedActionResult",
});
export const AssociateEnvironmentOperationsRoleMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ EnvironmentName: S.String, OperationsRole: S.String }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "AssociateEnvironmentOperationsRoleMessage",
});
export const AssociateEnvironmentOperationsRoleResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "AssociateEnvironmentOperationsRoleResponse",
});
export const CheckDNSAvailabilityMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ CNAMEPrefix: S.String }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CheckDNSAvailabilityMessage",
});
export const CheckDNSAvailabilityResultMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Available: S.optional(S.Boolean),
    FullyQualifiedCNAME: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "CheckDNSAvailabilityResultMessage",
});
export const VersionLabels = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ComposeEnvironmentsMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.optional(S.String),
    GroupName: S.optional(S.String),
    VersionLabels: S.optional(VersionLabels),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ComposeEnvironmentsMessage",
});
export const EnvironmentStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const EnvironmentHealth = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const EnvironmentHealthStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Listener = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Protocol: S.optional(S.String), Port: S.optional(S.Number) })).annotate({ identifier: "Listener" });
export const LoadBalancerListenersDescription = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(Listener);
export const LoadBalancerDescription = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LoadBalancerName: S.optional(S.String),
    Domain: S.optional(S.String),
    Listeners: S.optional(LoadBalancerListenersDescription),
})).annotate({
    identifier: "LoadBalancerDescription",
});
export const EnvironmentResourcesDescription = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LoadBalancer: S.optional(LoadBalancerDescription) })).annotate({
    identifier: "EnvironmentResourcesDescription",
});
export const EnvironmentTier = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: S.optional(S.String),
    Type: S.optional(S.String),
    Version: S.optional(S.String),
})).annotate({
    identifier: "EnvironmentTier",
});
export const EnvironmentLink = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LinkName: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
})).annotate({
    identifier: "EnvironmentLink",
});
export const EnvironmentLinks = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(EnvironmentLink);
export const EnvironmentDescription = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentName: S.optional(S.String),
    EnvironmentId: S.optional(S.String),
    ApplicationName: S.optional(S.String),
    VersionLabel: S.optional(S.String),
    SolutionStackName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    TemplateName: S.optional(S.String),
    Description: S.optional(S.String),
    EndpointURL: S.optional(S.String),
    CNAME: S.optional(S.String),
    DateCreated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    DateUpdated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    Status: S.optional(EnvironmentStatus),
    AbortableOperationInProgress: S.optional(S.Boolean),
    Health: S.optional(EnvironmentHealth),
    HealthStatus: S.optional(EnvironmentHealthStatus),
    Resources: S.optional(EnvironmentResourcesDescription),
    Tier: S.optional(EnvironmentTier),
    EnvironmentLinks: S.optional(EnvironmentLinks),
    EnvironmentArn: S.optional(S.String),
    OperationsRole: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "EnvironmentDescription",
});
export const EnvironmentDescriptionsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(EnvironmentDescription);
export const EnvironmentDescriptionsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Environments: S.optional(EnvironmentDescriptionsList),
    NextToken: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "EnvironmentDescriptionsMessage",
});
export const MaxCountRule = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Enabled: S.Boolean,
    MaxCount: S.optional(S.Number),
    DeleteSourceFromS3: S.optional(S.Boolean),
})).annotate({ identifier: "MaxCountRule" });
export const MaxAgeRule = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Enabled: S.Boolean,
    MaxAgeInDays: S.optional(S.Number),
    DeleteSourceFromS3: S.optional(S.Boolean),
})).annotate({ identifier: "MaxAgeRule" });
export const ApplicationVersionLifecycleConfig = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaxCountRule: S.optional(MaxCountRule),
    MaxAgeRule: S.optional(MaxAgeRule),
})).annotate({
    identifier: "ApplicationVersionLifecycleConfig",
});
export const ApplicationResourceLifecycleConfig = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ServiceRole: S.optional(S.String),
    VersionLifecycleConfig: S.optional(ApplicationVersionLifecycleConfig),
})).annotate({
    identifier: "ApplicationResourceLifecycleConfig",
});
export const Tag = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Key: S.optional(S.String), Value: S.optional(S.String) })).annotate({ identifier: "Tag" });
export const Tags = /*@__PURE__*/ /*#__PURE__*/ S.Array(Tag);
export const CreateApplicationMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    Description: S.optional(S.String),
    ResourceLifecycleConfig: S.optional(ApplicationResourceLifecycleConfig),
    Tags: S.optional(Tags),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateApplicationMessage",
});
export const VersionLabelsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ConfigurationTemplateNamesList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ApplicationDescription = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationArn: S.optional(S.String),
    ApplicationName: S.optional(S.String),
    Description: S.optional(S.String),
    DateCreated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    DateUpdated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    Versions: S.optional(VersionLabelsList),
    ConfigurationTemplates: S.optional(ConfigurationTemplateNamesList),
    ResourceLifecycleConfig: S.optional(ApplicationResourceLifecycleConfig),
})).annotate({
    identifier: "ApplicationDescription",
});
export const ApplicationDescriptionMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Application: S.optional(ApplicationDescription) }).pipe(ns)).annotate({
    identifier: "ApplicationDescriptionMessage",
});
export const SourceType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SourceRepository = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SourceBuildInformation = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SourceType: SourceType,
    SourceRepository: SourceRepository,
    SourceLocation: S.String,
})).annotate({
    identifier: "SourceBuildInformation",
});
export const S3Location = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ S3Bucket: S.optional(S.String), S3Key: S.optional(S.String) })).annotate({ identifier: "S3Location" });
export const ComputeType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const BuildConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ArtifactName: S.optional(S.String),
    CodeBuildServiceRole: S.String,
    ComputeType: S.optional(ComputeType),
    Image: S.String,
    TimeoutInMinutes: S.optional(S.Number),
})).annotate({
    identifier: "BuildConfiguration",
});
export const CreateApplicationVersionMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    VersionLabel: S.String,
    Description: S.optional(S.String),
    SourceBuildInformation: S.optional(SourceBuildInformation),
    SourceBundle: S.optional(S3Location),
    BuildConfiguration: S.optional(BuildConfiguration),
    AutoCreateApplication: S.optional(S.Boolean),
    Process: S.optional(S.Boolean),
    Tags: S.optional(Tags),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateApplicationVersionMessage",
});
export const ApplicationVersionStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ApplicationVersionDescription = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationVersionArn: S.optional(S.String),
    ApplicationName: S.optional(S.String),
    Description: S.optional(S.String),
    VersionLabel: S.optional(S.String),
    SourceBuildInformation: S.optional(SourceBuildInformation),
    BuildArn: S.optional(S.String),
    SourceBundle: S.optional(S3Location),
    DateCreated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    DateUpdated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    Status: S.optional(ApplicationVersionStatus),
})).annotate({
    identifier: "ApplicationVersionDescription",
});
export const ApplicationVersionDescriptionMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationVersion: S.optional(ApplicationVersionDescription),
}).pipe(ns)).annotate({
    identifier: "ApplicationVersionDescriptionMessage",
});
export const SourceConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.optional(S.String),
    TemplateName: S.optional(S.String),
})).annotate({
    identifier: "SourceConfiguration",
});
export const ConfigurationOptionSetting = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceName: S.optional(S.String),
    Namespace: S.optional(S.String),
    OptionName: S.optional(S.String),
    Value: S.optional(S.String),
})).annotate({
    identifier: "ConfigurationOptionSetting",
});
export const ConfigurationOptionSettingsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ConfigurationOptionSetting);
export const CreateConfigurationTemplateMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    TemplateName: S.String,
    SolutionStackName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    SourceConfiguration: S.optional(SourceConfiguration),
    EnvironmentId: S.optional(S.String),
    Description: S.optional(S.String),
    OptionSettings: S.optional(ConfigurationOptionSettingsList),
    Tags: S.optional(Tags),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateConfigurationTemplateMessage",
});
export const ConfigurationDeploymentStatus = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const ConfigurationSettingsDescription = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SolutionStackName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    ApplicationName: S.optional(S.String),
    TemplateName: S.optional(S.String),
    Description: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    DeploymentStatus: S.optional(ConfigurationDeploymentStatus),
    DateCreated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    DateUpdated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    OptionSettings: S.optional(ConfigurationOptionSettingsList),
}).pipe(ns)).annotate({
    identifier: "ConfigurationSettingsDescription",
});
export const OptionSpecification = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceName: S.optional(S.String),
    Namespace: S.optional(S.String),
    OptionName: S.optional(S.String),
})).annotate({
    identifier: "OptionSpecification",
});
export const OptionsSpecifierList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(OptionSpecification);
export const CreateEnvironmentMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    EnvironmentName: S.optional(S.String),
    GroupName: S.optional(S.String),
    Description: S.optional(S.String),
    CNAMEPrefix: S.optional(S.String),
    Tier: S.optional(EnvironmentTier),
    Tags: S.optional(Tags),
    VersionLabel: S.optional(S.String),
    TemplateName: S.optional(S.String),
    SolutionStackName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    OptionSettings: S.optional(ConfigurationOptionSettingsList),
    OptionsToRemove: S.optional(OptionsSpecifierList),
    OperationsRole: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateEnvironmentMessage",
});
export const CreatePlatformVersionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PlatformName: S.String,
    PlatformVersion: S.String,
    PlatformDefinitionBundle: S3Location,
    EnvironmentName: S.optional(S.String),
    OptionSettings: S.optional(ConfigurationOptionSettingsList),
    Tags: S.optional(Tags),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreatePlatformVersionRequest",
});
export const PlatformStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SupportedTierList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SupportedAddonList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const PlatformSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PlatformArn: S.optional(S.String),
    PlatformOwner: S.optional(S.String),
    PlatformStatus: S.optional(PlatformStatus),
    PlatformCategory: S.optional(S.String),
    OperatingSystemName: S.optional(S.String),
    OperatingSystemVersion: S.optional(S.String),
    SupportedTierList: S.optional(SupportedTierList),
    SupportedAddonList: S.optional(SupportedAddonList),
    PlatformLifecycleState: S.optional(S.String),
    PlatformVersion: S.optional(S.String),
    PlatformBranchName: S.optional(S.String),
    PlatformBranchLifecycleState: S.optional(S.String),
})).annotate({
    identifier: "PlatformSummary",
});
export const Builder = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ARN: S.optional(S.String) })).annotate({ identifier: "Builder" });
export const CreatePlatformVersionResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PlatformSummary: S.optional(PlatformSummary),
    Builder: S.optional(Builder),
}).pipe(ns)).annotate({
    identifier: "CreatePlatformVersionResult",
});
export const CreateStorageLocationRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateStorageLocationRequest",
});
export const CreateStorageLocationResultMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ S3Bucket: S.optional(S.String) }).pipe(ns)).annotate({
    identifier: "CreateStorageLocationResultMessage",
});
export const DeleteApplicationMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    TerminateEnvByForce: S.optional(S.Boolean),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteApplicationMessage",
});
export const DeleteApplicationResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "DeleteApplicationResponse",
});
export const DeleteApplicationVersionMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    VersionLabel: S.String,
    DeleteSourceBundle: S.optional(S.Boolean),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteApplicationVersionMessage",
});
export const DeleteApplicationVersionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "DeleteApplicationVersionResponse",
});
export const DeleteConfigurationTemplateMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ApplicationName: S.String, TemplateName: S.String }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteConfigurationTemplateMessage",
});
export const DeleteConfigurationTemplateResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "DeleteConfigurationTemplateResponse",
});
export const DeleteEnvironmentConfigurationMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ApplicationName: S.String, EnvironmentName: S.String }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteEnvironmentConfigurationMessage",
});
export const DeleteEnvironmentConfigurationResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "DeleteEnvironmentConfigurationResponse",
});
export const DeletePlatformVersionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ PlatformArn: S.optional(S.String) }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeletePlatformVersionRequest",
});
export const DeletePlatformVersionResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ PlatformSummary: S.optional(PlatformSummary) }).pipe(ns)).annotate({
    identifier: "DeletePlatformVersionResult",
});
export const DescribeAccountAttributesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeAccountAttributesRequest",
});
export const ResourceQuota = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Maximum: S.optional(S.Number) })).annotate({ identifier: "ResourceQuota" });
export const ResourceQuotas = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationQuota: S.optional(ResourceQuota),
    ApplicationVersionQuota: S.optional(ResourceQuota),
    EnvironmentQuota: S.optional(ResourceQuota),
    ConfigurationTemplateQuota: S.optional(ResourceQuota),
    CustomPlatformQuota: S.optional(ResourceQuota),
})).annotate({ identifier: "ResourceQuotas" });
export const DescribeAccountAttributesResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceQuotas: S.optional(ResourceQuotas) }).pipe(ns)).annotate({
    identifier: "DescribeAccountAttributesResult",
});
export const ApplicationNamesList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const DescribeApplicationsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ApplicationNames: S.optional(ApplicationNamesList) }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeApplicationsMessage",
});
export const ApplicationDescriptionList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ApplicationDescription);
export const ApplicationDescriptionsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Applications: S.optional(ApplicationDescriptionList) }).pipe(ns)).annotate({
    identifier: "ApplicationDescriptionsMessage",
});
export const DescribeApplicationVersionsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.optional(S.String),
    VersionLabels: S.optional(VersionLabelsList),
    MaxRecords: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeApplicationVersionsMessage",
});
export const ApplicationVersionDescriptionList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ApplicationVersionDescription);
export const ApplicationVersionDescriptionsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationVersions: S.optional(ApplicationVersionDescriptionList),
    NextToken: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "ApplicationVersionDescriptionsMessage",
});
export const DescribeConfigurationOptionsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.optional(S.String),
    TemplateName: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    SolutionStackName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    Options: S.optional(OptionsSpecifierList),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeConfigurationOptionsMessage",
});
export const ConfigurationOptionValueType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const ConfigurationOptionPossibleValues = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const OptionRestrictionRegex = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Pattern: S.optional(S.String), Label: S.optional(S.String) })).annotate({
    identifier: "OptionRestrictionRegex",
});
export const ConfigurationOptionDescription = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Namespace: S.optional(S.String),
    Name: S.optional(S.String),
    DefaultValue: S.optional(S.String),
    ChangeSeverity: S.optional(S.String),
    UserDefined: S.optional(S.Boolean),
    ValueType: S.optional(ConfigurationOptionValueType),
    ValueOptions: S.optional(ConfigurationOptionPossibleValues),
    MinValue: S.optional(S.Number),
    MaxValue: S.optional(S.Number),
    MaxLength: S.optional(S.Number),
    Regex: S.optional(OptionRestrictionRegex),
})).annotate({
    identifier: "ConfigurationOptionDescription",
});
export const ConfigurationOptionDescriptionsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ConfigurationOptionDescription);
export const ConfigurationOptionsDescription = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SolutionStackName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    Options: S.optional(ConfigurationOptionDescriptionsList),
}).pipe(ns)).annotate({
    identifier: "ConfigurationOptionsDescription",
});
export const DescribeConfigurationSettingsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    TemplateName: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeConfigurationSettingsMessage",
});
export const ConfigurationSettingsDescriptionList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ConfigurationSettingsDescription);
export const ConfigurationSettingsDescriptions = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ConfigurationSettings: S.optional(ConfigurationSettingsDescriptionList),
}).pipe(ns)).annotate({
    identifier: "ConfigurationSettingsDescriptions",
});
export const EnvironmentHealthAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const EnvironmentHealthAttributes = /*@__PURE__*/ /*#__PURE__*/ S.Array(EnvironmentHealthAttribute);
export const DescribeEnvironmentHealthRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentName: S.optional(S.String),
    EnvironmentId: S.optional(S.String),
    AttributeNames: S.optional(EnvironmentHealthAttributes),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeEnvironmentHealthRequest",
});
export const Causes = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const StatusCodes = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Status2xx: S.optional(S.Number),
    Status3xx: S.optional(S.Number),
    Status4xx: S.optional(S.Number),
    Status5xx: S.optional(S.Number),
})).annotate({ identifier: "StatusCodes" });
export const Latency = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    P999: S.optional(S.Number),
    P99: S.optional(S.Number),
    P95: S.optional(S.Number),
    P90: S.optional(S.Number),
    P85: S.optional(S.Number),
    P75: S.optional(S.Number),
    P50: S.optional(S.Number),
    P10: S.optional(S.Number),
})).annotate({ identifier: "Latency" });
export const ApplicationMetrics = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Duration: S.optional(S.Number),
    RequestCount: S.optional(S.Number),
    StatusCodes: S.optional(StatusCodes),
    Latency: S.optional(Latency),
})).annotate({
    identifier: "ApplicationMetrics",
});
export const InstanceHealthSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NoData: S.optional(S.Number),
    Unknown: S.optional(S.Number),
    Pending: S.optional(S.Number),
    Ok: S.optional(S.Number),
    Info: S.optional(S.Number),
    Warning: S.optional(S.Number),
    Degraded: S.optional(S.Number),
    Severe: S.optional(S.Number),
})).annotate({
    identifier: "InstanceHealthSummary",
});
export const DescribeEnvironmentHealthResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentName: S.optional(S.String),
    HealthStatus: S.optional(S.String),
    Status: S.optional(EnvironmentHealth),
    Color: S.optional(S.String),
    Causes: S.optional(Causes),
    ApplicationMetrics: S.optional(ApplicationMetrics),
    InstancesHealth: S.optional(InstanceHealthSummary),
    RefreshedAt: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
}).pipe(ns)).annotate({
    identifier: "DescribeEnvironmentHealthResult",
});
export const DescribeEnvironmentManagedActionHistoryRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    NextToken: S.optional(S.String),
    MaxItems: S.optional(S.Number),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeEnvironmentManagedActionHistoryRequest",
});
export const FailureType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ActionHistoryStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ManagedActionHistoryItem = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionId: S.optional(S.String),
    ActionType: S.optional(ActionType),
    ActionDescription: S.optional(S.String),
    FailureType: S.optional(FailureType),
    Status: S.optional(ActionHistoryStatus),
    FailureDescription: S.optional(S.String),
    ExecutedTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    FinishedTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
})).annotate({
    identifier: "ManagedActionHistoryItem",
});
export const ManagedActionHistoryItems = /*@__PURE__*/ /*#__PURE__*/ S.Array(ManagedActionHistoryItem);
export const DescribeEnvironmentManagedActionHistoryResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManagedActionHistoryItems: S.optional(ManagedActionHistoryItems),
    NextToken: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "DescribeEnvironmentManagedActionHistoryResult",
});
export const ActionStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DescribeEnvironmentManagedActionsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentName: S.optional(S.String),
    EnvironmentId: S.optional(S.String),
    Status: S.optional(ActionStatus),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeEnvironmentManagedActionsRequest",
});
export const ManagedAction = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ActionId: S.optional(S.String),
    ActionDescription: S.optional(S.String),
    ActionType: S.optional(ActionType),
    Status: S.optional(ActionStatus),
    WindowStartTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
})).annotate({ identifier: "ManagedAction" });
export const ManagedActions = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ManagedAction);
export const DescribeEnvironmentManagedActionsResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ManagedActions: S.optional(ManagedActions) }).pipe(ns)).annotate({
    identifier: "DescribeEnvironmentManagedActionsResult",
});
export const DescribeEnvironmentResourcesMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeEnvironmentResourcesMessage",
});
export const AutoScalingGroup = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String) })).annotate({
    identifier: "AutoScalingGroup",
});
export const AutoScalingGroupList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AutoScalingGroup);
export const Instance = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Id: S.optional(S.String) })).annotate({ identifier: "Instance" });
export const InstanceList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Instance);
export const LaunchConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String) })).annotate({
    identifier: "LaunchConfiguration",
});
export const LaunchConfigurationList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(LaunchConfiguration);
export const LaunchTemplate = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Id: S.optional(S.String) })).annotate({ identifier: "LaunchTemplate" });
export const LaunchTemplateList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(LaunchTemplate);
export const LoadBalancer = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String) })).annotate({ identifier: "LoadBalancer" });
export const LoadBalancerList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(LoadBalancer);
export const Trigger = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String) })).annotate({ identifier: "Trigger" });
export const TriggerList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Trigger);
export const Queue = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String), URL: S.optional(S.String) })).annotate({ identifier: "Queue" });
export const QueueList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Queue);
export const EnvironmentResourceDescription = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentName: S.optional(S.String),
    AutoScalingGroups: S.optional(AutoScalingGroupList),
    Instances: S.optional(InstanceList),
    LaunchConfigurations: S.optional(LaunchConfigurationList),
    LaunchTemplates: S.optional(LaunchTemplateList),
    LoadBalancers: S.optional(LoadBalancerList),
    Triggers: S.optional(TriggerList),
    Queues: S.optional(QueueList),
})).annotate({
    identifier: "EnvironmentResourceDescription",
});
export const EnvironmentResourceDescriptionsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentResources: S.optional(EnvironmentResourceDescription),
}).pipe(ns)).annotate({
    identifier: "EnvironmentResourceDescriptionsMessage",
});
export const EnvironmentIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const EnvironmentNamesList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const DescribeEnvironmentsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.optional(S.String),
    VersionLabel: S.optional(S.String),
    EnvironmentIds: S.optional(EnvironmentIdList),
    EnvironmentNames: S.optional(EnvironmentNamesList),
    IncludeDeleted: S.optional(S.Boolean),
    IncludedDeletedBackTo: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    MaxRecords: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeEnvironmentsMessage",
});
export const EventSeverity = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DescribeEventsMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.optional(S.String),
    VersionLabel: S.optional(S.String),
    TemplateName: S.optional(S.String),
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    RequestId: S.optional(S.String),
    Severity: S.optional(EventSeverity),
    StartTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    EndTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    MaxRecords: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeEventsMessage",
});
export const EventDescription = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EventDate: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    Message: S.optional(S.String),
    ApplicationName: S.optional(S.String),
    VersionLabel: S.optional(S.String),
    TemplateName: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    RequestId: S.optional(S.String),
    Severity: S.optional(EventSeverity),
})).annotate({
    identifier: "EventDescription",
});
export const EventDescriptionList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(EventDescription);
export const EventDescriptionsMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Events: S.optional(EventDescriptionList),
    NextToken: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "EventDescriptionsMessage",
});
export const InstancesHealthAttribute = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const InstancesHealthAttributes = /*@__PURE__*/ /*#__PURE__*/ S.Array(InstancesHealthAttribute);
export const DescribeInstancesHealthRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentName: S.optional(S.String),
    EnvironmentId: S.optional(S.String),
    AttributeNames: S.optional(InstancesHealthAttributes),
    NextToken: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeInstancesHealthRequest",
});
export const CPUUtilization = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    User: S.optional(S.Number),
    Nice: S.optional(S.Number),
    System: S.optional(S.Number),
    Idle: S.optional(S.Number),
    IOWait: S.optional(S.Number),
    IRQ: S.optional(S.Number),
    SoftIRQ: S.optional(S.Number),
    Privileged: S.optional(S.Number),
})).annotate({ identifier: "CPUUtilization" });
export const LoadAverage = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.Number);
export const SystemStatus = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CPUUtilization: S.optional(CPUUtilization),
    LoadAverage: S.optional(LoadAverage),
})).annotate({ identifier: "SystemStatus" });
export const Deployment = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    VersionLabel: S.optional(S.String),
    DeploymentId: S.optional(S.Number),
    Status: S.optional(S.String),
    DeploymentTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
})).annotate({ identifier: "Deployment" });
export const SingleInstanceHealth = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InstanceId: S.optional(S.String),
    HealthStatus: S.optional(S.String),
    Color: S.optional(S.String),
    Causes: S.optional(Causes),
    LaunchedAt: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    ApplicationMetrics: S.optional(ApplicationMetrics),
    System: S.optional(SystemStatus),
    Deployment: S.optional(Deployment),
    AvailabilityZone: S.optional(S.String),
    InstanceType: S.optional(S.String),
})).annotate({
    identifier: "SingleInstanceHealth",
});
export const InstanceHealthList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SingleInstanceHealth);
export const DescribeInstancesHealthResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InstanceHealthList: S.optional(InstanceHealthList),
    RefreshedAt: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    NextToken: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "DescribeInstancesHealthResult",
});
export const DescribePlatformVersionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ PlatformArn: S.optional(S.String) }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribePlatformVersionRequest",
});
export const PlatformProgrammingLanguage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String), Version: S.optional(S.String) })).annotate({
    identifier: "PlatformProgrammingLanguage",
});
export const PlatformProgrammingLanguages = /*@__PURE__*/ /*#__PURE__*/ S.Array(PlatformProgrammingLanguage);
export const PlatformFramework = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Name: S.optional(S.String), Version: S.optional(S.String) })).annotate({
    identifier: "PlatformFramework",
});
export const PlatformFrameworks = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(PlatformFramework);
export const CustomAmi = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    VirtualizationType: S.optional(S.String),
    ImageId: S.optional(S.String),
})).annotate({ identifier: "CustomAmi" });
export const CustomAmiList = /*@__PURE__*/ /*#__PURE__*/ S.Array(CustomAmi);
export const PlatformDescription = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PlatformArn: S.optional(S.String),
    PlatformOwner: S.optional(S.String),
    PlatformName: S.optional(S.String),
    PlatformVersion: S.optional(S.String),
    SolutionStackName: S.optional(S.String),
    PlatformStatus: S.optional(PlatformStatus),
    DateCreated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    DateUpdated: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    PlatformCategory: S.optional(S.String),
    Description: S.optional(S.String),
    Maintainer: S.optional(S.String),
    OperatingSystemName: S.optional(S.String),
    OperatingSystemVersion: S.optional(S.String),
    ProgrammingLanguages: S.optional(PlatformProgrammingLanguages),
    Frameworks: S.optional(PlatformFrameworks),
    CustomAmiList: S.optional(CustomAmiList),
    SupportedTierList: S.optional(SupportedTierList),
    SupportedAddonList: S.optional(SupportedAddonList),
    PlatformLifecycleState: S.optional(S.String),
    PlatformBranchName: S.optional(S.String),
    PlatformBranchLifecycleState: S.optional(S.String),
})).annotate({
    identifier: "PlatformDescription",
});
export const DescribePlatformVersionResult = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ PlatformDescription: S.optional(PlatformDescription) }).pipe(ns)).annotate({
    identifier: "DescribePlatformVersionResult",
});
export const DisassociateEnvironmentOperationsRoleMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ EnvironmentName: S.String }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DisassociateEnvironmentOperationsRoleMessage",
});
export const DisassociateEnvironmentOperationsRoleResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "DisassociateEnvironmentOperationsRoleResponse",
});
export const ListAvailableSolutionStacksRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAvailableSolutionStacksRequest",
});
export const AvailableSolutionStackNamesList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SolutionStackFileTypeList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SolutionStackDescription = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SolutionStackName: S.optional(S.String),
    PermittedFileTypes: S.optional(SolutionStackFileTypeList),
})).annotate({
    identifier: "SolutionStackDescription",
});
export const AvailableSolutionStackDetailsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SolutionStackDescription);
export const ListAvailableSolutionStacksResultMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SolutionStacks: S.optional(AvailableSolutionStackNamesList),
    SolutionStackDetails: S.optional(AvailableSolutionStackDetailsList),
}).pipe(ns)).annotate({
    identifier: "ListAvailableSolutionStacksResultMessage",
});
export const SearchFilterValues = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SearchFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Attribute: S.optional(S.String),
    Operator: S.optional(S.String),
    Values: S.optional(SearchFilterValues),
})).annotate({ identifier: "SearchFilter" });
export const SearchFilters = /*@__PURE__*/ /*#__PURE__*/ S.Array(SearchFilter);
export const ListPlatformBranchesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Filters: S.optional(SearchFilters),
    MaxRecords: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListPlatformBranchesRequest",
});
export const PlatformBranchSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PlatformName: S.optional(S.String),
    BranchName: S.optional(S.String),
    LifecycleState: S.optional(S.String),
    BranchOrder: S.optional(S.Number),
    SupportedTierList: S.optional(SupportedTierList),
})).annotate({
    identifier: "PlatformBranchSummary",
});
export const PlatformBranchSummaryList = /*@__PURE__*/ /*#__PURE__*/ S.Array(PlatformBranchSummary);
export const ListPlatformBranchesResult = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PlatformBranchSummaryList: S.optional(PlatformBranchSummaryList),
    NextToken: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "ListPlatformBranchesResult",
});
export const PlatformFilterValueList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const PlatformFilter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Type: S.optional(S.String),
    Operator: S.optional(S.String),
    Values: S.optional(PlatformFilterValueList),
})).annotate({ identifier: "PlatformFilter" });
export const PlatformFilters = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(PlatformFilter);
export const ListPlatformVersionsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Filters: S.optional(PlatformFilters),
    MaxRecords: S.optional(S.Number),
    NextToken: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListPlatformVersionsRequest",
});
export const PlatformSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(PlatformSummary);
export const ListPlatformVersionsResult = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PlatformSummaryList: S.optional(PlatformSummaryList),
    NextToken: S.optional(S.String),
}).pipe(ns)).annotate({
    identifier: "ListPlatformVersionsResult",
});
export const ListTagsForResourceMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String }).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTagsForResourceMessage",
});
export const TagList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Tag);
export const ResourceTagsDescriptionMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceArn: S.optional(S.String),
    ResourceTags: S.optional(TagList),
}).pipe(ns)).annotate({
    identifier: "ResourceTagsDescriptionMessage",
});
export const RebuildEnvironmentMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "RebuildEnvironmentMessage",
});
export const RebuildEnvironmentResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "RebuildEnvironmentResponse",
});
export const EnvironmentInfoType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const RequestEnvironmentInfoMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    InfoType: EnvironmentInfoType,
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "RequestEnvironmentInfoMessage",
});
export const RequestEnvironmentInfoResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "RequestEnvironmentInfoResponse",
});
export const RestartAppServerMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "RestartAppServerMessage",
});
export const RestartAppServerResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "RestartAppServerResponse",
});
export const RetrieveEnvironmentInfoMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    InfoType: EnvironmentInfoType,
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "RetrieveEnvironmentInfoMessage",
});
export const EnvironmentInfoDescription = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InfoType: S.optional(EnvironmentInfoType),
    Ec2InstanceId: S.optional(S.String),
    SampleTimestamp: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    Message: S.optional(S.String),
})).annotate({
    identifier: "EnvironmentInfoDescription",
});
export const EnvironmentInfoDescriptionList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(EnvironmentInfoDescription);
export const RetrieveEnvironmentInfoResultMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentInfo: S.optional(EnvironmentInfoDescriptionList),
}).pipe(ns)).annotate({
    identifier: "RetrieveEnvironmentInfoResultMessage",
});
export const SwapEnvironmentCNAMEsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SourceEnvironmentId: S.optional(S.String),
    SourceEnvironmentName: S.optional(S.String),
    DestinationEnvironmentId: S.optional(S.String),
    DestinationEnvironmentName: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "SwapEnvironmentCNAMEsMessage",
});
export const SwapEnvironmentCNAMEsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "SwapEnvironmentCNAMEsResponse",
});
export const TerminateEnvironmentMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    TerminateResources: S.optional(S.Boolean),
    ForceTerminate: S.optional(S.Boolean),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "TerminateEnvironmentMessage",
});
export const UpdateApplicationMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    Description: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateApplicationMessage",
});
export const UpdateApplicationResourceLifecycleMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    ResourceLifecycleConfig: ApplicationResourceLifecycleConfig,
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateApplicationResourceLifecycleMessage",
});
export const ApplicationResourceLifecycleDescriptionMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.optional(S.String),
    ResourceLifecycleConfig: S.optional(ApplicationResourceLifecycleConfig),
}).pipe(ns)).annotate({
    identifier: "ApplicationResourceLifecycleDescriptionMessage",
});
export const UpdateApplicationVersionMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    VersionLabel: S.String,
    Description: S.optional(S.String),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateApplicationVersionMessage",
});
export const UpdateConfigurationTemplateMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    TemplateName: S.String,
    Description: S.optional(S.String),
    OptionSettings: S.optional(ConfigurationOptionSettingsList),
    OptionsToRemove: S.optional(OptionsSpecifierList),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateConfigurationTemplateMessage",
});
export const UpdateEnvironmentMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.optional(S.String),
    EnvironmentId: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    GroupName: S.optional(S.String),
    Description: S.optional(S.String),
    Tier: S.optional(EnvironmentTier),
    VersionLabel: S.optional(S.String),
    TemplateName: S.optional(S.String),
    SolutionStackName: S.optional(S.String),
    PlatformArn: S.optional(S.String),
    OptionSettings: S.optional(ConfigurationOptionSettingsList),
    OptionsToRemove: S.optional(OptionsSpecifierList),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateEnvironmentMessage",
});
export const TagKeyList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const UpdateTagsForResourceMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceArn: S.String,
    TagsToAdd: S.optional(TagList),
    TagsToRemove: S.optional(TagKeyList),
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateTagsForResourceMessage",
});
export const UpdateTagsForResourceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({}).pipe(ns)).annotate({
    identifier: "UpdateTagsForResourceResponse",
});
export const ValidateConfigurationSettingsMessage = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ApplicationName: S.String,
    TemplateName: S.optional(S.String),
    EnvironmentName: S.optional(S.String),
    OptionSettings: ConfigurationOptionSettingsList,
}).pipe(T.all(ns, T.Http({ method: "POST", uri: "/" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ValidateConfigurationSettingsMessage",
});
export const ValidationSeverity = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ValidationMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Message: S.optional(S.String),
    Severity: S.optional(ValidationSeverity),
    Namespace: S.optional(S.String),
    OptionName: S.optional(S.String),
})).annotate({
    identifier: "ValidationMessage",
});
export const ValidationMessagesList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ValidationMessage);
export const ConfigurationSettingsValidationMessages = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Messages: S.optional(ValidationMessagesList) }).pipe(ns)).annotate({
    identifier: "ConfigurationSettingsValidationMessages",
});
//# Errors
export class InsufficientPrivilegesException extends S.TaggedErrorClass()("InsufficientPrivilegesException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "InsufficientPrivilegesException",
    httpResponseCode: 403,
})).pipe(C.withAuthError) {
}
export class ElasticBeanstalkServiceException extends S.TaggedErrorClass()("ElasticBeanstalkServiceException", { message: S.optional(S.String) }) {
}
export class ManagedActionInvalidStateException extends S.TaggedErrorClass()("ManagedActionInvalidStateException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "ManagedActionInvalidStateException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class TooManyEnvironmentsException extends S.TaggedErrorClass()("TooManyEnvironmentsException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "TooManyEnvironmentsException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class TooManyApplicationsException extends S.TaggedErrorClass()("TooManyApplicationsException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "TooManyApplicationsException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class CodeBuildNotInServiceRegionException extends S.TaggedErrorClass()("CodeBuildNotInServiceRegionException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "CodeBuildNotInServiceRegionException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class S3LocationNotInServiceRegionException extends S.TaggedErrorClass()("S3LocationNotInServiceRegionException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "S3LocationNotInServiceRegionException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class TooManyApplicationVersionsException extends S.TaggedErrorClass()("TooManyApplicationVersionsException", { message: S.optional(S.String) }) {
}
export class TooManyBucketsException extends S.TaggedErrorClass()("TooManyBucketsException", { message: S.optional(S.String) }, T.AwsQueryError({ code: "TooManyBucketsException", httpResponseCode: 400 })).pipe(C.withBadRequestError) {
}
export class TooManyConfigurationTemplatesException extends S.TaggedErrorClass()("TooManyConfigurationTemplatesException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "TooManyConfigurationTemplatesException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class TooManyPlatformsException extends S.TaggedErrorClass()("TooManyPlatformsException", { message: S.optional(S.String) }, T.AwsQueryError({ code: "TooManyPlatformsException", httpResponseCode: 400 })).pipe(C.withBadRequestError) {
}
export class S3SubscriptionRequiredException extends S.TaggedErrorClass()("S3SubscriptionRequiredException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "S3SubscriptionRequiredException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class OperationInProgressException extends S.TaggedErrorClass()("OperationInProgressException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "OperationInProgressFailure",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class SourceBundleDeletionException extends S.TaggedErrorClass()("SourceBundleDeletionException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "SourceBundleDeletionFailure",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class PlatformVersionStillReferencedException extends S.TaggedErrorClass()("PlatformVersionStillReferencedException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "PlatformVersionStillReferencedException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class InvalidRequestException extends S.TaggedErrorClass()("InvalidRequestException", { message: S.optional(S.String) }, T.AwsQueryError({ code: "InvalidRequestException", httpResponseCode: 400 })).pipe(C.withBadRequestError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", { message: S.optional(S.String) }, T.AwsQueryError({ code: "ResourceNotFoundException", httpResponseCode: 400 })).pipe(C.withBadRequestError) {
}
export class ResourceTypeNotSupportedException extends S.TaggedErrorClass()("ResourceTypeNotSupportedException", { message: S.optional(S.String) }, T.AwsQueryError({
    code: "ResourceTypeNotSupportedException",
    httpResponseCode: 400,
})).pipe(C.withBadRequestError) {
}
export class TooManyTagsException extends S.TaggedErrorClass()("TooManyTagsException", { message: S.optional(S.String) }, T.AwsQueryError({ code: "TooManyTagsException", httpResponseCode: 400 })).pipe(C.withBadRequestError) {
}
/**
 * Cancels in-progress environment configuration update or application version
 * deployment.
 */
export const abortEnvironmentUpdate = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: AbortEnvironmentUpdateMessage,
    output: AbortEnvironmentUpdateResponse,
    errors: [InsufficientPrivilegesException],
}));
/**
 * Applies a scheduled managed action immediately. A managed action can be applied only if
 * its status is `Scheduled`. Get the status and action ID of a managed action with
 * DescribeEnvironmentManagedActions.
 */
export const applyEnvironmentManagedAction = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ApplyEnvironmentManagedActionRequest,
    output: ApplyEnvironmentManagedActionResult,
    errors: [
        ElasticBeanstalkServiceException,
        ManagedActionInvalidStateException,
    ],
}));
/**
 * Add or change the operations role used by an environment. After this call is made, Elastic Beanstalk
 * uses the associated operations role for permissions to downstream services during subsequent
 * calls acting on this environment. For more information, see Operations roles in the
 * *AWS Elastic Beanstalk Developer Guide*.
 */
export const associateEnvironmentOperationsRole = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: AssociateEnvironmentOperationsRoleMessage,
    output: AssociateEnvironmentOperationsRoleResponse,
    errors: [InsufficientPrivilegesException],
}));
/**
 * Checks if the specified CNAME is available.
 */
export const checkDNSAvailability = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CheckDNSAvailabilityMessage,
    output: CheckDNSAvailabilityResultMessage,
    errors: [],
}));
/**
 * Create or update a group of environments that each run a separate component of a single
 * application. Takes a list of version labels that specify application source bundles for each
 * of the environments to create or update. The name of each environment and other required
 * information must be included in the source bundles in an environment manifest named
 * `env.yaml`. See Compose Environments
 * for details.
 */
export const composeEnvironments = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ComposeEnvironmentsMessage,
    output: EnvironmentDescriptionsMessage,
    errors: [InsufficientPrivilegesException, TooManyEnvironmentsException],
}));
/**
 * Creates an application that has one configuration template named `default`
 * and no application versions.
 */
export const createApplication = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateApplicationMessage,
    output: ApplicationDescriptionMessage,
    errors: [TooManyApplicationsException],
}));
/**
 * Creates an application version for the specified application. You can create an
 * application version from a source bundle in Amazon S3, a commit in AWS CodeCommit, or the
 * output of an AWS CodeBuild build as follows:
 *
 * Specify a commit in an AWS CodeCommit repository with
 * `SourceBuildInformation`.
 *
 * Specify a build in an AWS CodeBuild with `SourceBuildInformation` and
 * `BuildConfiguration`.
 *
 * Specify a source bundle in S3 with `SourceBundle`
 *
 * Omit both `SourceBuildInformation` and `SourceBundle` to use the
 * default sample application.
 *
 * After you create an application version with a specified Amazon S3 bucket and key
 * location, you can't change that Amazon S3 location. If you change the Amazon S3 location,
 * you receive an exception when you attempt to launch an environment from the application
 * version.
 */
export const createApplicationVersion = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateApplicationVersionMessage,
    output: ApplicationVersionDescriptionMessage,
    errors: [
        CodeBuildNotInServiceRegionException,
        InsufficientPrivilegesException,
        S3LocationNotInServiceRegionException,
        TooManyApplicationsException,
        TooManyApplicationVersionsException,
    ],
}));
/**
 * Creates an AWS Elastic Beanstalk configuration template, associated with a specific Elastic Beanstalk
 * application. You define application configuration settings in a configuration template. You
 * can then use the configuration template to deploy different versions of the application with
 * the same configuration settings.
 *
 * Templates aren't associated with any environment. The `EnvironmentName`
 * response element is always `null`.
 *
 * Related Topics
 *
 * - DescribeConfigurationOptions
 *
 * - DescribeConfigurationSettings
 *
 * - ListAvailableSolutionStacks
 */
export const createConfigurationTemplate = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateConfigurationTemplateMessage,
    output: ConfigurationSettingsDescription,
    errors: [
        InsufficientPrivilegesException,
        TooManyBucketsException,
        TooManyConfigurationTemplatesException,
    ],
}));
/**
 * Launches an AWS Elastic Beanstalk environment for the specified application using the specified
 * configuration.
 */
export const createEnvironment = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateEnvironmentMessage,
    output: EnvironmentDescription,
    errors: [InsufficientPrivilegesException, TooManyEnvironmentsException],
}));
/**
 * Create a new version of your custom platform.
 */
export const createPlatformVersion = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreatePlatformVersionRequest,
    output: CreatePlatformVersionResult,
    errors: [
        ElasticBeanstalkServiceException,
        InsufficientPrivilegesException,
        TooManyPlatformsException,
    ],
}));
/**
 * Creates a bucket in Amazon S3 to store application versions, logs, and other files used
 * by Elastic Beanstalk environments. The Elastic Beanstalk console and EB CLI call this API the
 * first time you create an environment in a region. If the storage location already exists,
 * `CreateStorageLocation` still returns the bucket name but does not create a new
 * bucket.
 */
export const createStorageLocation = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateStorageLocationRequest,
    output: CreateStorageLocationResultMessage,
    errors: [
        InsufficientPrivilegesException,
        S3SubscriptionRequiredException,
        TooManyBucketsException,
    ],
}));
/**
 * Deletes the specified application along with all associated versions and
 * configurations. The application versions will not be deleted from your Amazon S3
 * bucket.
 *
 * You cannot delete an application that has a running environment.
 */
export const deleteApplication = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteApplicationMessage,
    output: DeleteApplicationResponse,
    errors: [OperationInProgressException],
}));
/**
 * Deletes the specified version from the specified application.
 *
 * You cannot delete an application version that is associated with a running
 * environment.
 */
export const deleteApplicationVersion = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteApplicationVersionMessage,
    output: DeleteApplicationVersionResponse,
    errors: [
        InsufficientPrivilegesException,
        OperationInProgressException,
        S3LocationNotInServiceRegionException,
        SourceBundleDeletionException,
    ],
}));
/**
 * Deletes the specified configuration template.
 *
 * When you launch an environment using a configuration template, the environment gets a
 * copy of the template. You can delete or modify the environment's copy of the template
 * without affecting the running environment.
 */
export const deleteConfigurationTemplate = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteConfigurationTemplateMessage,
    output: DeleteConfigurationTemplateResponse,
    errors: [OperationInProgressException],
}));
/**
 * Deletes the draft configuration associated with the running environment.
 *
 * Updating a running environment with any configuration changes creates a draft
 * configuration set. You can get the draft configuration using DescribeConfigurationSettings while the update is in progress or if the update
 * fails. The `DeploymentStatus` for the draft configuration indicates whether the
 * deployment is in process or has failed. The draft configuration remains in existence until it
 * is deleted with this action.
 */
export const deleteEnvironmentConfiguration = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteEnvironmentConfigurationMessage,
    output: DeleteEnvironmentConfigurationResponse,
    errors: [],
}));
/**
 * Deletes the specified version of a custom platform.
 */
export const deletePlatformVersion = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeletePlatformVersionRequest,
    output: DeletePlatformVersionResult,
    errors: [
        ElasticBeanstalkServiceException,
        InsufficientPrivilegesException,
        OperationInProgressException,
        PlatformVersionStillReferencedException,
    ],
}));
/**
 * Returns attributes related to AWS Elastic Beanstalk that are associated with the calling AWS
 * account.
 *
 * The result currently has one set of attributes—resource quotas.
 */
export const describeAccountAttributes = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeAccountAttributesRequest,
    output: DescribeAccountAttributesResult,
    errors: [InsufficientPrivilegesException],
}));
/**
 * Returns the descriptions of existing applications.
 */
export const describeApplications = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeApplicationsMessage,
    output: ApplicationDescriptionsMessage,
    errors: [],
}));
/**
 * Retrieve a list of application versions.
 */
export const describeApplicationVersions = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeApplicationVersionsMessage,
    output: ApplicationVersionDescriptionsMessage,
    errors: [],
}));
/**
 * Describes the configuration options that are used in a particular configuration
 * template or environment, or that a specified solution stack defines. The description includes
 * the values the options, their default values, and an indication of the required action on a
 * running environment if an option value is changed.
 */
export const describeConfigurationOptions = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeConfigurationOptionsMessage,
    output: ConfigurationOptionsDescription,
    errors: [TooManyBucketsException],
}));
/**
 * Returns a description of the settings for the specified configuration set, that is,
 * either a configuration template or the configuration set associated with a running
 * environment.
 *
 * When describing the settings for the configuration set associated with a running
 * environment, it is possible to receive two sets of setting descriptions. One is the deployed
 * configuration set, and the other is a draft configuration of an environment that is either in
 * the process of deployment or that failed to deploy.
 *
 * Related Topics
 *
 * - DeleteEnvironmentConfiguration
 */
export const describeConfigurationSettings = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeConfigurationSettingsMessage,
    output: ConfigurationSettingsDescriptions,
    errors: [TooManyBucketsException],
}));
/**
 * Returns information about the overall health of the specified environment. The
 * **DescribeEnvironmentHealth** operation is only available with
 * AWS Elastic Beanstalk Enhanced Health.
 */
export const describeEnvironmentHealth = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeEnvironmentHealthRequest,
    output: DescribeEnvironmentHealthResult,
    errors: [ElasticBeanstalkServiceException, InvalidRequestException],
}));
/**
 * Lists an environment's completed and failed managed actions.
 */
export const describeEnvironmentManagedActionHistory = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: DescribeEnvironmentManagedActionHistoryRequest,
    output: DescribeEnvironmentManagedActionHistoryResult,
    errors: [ElasticBeanstalkServiceException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "ManagedActionHistoryItems",
        pageSize: "MaxItems",
    },
}));
/**
 * Lists an environment's upcoming and in-progress managed actions.
 */
export const describeEnvironmentManagedActions = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeEnvironmentManagedActionsRequest,
    output: DescribeEnvironmentManagedActionsResult,
    errors: [ElasticBeanstalkServiceException],
}));
/**
 * Returns AWS resources for this environment.
 */
export const describeEnvironmentResources = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeEnvironmentResourcesMessage,
    output: EnvironmentResourceDescriptionsMessage,
    errors: [InsufficientPrivilegesException],
}));
/**
 * Returns descriptions for existing environments.
 */
export const describeEnvironments = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeEnvironmentsMessage,
    output: EnvironmentDescriptionsMessage,
    errors: [],
}));
/**
 * Returns list of event descriptions matching criteria up to the last 6 weeks.
 *
 * This action returns the most recent 1,000 events from the specified
 * `NextToken`.
 */
export const describeEvents = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: DescribeEventsMessage,
    output: EventDescriptionsMessage,
    errors: [],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Events",
        pageSize: "MaxRecords",
    },
}));
/**
 * Retrieves detailed information about the health of instances in your AWS Elastic
 * Beanstalk. This operation requires enhanced health
 * reporting.
 */
export const describeInstancesHealth = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeInstancesHealthRequest,
    output: DescribeInstancesHealthResult,
    errors: [ElasticBeanstalkServiceException, InvalidRequestException],
}));
/**
 * Describes a platform version. Provides full details. Compare to ListPlatformVersions, which provides summary information about a list of
 * platform versions.
 *
 * For definitions of platform version and other platform-related terms, see AWS Elastic Beanstalk
 * Platforms Glossary.
 */
export const describePlatformVersion = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribePlatformVersionRequest,
    output: DescribePlatformVersionResult,
    errors: [ElasticBeanstalkServiceException, InsufficientPrivilegesException],
}));
/**
 * Disassociate the operations role from an environment. After this call is made, Elastic Beanstalk uses
 * the caller's permissions for permissions to downstream services during subsequent calls acting
 * on this environment. For more information, see Operations roles in the
 * *AWS Elastic Beanstalk Developer Guide*.
 */
export const disassociateEnvironmentOperationsRole = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DisassociateEnvironmentOperationsRoleMessage,
    output: DisassociateEnvironmentOperationsRoleResponse,
    errors: [InsufficientPrivilegesException],
}));
/**
 * Returns a list of the available solution stack names, with the public version first and
 * then in reverse chronological order.
 */
export const listAvailableSolutionStacks = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListAvailableSolutionStacksRequest,
    output: ListAvailableSolutionStacksResultMessage,
    errors: [],
}));
/**
 * Lists the platform branches available for your account in an AWS Region. Provides
 * summary information about each platform branch.
 *
 * For definitions of platform branch and other platform-related terms, see AWS Elastic Beanstalk
 * Platforms Glossary.
 */
export const listPlatformBranches = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListPlatformBranchesRequest,
    output: ListPlatformBranchesResult,
    errors: [],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxRecords",
    },
}));
/**
 * Lists the platform versions available for your account in an AWS Region. Provides
 * summary information about each platform version. Compare to DescribePlatformVersion, which provides full details about a single platform
 * version.
 *
 * For definitions of platform version and other platform-related terms, see AWS Elastic Beanstalk
 * Platforms Glossary.
 */
export const listPlatformVersions = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListPlatformVersionsRequest,
    output: ListPlatformVersionsResult,
    errors: [ElasticBeanstalkServiceException, InsufficientPrivilegesException],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "PlatformSummaryList",
        pageSize: "MaxRecords",
    },
}));
/**
 * Return the tags applied to an AWS Elastic Beanstalk resource. The response contains a list of tag key-value pairs.
 *
 * Elastic Beanstalk supports tagging of all of its resources. For details about resource tagging, see
 * Tagging Application
 * Resources.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceMessage,
    output: ResourceTagsDescriptionMessage,
    errors: [
        InsufficientPrivilegesException,
        ResourceNotFoundException,
        ResourceTypeNotSupportedException,
    ],
}));
/**
 * Deletes and recreates all of the AWS resources (for example: the Auto Scaling group,
 * load balancer, etc.) for a specified environment and forces a restart.
 */
export const rebuildEnvironment = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RebuildEnvironmentMessage,
    output: RebuildEnvironmentResponse,
    errors: [InsufficientPrivilegesException],
}));
/**
 * Initiates a request to compile the specified type of information of the deployed
 * environment.
 *
 * Setting the `InfoType` to `tail` compiles the last lines from
 * the application server log files of every Amazon EC2 instance in your environment.
 *
 * Setting the `InfoType` to `bundle` compresses the application
 * server log files for every Amazon EC2 instance into a `.zip` file. Legacy and .NET
 * containers do not support bundle logs.
 *
 * Setting the `InfoType` to `analyze` collects recent events,
 * instance health, and logs from your environment and sends them to Amazon Bedrock in your
 * account to generate diagnostic insights and recommended next steps.
 *
 * Use RetrieveEnvironmentInfo to obtain the set of logs.
 *
 * Related Topics
 *
 * - RetrieveEnvironmentInfo
 */
export const requestEnvironmentInfo = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RequestEnvironmentInfoMessage,
    output: RequestEnvironmentInfoResponse,
    errors: [],
}));
/**
 * Causes the environment to restart the application container server running on each
 * Amazon EC2 instance.
 */
export const restartAppServer = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RestartAppServerMessage,
    output: RestartAppServerResponse,
    errors: [],
}));
/**
 * Retrieves the compiled information from a RequestEnvironmentInfo
 * request.
 *
 * Related Topics
 *
 * - RequestEnvironmentInfo
 */
export const retrieveEnvironmentInfo = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RetrieveEnvironmentInfoMessage,
    output: RetrieveEnvironmentInfoResultMessage,
    errors: [],
}));
/**
 * Swaps the CNAMEs of two environments.
 */
export const swapEnvironmentCNAMEs = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: SwapEnvironmentCNAMEsMessage,
    output: SwapEnvironmentCNAMEsResponse,
    errors: [],
}));
/**
 * Terminates the specified environment.
 */
export const terminateEnvironment = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TerminateEnvironmentMessage,
    output: EnvironmentDescription,
    errors: [InsufficientPrivilegesException],
}));
/**
 * Updates the specified application to have the specified properties.
 *
 * If a property (for example, `description`) is not provided, the value
 * remains unchanged. To clear these properties, specify an empty string.
 */
export const updateApplication = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateApplicationMessage,
    output: ApplicationDescriptionMessage,
    errors: [],
}));
/**
 * Modifies lifecycle settings for an application.
 */
export const updateApplicationResourceLifecycle = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateApplicationResourceLifecycleMessage,
    output: ApplicationResourceLifecycleDescriptionMessage,
    errors: [InsufficientPrivilegesException],
}));
/**
 * Updates the specified application version to have the specified properties.
 *
 * If a property (for example, `description`) is not provided, the value
 * remains unchanged. To clear properties, specify an empty string.
 */
export const updateApplicationVersion = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateApplicationVersionMessage,
    output: ApplicationVersionDescriptionMessage,
    errors: [],
}));
/**
 * Updates the specified configuration template to have the specified properties or
 * configuration option values.
 *
 * If a property (for example, `ApplicationName`) is not provided, its value
 * remains unchanged. To clear such properties, specify an empty string.
 *
 * Related Topics
 *
 * - DescribeConfigurationOptions
 */
export const updateConfigurationTemplate = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateConfigurationTemplateMessage,
    output: ConfigurationSettingsDescription,
    errors: [InsufficientPrivilegesException, TooManyBucketsException],
}));
/**
 * Updates the environment description, deploys a new application version, updates the
 * configuration settings to an entirely new configuration template, or updates select
 * configuration option values in the running environment.
 *
 * Attempting to update both the release and configuration is not allowed and AWS Elastic
 * Beanstalk returns an `InvalidParameterCombination` error.
 *
 * When updating the configuration settings to a new template or individual settings, a
 * draft configuration is created and DescribeConfigurationSettings for this
 * environment returns two setting descriptions with different `DeploymentStatus`
 * values.
 */
export const updateEnvironment = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateEnvironmentMessage,
    output: EnvironmentDescription,
    errors: [InsufficientPrivilegesException, TooManyBucketsException],
}));
/**
 * Update the list of tags applied to an AWS Elastic Beanstalk resource. Two lists can be passed: `TagsToAdd`
 * for tags to add or update, and `TagsToRemove`.
 *
 * Elastic Beanstalk supports tagging of all of its resources. For details about resource tagging, see
 * Tagging Application
 * Resources.
 *
 * If you create a custom IAM user policy to control permission to this operation, specify
 * one of the following two virtual actions (or both) instead of the API operation name:
 *
 * ### elasticbeanstalk:AddTags
 *
 * Controls permission to call `UpdateTagsForResource` and pass a list of tags to add in the `TagsToAdd`
 * parameter.
 *
 * ### elasticbeanstalk:RemoveTags
 *
 * Controls permission to call `UpdateTagsForResource` and pass a list of tag keys to remove in the `TagsToRemove`
 * parameter.
 *
 * For details about creating a custom user policy, see Creating a Custom User Policy.
 */
export const updateTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateTagsForResourceMessage,
    output: UpdateTagsForResourceResponse,
    errors: [
        InsufficientPrivilegesException,
        OperationInProgressException,
        ResourceNotFoundException,
        ResourceTypeNotSupportedException,
        TooManyTagsException,
    ],
}));
/**
 * Takes a set of configuration settings and either a configuration template or
 * environment, and determines whether those values are valid.
 *
 * This action returns a list of messages indicating any errors or warnings associated
 * with the selection of option values.
 */
export const validateConfigurationSettings = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ValidateConfigurationSettingsMessage,
    output: ConfigurationSettingsValidationMessages,
    errors: [InsufficientPrivilegesException, TooManyBucketsException],
}));
//# sourceMappingURL=elastic-beanstalk.js.map