import * as HttpClient from "effect/unstable/http/HttpClient";
import * as redacted from "effect/Redacted";
import * as S from "effect/Schema";
import * as stream from "effect/Stream";
import * as API from "../client/api.js";
import * as T from "../traits.js";
import * as C from "../category.js";
import { SensitiveString } from "../sensitive.js";
const svc = T.AwsApiService({
    sdkId: "repostspace",
    serviceShapeName: "RepostSpace",
});
const auth = T.AwsAuthSigv4({ name: "repostspace" });
const ver = T.ServiceVersion("2022-05-13");
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://repostspace-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://repostspace-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://repostspace.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://repostspace.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const AccessorIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ChannelRole = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const BatchAddChannelRoleToAccessorsInput = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    channelId: S.String.pipe(T.HttpLabel("channelId")),
    accessorIds: AccessorIdList,
    channelRole: ChannelRole,
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/spaces/{spaceId}/channels/{channelId}/roles",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchAddChannelRoleToAccessorsInput",
});
export const BatchError = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ accessorId: S.String, error: S.Number, message: S.String })).annotate({ identifier: "BatchError" });
export const BatchErrorList = /*@__PURE__*/ /*#__PURE__*/ S.Array(BatchError);
export const BatchAddChannelRoleToAccessorsOutput = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ addedAccessorIds: AccessorIdList, errors: BatchErrorList })).annotate({
    identifier: "BatchAddChannelRoleToAccessorsOutput",
});
export const ValidationExceptionReason = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ValidationExceptionField = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ name: S.String, message: S.String })).annotate({
    identifier: "ValidationExceptionField",
});
export const ValidationExceptionFieldList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ValidationExceptionField);
export const Role = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const BatchAddRoleInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    accessorIds: AccessorIdList,
    role: Role,
}).pipe(T.all(T.Http({ method: "POST", uri: "/spaces/{spaceId}/roles" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchAddRoleInput",
});
export const BatchAddRoleOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ addedAccessorIds: AccessorIdList, errors: BatchErrorList })).annotate({
    identifier: "BatchAddRoleOutput",
});
export const BatchRemoveChannelRoleFromAccessorsInput = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    channelId: S.String.pipe(T.HttpLabel("channelId")),
    accessorIds: AccessorIdList,
    channelRole: ChannelRole,
}).pipe(T.all(T.Http({
    method: "PATCH",
    uri: "/spaces/{spaceId}/channels/{channelId}/roles",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchRemoveChannelRoleFromAccessorsInput",
});
export const BatchRemoveChannelRoleFromAccessorsOutput = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ removedAccessorIds: AccessorIdList, errors: BatchErrorList })).annotate({
    identifier: "BatchRemoveChannelRoleFromAccessorsOutput",
});
export const BatchRemoveRoleInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    accessorIds: AccessorIdList,
    role: Role,
}).pipe(T.all(T.Http({ method: "PATCH", uri: "/spaces/{spaceId}/roles" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchRemoveRoleInput",
});
export const BatchRemoveRoleOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ removedAccessorIds: AccessorIdList, errors: BatchErrorList })).annotate({
    identifier: "BatchRemoveRoleOutput",
});
export const CreateChannelInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    channelName: SensitiveString,
    channelDescription: S.optional(SensitiveString),
}).pipe(T.all(T.Http({ method: "POST", uri: "/spaces/{spaceId}/channels" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateChannelInput",
});
export const CreateChannelOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ channelId: S.String })).annotate({
    identifier: "CreateChannelOutput",
});
export const TierLevel = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Tags = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, S.String.pipe(S.optional));
export const FeatureEnableParameter = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AllowedDomainsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SensitiveString);
export const SupportedEmailDomainsParameters = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    enabled: S.optional(FeatureEnableParameter),
    allowedDomains: S.optional(AllowedDomainsList),
})).annotate({
    identifier: "SupportedEmailDomainsParameters",
});
export const CreateSpaceInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    name: SensitiveString,
    subdomain: S.String,
    tier: TierLevel,
    description: S.optional(SensitiveString),
    userKMSKey: S.optional(S.String),
    tags: S.optional(Tags),
    roleArn: S.optional(S.String),
    supportedEmailDomains: S.optional(SupportedEmailDomainsParameters),
}).pipe(T.all(T.Http({ method: "POST", uri: "/spaces" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateSpaceInput",
});
export const CreateSpaceOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ spaceId: S.String })).annotate({
    identifier: "CreateSpaceOutput",
});
export const DeleteSpaceInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ spaceId: S.String.pipe(T.HttpLabel("spaceId")) }).pipe(T.all(T.Http({ method: "DELETE", uri: "/spaces/{spaceId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteSpaceInput",
});
export const DeleteSpaceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteSpaceResponse",
});
export const DeregisterAdminInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    adminId: S.String.pipe(T.HttpLabel("adminId")),
}).pipe(T.all(T.Http({ method: "DELETE", uri: "/spaces/{spaceId}/admins/{adminId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeregisterAdminInput",
});
export const DeregisterAdminResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeregisterAdminResponse",
});
export const GetChannelInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    channelId: S.String.pipe(T.HttpLabel("channelId")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/spaces/{spaceId}/channels/{channelId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetChannelInput",
});
export const ChannelRoleList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelRole);
export const ChannelRoles = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, ChannelRoleList.pipe(S.optional));
export const ChannelStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetChannelOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String,
    channelId: S.String,
    channelName: SensitiveString,
    channelDescription: S.optional(SensitiveString),
    createDateTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    deleteDateTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    channelRoles: S.optional(ChannelRoles),
    channelStatus: ChannelStatus,
})).annotate({
    identifier: "GetChannelOutput",
});
export const GetSpaceInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ spaceId: S.String.pipe(T.HttpLabel("spaceId")) }).pipe(T.all(T.Http({ method: "GET", uri: "/spaces/{spaceId}" }), svc, auth, proto, ver, rules))).annotate({ identifier: "GetSpaceInput" });
export const ConfigurationStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const VanityDomainStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const UserAdmins = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const GroupAdmins = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const RoleList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Role);
export const Roles = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, RoleList.pipe(S.optional));
export const FeatureEnableStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SupportedEmailDomainsStatus = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    enabled: S.optional(FeatureEnableStatus),
    allowedDomains: S.optional(AllowedDomainsList),
})).annotate({
    identifier: "SupportedEmailDomainsStatus",
});
export const GetSpaceOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String,
    arn: S.String,
    name: SensitiveString,
    status: S.String,
    configurationStatus: ConfigurationStatus,
    clientId: S.String,
    identityStoreId: S.optional(S.String),
    applicationArn: S.optional(S.String),
    description: S.optional(SensitiveString),
    vanityDomainStatus: VanityDomainStatus,
    vanityDomain: S.String,
    randomDomain: S.String,
    customerRoleArn: S.optional(S.String),
    createDateTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    deleteDateTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    tier: TierLevel,
    storageLimit: S.Number,
    userAdmins: S.optional(UserAdmins),
    groupAdmins: S.optional(GroupAdmins),
    roles: S.optional(Roles),
    userKMSKey: S.optional(S.String),
    userCount: S.optional(S.Number),
    contentSize: S.optional(S.Number),
    supportedEmailDomains: S.optional(SupportedEmailDomainsStatus),
})).annotate({ identifier: "GetSpaceOutput" });
export const ListChannelsInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    nextToken: S.optional(S.String).pipe(T.HttpQuery("nextToken")),
    maxResults: S.optional(S.Number).pipe(T.HttpQuery("maxResults")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/spaces/{spaceId}/channels" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelsInput",
});
export const ChannelData = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String,
    channelId: S.String,
    channelName: SensitiveString,
    channelDescription: S.optional(SensitiveString),
    createDateTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    deleteDateTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    channelStatus: ChannelStatus,
    userCount: S.Number,
    groupCount: S.Number,
})).annotate({ identifier: "ChannelData" });
export const ChannelsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelData);
export const ListChannelsOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ channels: ChannelsList, nextToken: S.optional(S.String) })).annotate({
    identifier: "ListChannelsOutput",
});
export const ListSpacesInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    nextToken: S.optional(S.String).pipe(T.HttpQuery("nextToken")),
    maxResults: S.optional(S.Number).pipe(T.HttpQuery("maxResults")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/spaces" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListSpacesInput",
});
export const SpaceData = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String,
    arn: S.String,
    name: SensitiveString,
    description: S.optional(SensitiveString),
    status: S.String,
    configurationStatus: ConfigurationStatus,
    vanityDomainStatus: VanityDomainStatus,
    vanityDomain: S.String,
    randomDomain: S.String,
    tier: TierLevel,
    storageLimit: S.Number,
    createDateTime: T.DateFromString.pipe(T.TimestampFormat("date-time")),
    deleteDateTime: S.optional(T.DateFromString.pipe(T.TimestampFormat("date-time"))),
    userKMSKey: S.optional(S.String),
    userCount: S.optional(S.Number),
    contentSize: S.optional(S.Number),
    supportedEmailDomains: S.optional(SupportedEmailDomainsStatus),
})).annotate({ identifier: "SpaceData" });
export const SpacesList = /*@__PURE__*/ /*#__PURE__*/ S.Array(SpaceData);
export const ListSpacesOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ spaces: SpacesList, nextToken: S.optional(S.String) })).annotate({
    identifier: "ListSpacesOutput",
});
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 RegisterAdminInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    adminId: S.String.pipe(T.HttpLabel("adminId")),
}).pipe(T.all(T.Http({ method: "POST", uri: "/spaces/{spaceId}/admins/{adminId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "RegisterAdminInput",
});
export const RegisterAdminResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "RegisterAdminResponse",
});
export const SendInvitesInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    accessorIds: AccessorIdList,
    title: SensitiveString,
    body: SensitiveString,
}).pipe(T.all(T.Http({ method: "POST", uri: "/spaces/{spaceId}/invite" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "SendInvitesInput",
});
export const SendInvitesResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "SendInvitesResponse",
});
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    resourceArn: S.String.pipe(T.HttpLabel("resourceArn")),
    tags: Tags,
}).pipe(T.all(T.Http({ method: "POST", 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 UpdateChannelInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    channelId: S.String.pipe(T.HttpLabel("channelId")),
    channelName: SensitiveString,
    channelDescription: S.optional(SensitiveString),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/spaces/{spaceId}/channels/{channelId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateChannelInput",
});
export const UpdateChannelOutput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateChannelOutput",
});
export const UpdateSpaceInput = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    spaceId: S.String.pipe(T.HttpLabel("spaceId")),
    description: S.optional(SensitiveString),
    tier: S.optional(TierLevel),
    roleArn: S.optional(S.String),
    supportedEmailDomains: S.optional(SupportedEmailDomainsParameters),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/spaces/{spaceId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateSpaceInput",
});
export const UpdateSpaceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UpdateSpaceResponse",
});
//# Errors
export class AccessDeniedException extends S.TaggedErrorClass()("AccessDeniedException", { message: S.String }).pipe(C.withAuthError) {
}
export class InternalServerException extends S.TaggedErrorClass()("InternalServerException", {
    message: S.String,
    retryAfterSeconds: S.optional(S.Number).pipe(T.HttpHeader("Retry-After")),
}, T.Retryable()).pipe(C.withServerError, C.withRetryableError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", { message: S.String, resourceId: S.String, resourceType: S.String }).pipe(C.withBadRequestError) {
}
export class ThrottlingException extends S.TaggedErrorClass()("ThrottlingException", {
    message: S.String,
    serviceCode: S.optional(S.String),
    quotaCode: S.optional(S.String),
    retryAfterSeconds: S.optional(S.Number).pipe(T.HttpHeader("Retry-After")),
}, T.Retryable({ throttling: true })).pipe(C.withThrottlingError, C.withRetryableError) {
}
export class ValidationException extends S.TaggedErrorClass()("ValidationException", {
    message: S.String,
    reason: ValidationExceptionReason,
    fieldList: S.optional(ValidationExceptionFieldList),
}).pipe(C.withBadRequestError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", { message: S.String, resourceId: S.String, resourceType: S.String }).pipe(C.withConflictError) {
}
export class ServiceQuotaExceededException extends S.TaggedErrorClass()("ServiceQuotaExceededException", {
    message: S.String,
    resourceId: S.String,
    resourceType: S.String,
    serviceCode: S.String,
    quotaCode: S.String,
}).pipe(C.withQuotaError) {
}
/**
 * Add role to multiple users or groups in a private re:Post channel.
 */
