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 svc = T.AwsApiService({
    sdkId: "License Manager User Subscriptions",
    serviceShapeName: "LicenseManagerUserSubscriptions",
});
const auth = T.AwsAuthSigv4({ name: "license-manager-user-subscriptions" });
const ver = T.ServiceVersion("2018-05-10");
const proto = T.AwsProtocolsRestJson1();
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://license-manager-user-subscriptions-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://license-manager-user-subscriptions-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://license-manager-user-subscriptions.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://license-manager-user-subscriptions.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const IpV4List = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const IpV6List = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SecretsManagerCredentialsProvider = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ SecretId: S.optional(S.String) })).annotate({
    identifier: "SecretsManagerCredentialsProvider",
});
export const CredentialsProvider = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({
        SecretsManagerCredentialsProvider: SecretsManagerCredentialsProvider,
    }),
]);
export const Subnets = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const DomainNetworkSettings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Subnets: Subnets })).annotate({
    identifier: "DomainNetworkSettings",
});
export const ActiveDirectorySettings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    DomainName: S.optional(S.String),
    DomainIpv4List: S.optional(IpV4List),
    DomainIpv6List: S.optional(IpV6List),
    DomainCredentialsProvider: S.optional(CredentialsProvider),
    DomainNetworkSettings: S.optional(DomainNetworkSettings),
})).annotate({
    identifier: "ActiveDirectorySettings",
});
export const ActiveDirectoryIdentityProvider = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    DirectoryId: S.optional(S.String),
    ActiveDirectorySettings: S.optional(ActiveDirectorySettings),
    ActiveDirectoryType: S.optional(S.String),
    IsSharedActiveDirectory: S.optional(S.Boolean),
})).annotate({
    identifier: "ActiveDirectoryIdentityProvider",
});
export const IdentityProvider = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({
        ActiveDirectoryIdentityProvider: ActiveDirectoryIdentityProvider,
    }),
]);
export const Tags = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, S.String.pipe(S.optional));
export const AssociateUserRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Username: S.String,
    InstanceId: S.String,
    IdentityProvider: IdentityProvider,
    Domain: S.optional(S.String),
    Tags: S.optional(Tags),
}).pipe(T.all(T.Http({ method: "POST", uri: "/user/AssociateUser" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "AssociateUserRequest",
});
export const InstanceUserSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Username: S.String,
    InstanceId: S.String,
    IdentityProvider: IdentityProvider,
    Status: S.String,
    InstanceUserArn: S.optional(S.String),
    StatusMessage: S.optional(S.String),
    Domain: S.optional(S.String),
    AssociationDate: S.optional(S.String),
    DisassociationDate: S.optional(S.String),
})).annotate({
    identifier: "InstanceUserSummary",
});
export const AssociateUserResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ InstanceUserSummary: InstanceUserSummary })).annotate({
    identifier: "AssociateUserResponse",
});
export const RdsSalSettings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ RdsSalCredentialsProvider: CredentialsProvider })).annotate({ identifier: "RdsSalSettings" });
export const ServerSettings = /*@__PURE__*/ /*#__PURE__*/ S.Union([
    S.Struct({ RdsSalSettings: RdsSalSettings }),
]);
export const LicenseServerSettings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ServerType: S.String, ServerSettings: ServerSettings })).annotate({
    identifier: "LicenseServerSettings",
});
export const CreateLicenseServerEndpointRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IdentityProviderArn: S.String,
    LicenseServerSettings: LicenseServerSettings,
    Tags: S.optional(Tags),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/license-server/CreateLicenseServerEndpoint",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateLicenseServerEndpointRequest",
});
export const CreateLicenseServerEndpointResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IdentityProviderArn: S.optional(S.String),
    LicenseServerEndpointArn: S.optional(S.String),
})).annotate({
    identifier: "CreateLicenseServerEndpointResponse",
});
export const DeleteLicenseServerEndpointRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LicenseServerEndpointArn: S.String, ServerType: S.String }).pipe(T.all(T.Http({
    method: "POST",
    uri: "/license-server/DeleteLicenseServerEndpoint",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteLicenseServerEndpointRequest",
});
export const ServerEndpoint = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Endpoint: S.optional(S.String) })).annotate({ identifier: "ServerEndpoint" });
export const LicenseServer = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProvisioningStatus: S.optional(S.String),
    HealthStatus: S.optional(S.String),
    Ipv4Address: S.optional(S.String),
    Ipv6Address: S.optional(S.String),
})).annotate({ identifier: "LicenseServer" });
export const LicenseServerList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(LicenseServer);
export const LicenseServerEndpoint = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IdentityProviderArn: S.optional(S.String),
    ServerType: S.optional(S.String),
    ServerEndpoint: S.optional(ServerEndpoint),
    StatusMessage: S.optional(S.String),
    LicenseServerEndpointId: S.optional(S.String),
    LicenseServerEndpointArn: S.optional(S.String),
    LicenseServerEndpointProvisioningStatus: S.optional(S.String),
    LicenseServers: S.optional(LicenseServerList),
    CreationTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "LicenseServerEndpoint",
});
export const DeleteLicenseServerEndpointResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ LicenseServerEndpoint: S.optional(LicenseServerEndpoint) })).annotate({
    identifier: "DeleteLicenseServerEndpointResponse",
});
export const DeregisterIdentityProviderRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IdentityProvider: S.optional(IdentityProvider),
    Product: S.optional(S.String),
    IdentityProviderArn: S.optional(S.String),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/identity-provider/DeregisterIdentityProvider",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeregisterIdentityProviderRequest",
});
export const Settings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Subnets: Subnets, SecurityGroupId: S.String })).annotate({ identifier: "Settings" });
export const IdentityProviderSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IdentityProvider: IdentityProvider,
    Settings: Settings,
    Product: S.String,
    Status: S.String,
    IdentityProviderArn: S.optional(S.String),
    FailureMessage: S.optional(S.String),
    OwnerAccountId: S.optional(S.String),
})).annotate({
    identifier: "IdentityProviderSummary",
});
export const DeregisterIdentityProviderResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ IdentityProviderSummary: IdentityProviderSummary })).annotate({
    identifier: "DeregisterIdentityProviderResponse",
});
export const DisassociateUserRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Username: S.optional(S.String),
    InstanceId: S.optional(S.String),
    IdentityProvider: S.optional(IdentityProvider),
    InstanceUserArn: S.optional(S.String),
    Domain: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/user/DisassociateUser" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DisassociateUserRequest",
});
export const DisassociateUserResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ InstanceUserSummary: InstanceUserSummary })).annotate({
    identifier: "DisassociateUserResponse",
});
export const Filter = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Attribute: S.optional(S.String),
    Operation: S.optional(S.String),
    Value: S.optional(S.String),
})).annotate({ identifier: "Filter" });
export const FilterList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Filter);
export const ListIdentityProvidersRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaxResults: S.optional(S.Number),
    Filters: S.optional(FilterList),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/identity-provider/ListIdentityProviders",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListIdentityProvidersRequest",
});
export const IdentityProviderSummaryList = /*@__PURE__*/ /*#__PURE__*/ S.Array(IdentityProviderSummary);
export const ListIdentityProvidersResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IdentityProviderSummaries: IdentityProviderSummaryList,
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListIdentityProvidersResponse",
});
export const ListInstancesRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaxResults: S.optional(S.Number),
    NextToken: S.optional(S.String),
    Filters: S.optional(FilterList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/instance/ListInstances" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListInstancesRequest",
});
export const StringList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const InstanceSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InstanceId: S.String,
    Status: S.String,
    Products: StringList,
    LastStatusCheckDate: S.optional(S.String),
    StatusMessage: S.optional(S.String),
    OwnerAccountId: S.optional(S.String),
    IdentityProvider: S.optional(IdentityProvider),
})).annotate({
    identifier: "InstanceSummary",
});
export const InstanceSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(InstanceSummary);
export const ListInstancesResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InstanceSummaries: S.optional(InstanceSummaryList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListInstancesResponse",
});
export const ListLicenseServerEndpointsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaxResults: S.optional(S.Number),
    Filters: S.optional(FilterList),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/license-server/ListLicenseServerEndpoints",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListLicenseServerEndpointsRequest",
});
export const LicenseServerEndpointList = /*@__PURE__*/ /*#__PURE__*/ S.Array(LicenseServerEndpoint);
export const ListLicenseServerEndpointsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LicenseServerEndpoints: S.optional(LicenseServerEndpointList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListLicenseServerEndpointsResponse",
});
export const ListProductSubscriptionsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Product: S.optional(S.String),
    IdentityProvider: IdentityProvider,
    MaxResults: S.optional(S.Number),
    Filters: S.optional(FilterList),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/user/ListProductSubscriptions" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListProductSubscriptionsRequest",
});
export const ProductUserSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Username: S.String,
    Product: S.String,
    IdentityProvider: IdentityProvider,
    Status: S.String,
    ProductUserArn: S.optional(S.String),
    StatusMessage: S.optional(S.String),
    Domain: S.optional(S.String),
    SubscriptionStartDate: S.optional(S.String),
    SubscriptionEndDate: S.optional(S.String),
})).annotate({
    identifier: "ProductUserSummary",
});
export const ProductUserSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ProductUserSummary);
export const ListProductSubscriptionsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ProductUserSummaries: S.optional(ProductUserSummaryList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListProductSubscriptionsResponse",
});
export const ListTagsForResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String.pipe(T.HttpLabel("ResourceArn")) }).pipe(T.all(T.Http({ method: "GET", uri: "/tags/{ResourceArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTagsForResourceRequest",
});
export const ListTagsForResourceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Tags: S.optional(Tags) })).annotate({
    identifier: "ListTagsForResourceResponse",
});
export const ListUserAssociationsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InstanceId: S.String,
    IdentityProvider: IdentityProvider,
    MaxResults: S.optional(S.Number),
    Filters: S.optional(FilterList),
    NextToken: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/user/ListUserAssociations" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListUserAssociationsRequest",
});
export const InstanceUserSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(InstanceUserSummary);
export const ListUserAssociationsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InstanceUserSummaries: S.optional(InstanceUserSummaryList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListUserAssociationsResponse",
});
export const RegisterIdentityProviderRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IdentityProvider: IdentityProvider,
    Product: S.String,
    Settings: S.optional(Settings),
    Tags: S.optional(Tags),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/identity-provider/RegisterIdentityProvider",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "RegisterIdentityProviderRequest",
});
export const RegisterIdentityProviderResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ IdentityProviderSummary: IdentityProviderSummary })).annotate({
    identifier: "RegisterIdentityProviderResponse",
});
export const StartProductSubscriptionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Username: S.String,
    IdentityProvider: IdentityProvider,
    Product: S.String,
    Domain: S.optional(S.String),
    Tags: S.optional(Tags),
}).pipe(T.all(T.Http({ method: "POST", uri: "/user/StartProductSubscription" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StartProductSubscriptionRequest",
});
export const StartProductSubscriptionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ProductUserSummary: ProductUserSummary })).annotate({
    identifier: "StartProductSubscriptionResponse",
});
export const StopProductSubscriptionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Username: S.optional(S.String),
    IdentityProvider: S.optional(IdentityProvider),
    Product: S.optional(S.String),
    ProductUserArn: S.optional(S.String),
    Domain: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/user/StopProductSubscription" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "StopProductSubscriptionRequest",
});
export const StopProductSubscriptionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ProductUserSummary: ProductUserSummary })).annotate({
    identifier: "StopProductSubscriptionResponse",
});
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceArn: S.String.pipe(T.HttpLabel("ResourceArn")),
    Tags: Tags,
}).pipe(T.all(T.Http({ method: "PUT", uri: "/tags/{ResourceArn}" }), 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.pipe(T.HttpLabel("ResourceArn")),
    TagKeys: TagKeyList.pipe(T.HttpQuery("tagKeys")),
}).pipe(T.all(T.Http({ method: "DELETE", uri: "/tags/{ResourceArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UntagResourceRequest",
});
export const UntagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UntagResourceResponse",
});
export const UpdateSettings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AddSubnets: Subnets,
    RemoveSubnets: Subnets,
    SecurityGroupId: S.optional(S.String),
})).annotate({ identifier: "UpdateSettings" });
export const UpdateIdentityProviderSettingsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    IdentityProvider: S.optional(IdentityProvider),
    Product: S.optional(S.String),
    IdentityProviderArn: S.optional(S.String),
    UpdateSettings: UpdateSettings,
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/identity-provider/UpdateIdentityProviderSettings",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateIdentityProviderSettingsRequest",
});
export const UpdateIdentityProviderSettingsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ IdentityProviderSummary: IdentityProviderSummary })).annotate({
    identifier: "UpdateIdentityProviderSettingsResponse",
});
//# Errors
export class AccessDeniedException extends S.TaggedErrorClass()("AccessDeniedException", { message: S.optional(S.String) }).pipe(C.withAuthError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", { message: S.optional(S.String) }) {
}
export class InternalServerException extends S.TaggedErrorClass()("InternalServerException", { message: S.optional(S.String) }).pipe(C.withServerError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", { message: S.optional(S.String) }).pipe(C.withBadRequestError) {
}
export class ServiceQuotaExceededException extends S.TaggedErrorClass()("ServiceQuotaExceededException", { message: S.optional(S.String) }) {
}
export class ThrottlingException extends S.TaggedErrorClass()("ThrottlingException", { message: S.optional(S.String) }) {
}
export class ValidationException extends S.TaggedErrorClass()("ValidationException", { message: S.optional(S.String) }) {
}
/**
 * Associates the user to an EC2 instance to utilize user-based subscriptions.
 *
 * Your estimated bill for charges on the number of users and related costs will take 48 hours to appear for billing periods that haven't closed (marked as **Pending** billing status) in Amazon Web Services Billing. For more information, see Viewing your monthly charges in the *Amazon Web Services Billing User Guide*.
 */