export const batchAddChannelRoleToAccessors = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchAddChannelRoleToAccessorsInput,
    output: BatchAddChannelRoleToAccessorsOutput,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Add a role to multiple users or groups in a private re:Post.
 */
export const batchAddRole = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchAddRoleInput,
    output: BatchAddRoleOutput,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Remove a role from multiple users or groups in a private re:Post channel.
 */
export const batchRemoveChannelRoleFromAccessors = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchRemoveChannelRoleFromAccessorsInput,
    output: BatchRemoveChannelRoleFromAccessorsOutput,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Remove a role from multiple users or groups in a private re:Post.
 */
export const batchRemoveRole = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchRemoveRoleInput,
    output: BatchRemoveRoleOutput,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Creates a channel in an AWS re:Post Private private re:Post.
 */
export const createChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateChannelInput,
    output: CreateChannelOutput,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Creates an AWS re:Post Private private re:Post.
 */
export const createSpace = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateSpaceInput,
    output: CreateSpaceOutput,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Deletes an AWS re:Post Private private re:Post.
 */
export const deleteSpace = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteSpaceInput,
    output: DeleteSpaceResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Removes the user or group from the list of administrators of the private re:Post.
 */
export const deregisterAdmin = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeregisterAdminInput,
    output: DeregisterAdminResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Displays information about a channel in a private re:Post.
 */