export const associateUser = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: AssociateUserRequest,
    output: AssociateUserResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Creates a network endpoint for the Remote Desktop Services (RDS) license server.
 */
export const createLicenseServerEndpoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateLicenseServerEndpointRequest,
    output: CreateLicenseServerEndpointResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes a `LicenseServerEndpoint` resource.
 */
export const deleteLicenseServerEndpoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteLicenseServerEndpointRequest,
    output: DeleteLicenseServerEndpointResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deregisters the Active Directory identity provider from License Manager user-based subscriptions.
 */
export const deregisterIdentityProvider = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeregisterIdentityProviderRequest,
    output: DeregisterIdentityProviderResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Disassociates the user from an EC2 instance providing user-based subscriptions.
 */
export const disassociateUser = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DisassociateUserRequest,
    output: DisassociateUserResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Lists the Active Directory identity providers for user-based subscriptions.
 */
export const listIdentityProviders = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListIdentityProvidersRequest,
    output: ListIdentityProvidersResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "IdentityProviderSummaries",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists the EC2 instances providing user-based subscriptions.
 */
export const listInstances = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListInstancesRequest,
    output: ListInstancesResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "InstanceSummaries",
        pageSize: "MaxResults",
    },
}));
/**
 * List the Remote Desktop Services (RDS) License Server endpoints
 */
export const listLicenseServerEndpoints = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListLicenseServerEndpointsRequest,
    output: ListLicenseServerEndpointsResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "LicenseServerEndpoints",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists the user-based subscription products available from an identity provider.
 */
export const listProductSubscriptions = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListProductSubscriptionsRequest,
    output: ListProductSubscriptionsResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "ProductUserSummaries",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns the list of tags for the specified resource.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Lists user associations for an identity provider.
 */
export const listUserAssociations = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListUserAssociationsRequest,
    output: ListUserAssociationsResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "InstanceUserSummaries",
        pageSize: "MaxResults",
    },
}));
/**
 * Registers an identity provider for user-based subscriptions.
 */
export const registerIdentityProvider = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RegisterIdentityProviderRequest,
    output: RegisterIdentityProviderResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Starts a product subscription for a user with the specified identity provider.
 *
 * Your estimated bill for charges on the number of users and related costs will take 48 hours to appear for billing periods that haven't closed (marked as **Pending** billing status) in Amazon Web Services Billing. For more information, see Viewing your monthly charges in the *Amazon Web Services Billing User Guide*.
 */
export const startProductSubscription = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StartProductSubscriptionRequest,
    output: StartProductSubscriptionResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Stops a product subscription for a user with the specified identity provider.
 */
export const stopProductSubscription = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StopProductSubscriptionRequest,
    output: StopProductSubscriptionResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Adds tags to a resource.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [
        InternalServerException,
        ResourceNotFoundException,
        ValidationException,
    ],
}));
/**
 * Removes tags from a resource.
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [InternalServerException, ResourceNotFoundException],
}));
/**
 * Updates additional product configuration settings for the registered identity provider.
 */
export const updateIdentityProviderSettings = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateIdentityProviderSettingsRequest,
    output: UpdateIdentityProviderSettingsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
//# sourceMappingURL=license-manager-user-subscriptions.js.map