export const getChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetChannelInput,
    output: GetChannelOutput,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Displays information about the AWS re:Post Private private re:Post.
 */
export const getSpace = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetSpaceInput,
    output: GetSpaceOutput,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Returns the list of channel within a private re:Post with some information about each channel.
 */
export const listChannels = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelsInput,
    output: ListChannelsOutput,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "channels",
        pageSize: "maxResults",
    },
}));
/**
 * Returns a list of AWS re:Post Private private re:Posts in the account with some information about each private re:Post.
 */
export const listSpaces = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListSpacesInput,
    output: ListSpacesOutput,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "nextToken",
        outputToken: "nextToken",
        items: "spaces",
        pageSize: "maxResults",
    },
}));
/**
 * Returns the tags that are associated with the AWS re:Post Private resource specified by the resourceArn. The only resource that can be tagged is a private re:Post.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Adds a user or group to the list of administrators of the private re:Post.
 */
export const registerAdmin = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RegisterAdminInput,
    output: RegisterAdminResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Sends an invitation email to selected users and groups.
 */
export const sendInvites = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: SendInvitesInput,
    output: SendInvitesResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Associates tags with an AWS re:Post Private resource. Currently, the only resource that can be tagged is the private re:Post. If you specify a new tag key for the resource, the tag is appended to the list of tags that are associated with the resource. If you specify a tag key that’s already associated with the resource, the new tag value that you specify replaces the previous value for that tag.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Removes the association of the tag with the AWS re:Post Private resource.
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Modifies an existing channel.
 */
export const updateChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateChannelInput,
    output: UpdateChannelOutput,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Modifies an existing AWS re:Post Private private re:Post.
 */
export const updateSpace = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateSpaceInput,
    output: UpdateSpaceResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
//# sourceMappingURL=repostspace.js.map