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: "Chime SDK Messaging",
    serviceShapeName: "ChimeMessagingService",
});
const auth = T.AwsAuthSigv4({ name: "chime" });
const ver = T.ServiceVersion("2021-05-15");
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://messaging-chime-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://messaging-chime-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://messaging-chime.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://messaging-chime.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const AssociateChannelFlowRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChannelFlowArn: S.String,
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/channels/{ChannelArn}/channel-flow" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "AssociateChannelFlowRequest",
});
export const AssociateChannelFlowResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "AssociateChannelFlowResponse",
});
export const ErrorCode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ChannelMembershipType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const MemberArns = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const BatchCreateChannelMembershipRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    Type: S.optional(ChannelMembershipType),
    MemberArns: MemberArns,
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/channels/{ChannelArn}/memberships?operation=batch-create",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchCreateChannelMembershipRequest",
});
export const Identity = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Arn: S.optional(S.String), Name: S.optional(SensitiveString) })).annotate({ identifier: "Identity" });
export const Members = /*@__PURE__*/ /*#__PURE__*/ S.Array(Identity);
export const BatchChannelMemberships = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InvitedBy: S.optional(Identity),
    Type: S.optional(ChannelMembershipType),
    Members: S.optional(Members),
    ChannelArn: S.optional(S.String),
    SubChannelId: S.optional(S.String),
})).annotate({
    identifier: "BatchChannelMemberships",
});
export const BatchCreateChannelMembershipError_ = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MemberArn: S.optional(S.String),
    ErrorCode: S.optional(ErrorCode),
    ErrorMessage: S.optional(S.String),
})).annotate({
    identifier: "BatchCreateChannelMembershipError",
});
export const BatchCreateChannelMembershipErrors = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(BatchCreateChannelMembershipError_);
export const BatchCreateChannelMembershipResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    BatchChannelMemberships: S.optional(BatchChannelMemberships),
    Errors: S.optional(BatchCreateChannelMembershipErrors),
})).annotate({
    identifier: "BatchCreateChannelMembershipResponse",
});
export const PushNotificationType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PushNotificationConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Title: S.optional(SensitiveString),
    Body: S.optional(SensitiveString),
    Type: S.optional(PushNotificationType),
})).annotate({
    identifier: "PushNotificationConfiguration",
});
export const MessageAttributeStringValues = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SensitiveString);
export const MessageAttributeValue = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ StringValues: S.optional(MessageAttributeStringValues) })).annotate({
    identifier: "MessageAttributeValue",
});
export const MessageAttributeMap = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, MessageAttributeValue.pipe(S.optional));
export const ChannelMessageCallback = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MessageId: S.String,
    Content: S.optional(SensitiveString),
    Metadata: S.optional(SensitiveString),
    PushNotification: S.optional(PushNotificationConfiguration),
    MessageAttributes: S.optional(MessageAttributeMap),
    SubChannelId: S.optional(S.String),
    ContentType: S.optional(SensitiveString),
})).annotate({
    identifier: "ChannelMessageCallback",
});
export const ChannelFlowCallbackRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CallbackId: S.String.pipe(T.IdempotencyToken()),
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    DeleteResource: S.optional(S.Boolean),
    ChannelMessage: ChannelMessageCallback,
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/channels/{ChannelArn}?operation=channel-flow-callback",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ChannelFlowCallbackRequest",
});
export const ChannelFlowCallbackResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    CallbackId: S.optional(S.String),
})).annotate({
    identifier: "ChannelFlowCallbackResponse",
});
export const ChannelMode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ChannelPrivacy = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Tag = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Key: SensitiveString, Value: SensitiveString })).annotate({ identifier: "Tag" });
export const TagList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Tag);
export const ChannelMemberArns = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ChannelModeratorArns = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const ElasticChannelConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaximumSubChannels: S.Number,
    TargetMembershipsPerSubChannel: S.Number,
    MinimumMembershipPercentage: S.Number,
})).annotate({
    identifier: "ElasticChannelConfiguration",
});
export const ExpirationCriterion = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ExpirationSettings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ExpirationDays: S.Number,
    ExpirationCriterion: ExpirationCriterion,
})).annotate({
    identifier: "ExpirationSettings",
});
export const CreateChannelRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceArn: S.String,
    Name: SensitiveString,
    Mode: S.optional(ChannelMode),
    Privacy: S.optional(ChannelPrivacy),
    Metadata: S.optional(SensitiveString),
    ClientRequestToken: SensitiveString.pipe(T.IdempotencyToken()),
    Tags: S.optional(TagList),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    ChannelId: S.optional(SensitiveString),
    MemberArns: S.optional(ChannelMemberArns),
    ModeratorArns: S.optional(ChannelModeratorArns),
    ElasticChannelConfiguration: S.optional(ElasticChannelConfiguration),
    ExpirationSettings: S.optional(ExpirationSettings),
}).pipe(T.all(T.Http({ method: "POST", uri: "/channels" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateChannelRequest",
});
export const CreateChannelResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelArn: S.optional(S.String) })).annotate({
    identifier: "CreateChannelResponse",
});
export const CreateChannelBanRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MemberArn: S.String,
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "POST", uri: "/channels/{ChannelArn}/bans" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateChannelBanRequest",
});
export const CreateChannelBanResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    Member: S.optional(Identity),
})).annotate({
    identifier: "CreateChannelBanResponse",
});
export const InvocationType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const LambdaConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String, InvocationType: InvocationType })).annotate({
    identifier: "LambdaConfiguration",
});
export const ProcessorConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Lambda: LambdaConfiguration })).annotate({
    identifier: "ProcessorConfiguration",
});
export const FallbackAction = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Processor = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: SensitiveString,
    Configuration: ProcessorConfiguration,
    ExecutionOrder: S.Number,
    FallbackAction: FallbackAction,
})).annotate({ identifier: "Processor" });
export const ProcessorList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Processor);
export const CreateChannelFlowRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceArn: S.String,
    Processors: ProcessorList,
    Name: SensitiveString,
    Tags: S.optional(TagList),
    ClientRequestToken: SensitiveString.pipe(T.IdempotencyToken()),
}).pipe(T.all(T.Http({ method: "POST", uri: "/channel-flows" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateChannelFlowRequest",
});
export const CreateChannelFlowResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelFlowArn: S.optional(S.String) })).annotate({
    identifier: "CreateChannelFlowResponse",
});
export const CreateChannelMembershipRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MemberArn: S.String,
    Type: ChannelMembershipType,
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "POST", uri: "/channels/{ChannelArn}/memberships" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateChannelMembershipRequest",
});
export const CreateChannelMembershipResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    Member: S.optional(Identity),
    SubChannelId: S.optional(S.String),
})).annotate({
    identifier: "CreateChannelMembershipResponse",
});
export const CreateChannelModeratorRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChannelModeratorArn: S.String,
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "POST", uri: "/channels/{ChannelArn}/moderators" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateChannelModeratorRequest",
});
export const CreateChannelModeratorResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    ChannelModerator: S.optional(Identity),
})).annotate({
    identifier: "CreateChannelModeratorResponse",
});
export const DeleteChannelRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "DELETE", uri: "/channels/{ChannelArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelRequest",
});
export const DeleteChannelResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelResponse",
});
export const DeleteChannelBanRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MemberArn: S.String.pipe(T.HttpLabel("MemberArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channels/{ChannelArn}/bans/{MemberArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelBanRequest",
});
export const DeleteChannelBanResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelBanResponse",
});
export const DeleteChannelFlowRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelFlowArn: S.String.pipe(T.HttpLabel("ChannelFlowArn")),
}).pipe(T.all(T.Http({ method: "DELETE", uri: "/channel-flows/{ChannelFlowArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelFlowRequest",
});
export const DeleteChannelFlowResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelFlowResponse",
});
export const DeleteChannelMembershipRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MemberArn: S.String.pipe(T.HttpLabel("MemberArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String).pipe(T.HttpQuery("sub-channel-id")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channels/{ChannelArn}/memberships/{MemberArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelMembershipRequest",
});
export const DeleteChannelMembershipResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelMembershipResponse",
});
export const DeleteChannelMessageRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MessageId: S.String.pipe(T.HttpLabel("MessageId")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String).pipe(T.HttpQuery("sub-channel-id")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channels/{ChannelArn}/messages/{MessageId}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelMessageRequest",
});
export const DeleteChannelMessageResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelMessageResponse",
});
export const DeleteChannelModeratorRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChannelModeratorArn: S.String.pipe(T.HttpLabel("ChannelModeratorArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channels/{ChannelArn}/moderators/{ChannelModeratorArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelModeratorRequest",
});
export const DeleteChannelModeratorResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelModeratorResponse",
});
export const DeleteMessagingStreamingConfigurationsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceArn: S.String.pipe(T.HttpLabel("AppInstanceArn")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/app-instances/{AppInstanceArn}/streaming-configurations",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteMessagingStreamingConfigurationsRequest",
});
export const DeleteMessagingStreamingConfigurationsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteMessagingStreamingConfigurationsResponse",
});
export const DescribeChannelRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channels/{ChannelArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeChannelRequest",
});
export const Channel = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: S.optional(SensitiveString),
    ChannelArn: S.optional(S.String),
    Mode: S.optional(ChannelMode),
    Privacy: S.optional(ChannelPrivacy),
    Metadata: S.optional(SensitiveString),
    CreatedBy: S.optional(Identity),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastMessageTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ChannelFlowArn: S.optional(S.String),
    ElasticChannelConfiguration: S.optional(ElasticChannelConfiguration),
    ExpirationSettings: S.optional(ExpirationSettings),
})).annotate({ identifier: "Channel" });
export const DescribeChannelResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Channel: S.optional(Channel) })).annotate({
    identifier: "DescribeChannelResponse",
});
export const DescribeChannelBanRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MemberArn: S.String.pipe(T.HttpLabel("MemberArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels/{ChannelArn}/bans/{MemberArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeChannelBanRequest",
});
export const ChannelBan = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Member: S.optional(Identity),
    ChannelArn: S.optional(S.String),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    CreatedBy: S.optional(Identity),
})).annotate({ identifier: "ChannelBan" });
export const DescribeChannelBanResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelBan: S.optional(ChannelBan) })).annotate({
    identifier: "DescribeChannelBanResponse",
});
export const DescribeChannelFlowRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelFlowArn: S.String.pipe(T.HttpLabel("ChannelFlowArn")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channel-flows/{ChannelFlowArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeChannelFlowRequest",
});
export const ChannelFlow = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelFlowArn: S.optional(S.String),
    Processors: S.optional(ProcessorList),
    Name: S.optional(SensitiveString),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({ identifier: "ChannelFlow" });
export const DescribeChannelFlowResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelFlow: S.optional(ChannelFlow) })).annotate({
    identifier: "DescribeChannelFlowResponse",
});
export const DescribeChannelMembershipRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MemberArn: S.String.pipe(T.HttpLabel("MemberArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String).pipe(T.HttpQuery("sub-channel-id")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels/{ChannelArn}/memberships/{MemberArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeChannelMembershipRequest",
});
export const ChannelMembership = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    InvitedBy: S.optional(Identity),
    Type: S.optional(ChannelMembershipType),
    Member: S.optional(Identity),
    ChannelArn: S.optional(S.String),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    SubChannelId: S.optional(S.String),
})).annotate({
    identifier: "ChannelMembership",
});
export const DescribeChannelMembershipResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelMembership: S.optional(ChannelMembership) })).annotate({
    identifier: "DescribeChannelMembershipResponse",
});
export const DescribeChannelMembershipForAppInstanceUserRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    AppInstanceUserArn: S.String.pipe(T.HttpQuery("app-instance-user-arn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels/{ChannelArn}?scope=app-instance-user-membership",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeChannelMembershipForAppInstanceUserRequest",
});
export const ChannelSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: S.optional(SensitiveString),
    ChannelArn: S.optional(S.String),
    Mode: S.optional(ChannelMode),
    Privacy: S.optional(ChannelPrivacy),
    Metadata: S.optional(SensitiveString),
    LastMessageTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({ identifier: "ChannelSummary" });
export const AppInstanceUserMembershipSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Type: S.optional(ChannelMembershipType),
    ReadMarkerTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    SubChannelId: S.optional(S.String),
})).annotate({
    identifier: "AppInstanceUserMembershipSummary",
});
export const ChannelMembershipForAppInstanceUserSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelSummary: S.optional(ChannelSummary),
    AppInstanceUserMembershipSummary: S.optional(AppInstanceUserMembershipSummary),
})).annotate({
    identifier: "ChannelMembershipForAppInstanceUserSummary",
});
export const DescribeChannelMembershipForAppInstanceUserResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelMembership: S.optional(ChannelMembershipForAppInstanceUserSummary),
})).annotate({
    identifier: "DescribeChannelMembershipForAppInstanceUserResponse",
});
export const DescribeChannelModeratedByAppInstanceUserRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    AppInstanceUserArn: S.String.pipe(T.HttpQuery("app-instance-user-arn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels/{ChannelArn}?scope=app-instance-user-moderated-channel",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeChannelModeratedByAppInstanceUserRequest",
});
export const ChannelModeratedByAppInstanceUserSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelSummary: S.optional(ChannelSummary) })).annotate({
    identifier: "ChannelModeratedByAppInstanceUserSummary",
});
export const DescribeChannelModeratedByAppInstanceUserResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Channel: S.optional(ChannelModeratedByAppInstanceUserSummary) })).annotate({
    identifier: "DescribeChannelModeratedByAppInstanceUserResponse",
});
export const DescribeChannelModeratorRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChannelModeratorArn: S.String.pipe(T.HttpLabel("ChannelModeratorArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels/{ChannelArn}/moderators/{ChannelModeratorArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DescribeChannelModeratorRequest",
});
export const ChannelModerator = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Moderator: S.optional(Identity),
    ChannelArn: S.optional(S.String),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    CreatedBy: S.optional(Identity),
})).annotate({
    identifier: "ChannelModerator",
});
export const DescribeChannelModeratorResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelModerator: S.optional(ChannelModerator) })).annotate({
    identifier: "DescribeChannelModeratorResponse",
});
export const DisassociateChannelFlowRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChannelFlowArn: S.String.pipe(T.HttpLabel("ChannelFlowArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channels/{ChannelArn}/channel-flow/{ChannelFlowArn}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DisassociateChannelFlowRequest",
});
export const DisassociateChannelFlowResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DisassociateChannelFlowResponse",
});
export const GetChannelMembershipPreferencesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MemberArn: S.String.pipe(T.HttpLabel("MemberArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels/{ChannelArn}/memberships/{MemberArn}/preferences",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetChannelMembershipPreferencesRequest",
});
export const AllowNotifications = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PushNotificationPreferences = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AllowNotifications: AllowNotifications,
    FilterRule: S.optional(SensitiveString),
})).annotate({
    identifier: "PushNotificationPreferences",
});
export const ChannelMembershipPreferences = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ PushNotifications: S.optional(PushNotificationPreferences) })).annotate({
    identifier: "ChannelMembershipPreferences",
});
export const GetChannelMembershipPreferencesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    Member: S.optional(Identity),
    Preferences: S.optional(ChannelMembershipPreferences),
})).annotate({
    identifier: "GetChannelMembershipPreferencesResponse",
});
export const GetChannelMessageRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MessageId: S.String.pipe(T.HttpLabel("MessageId")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String).pipe(T.HttpQuery("sub-channel-id")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels/{ChannelArn}/messages/{MessageId}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetChannelMessageRequest",
});
export const ChannelMessageType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ChannelMessagePersistenceType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const ChannelMessageStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ChannelMessageStatusStructure = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Value: S.optional(ChannelMessageStatus),
    Detail: S.optional(S.String),
})).annotate({
    identifier: "ChannelMessageStatusStructure",
});
export const Target = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MemberArn: S.optional(S.String) })).annotate({ identifier: "Target" });
export const TargetList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Target);
export const ChannelMessage = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    MessageId: S.optional(S.String),
    Content: S.optional(SensitiveString),
    Metadata: S.optional(SensitiveString),
    Type: S.optional(ChannelMessageType),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastEditedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    Sender: S.optional(Identity),
    Redacted: S.optional(S.Boolean),
    Persistence: S.optional(ChannelMessagePersistenceType),
    Status: S.optional(ChannelMessageStatusStructure),
    MessageAttributes: S.optional(MessageAttributeMap),
    SubChannelId: S.optional(S.String),
    ContentType: S.optional(SensitiveString),
    Target: S.optional(TargetList),
})).annotate({ identifier: "ChannelMessage" });
export const GetChannelMessageResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelMessage: S.optional(ChannelMessage) })).annotate({
    identifier: "GetChannelMessageResponse",
});
export const GetChannelMessageStatusRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MessageId: S.String.pipe(T.HttpLabel("MessageId")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String).pipe(T.HttpQuery("sub-channel-id")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels/{ChannelArn}/messages/{MessageId}?scope=message-status",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetChannelMessageStatusRequest",
});
export const GetChannelMessageStatusResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Status: S.optional(ChannelMessageStatusStructure) })).annotate({
    identifier: "GetChannelMessageStatusResponse",
});
export const NetworkType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetMessagingSessionEndpointRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    NetworkType: S.optional(NetworkType).pipe(T.HttpQuery("network-type")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/endpoints/messaging-session" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetMessagingSessionEndpointRequest",
});
export const MessagingSessionEndpoint = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Url: S.optional(S.String) })).annotate({
    identifier: "MessagingSessionEndpoint",
});
export const GetMessagingSessionEndpointResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Endpoint: S.optional(MessagingSessionEndpoint) })).annotate({
    identifier: "GetMessagingSessionEndpointResponse",
});
export const GetMessagingStreamingConfigurationsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceArn: S.String.pipe(T.HttpLabel("AppInstanceArn")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/app-instances/{AppInstanceArn}/streaming-configurations",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetMessagingStreamingConfigurationsRequest",
});
export const MessagingDataType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const StreamingConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ DataType: MessagingDataType, ResourceArn: S.String })).annotate({
    identifier: "StreamingConfiguration",
});
export const StreamingConfigurationList = /*@__PURE__*/ /*#__PURE__*/ S.Array(StreamingConfiguration);
export const GetMessagingStreamingConfigurationsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StreamingConfigurations: S.optional(StreamingConfigurationList),
})).annotate({
    identifier: "GetMessagingStreamingConfigurationsResponse",
});
export const ListChannelBansRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channels/{ChannelArn}/bans" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelBansRequest",
});
export const ChannelBanSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Member: S.optional(Identity) })).annotate({
    identifier: "ChannelBanSummary",
});
export const ChannelBanSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelBanSummary);
export const ListChannelBansResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    NextToken: S.optional(SensitiveString),
    ChannelBans: S.optional(ChannelBanSummaryList),
})).annotate({
    identifier: "ListChannelBansResponse",
});
export const ListChannelFlowsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceArn: S.String.pipe(T.HttpQuery("app-instance-arn")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channel-flows" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelFlowsRequest",
});
export const ChannelFlowSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelFlowArn: S.optional(S.String),
    Name: S.optional(SensitiveString),
    Processors: S.optional(ProcessorList),
})).annotate({
    identifier: "ChannelFlowSummary",
});
export const ChannelFlowSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelFlowSummary);
export const ListChannelFlowsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelFlows: S.optional(ChannelFlowSummaryList),
    NextToken: S.optional(SensitiveString),
})).annotate({
    identifier: "ListChannelFlowsResponse",
});
export const ListChannelMembershipsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    Type: S.optional(ChannelMembershipType).pipe(T.HttpQuery("type")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String).pipe(T.HttpQuery("sub-channel-id")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channels/{ChannelArn}/memberships" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelMembershipsRequest",
});
export const ChannelMembershipSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Member: S.optional(Identity) })).annotate({
    identifier: "ChannelMembershipSummary",
});
export const ChannelMembershipSummaryList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelMembershipSummary);
export const ListChannelMembershipsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    ChannelMemberships: S.optional(ChannelMembershipSummaryList),
    NextToken: S.optional(SensitiveString),
})).annotate({
    identifier: "ListChannelMembershipsResponse",
});
export const ListChannelMembershipsForAppInstanceUserRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceUserArn: S.optional(S.String).pipe(T.HttpQuery("app-instance-user-arn")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels?scope=app-instance-user-memberships",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelMembershipsForAppInstanceUserRequest",
});
export const ChannelMembershipForAppInstanceUserSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelMembershipForAppInstanceUserSummary);
export const ListChannelMembershipsForAppInstanceUserResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelMemberships: S.optional(ChannelMembershipForAppInstanceUserSummaryList),
    NextToken: S.optional(SensitiveString),
})).annotate({
    identifier: "ListChannelMembershipsForAppInstanceUserResponse",
});
export const SortOrder = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ListChannelMessagesRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    SortOrder: S.optional(SortOrder).pipe(T.HttpQuery("sort-order")),
    NotBefore: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))).pipe(T.HttpQuery("not-before")),
    NotAfter: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))).pipe(T.HttpQuery("not-after")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String).pipe(T.HttpQuery("sub-channel-id")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channels/{ChannelArn}/messages" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelMessagesRequest",
});
export const ChannelMessageSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MessageId: S.optional(S.String),
    Content: S.optional(SensitiveString),
    Metadata: S.optional(SensitiveString),
    Type: S.optional(ChannelMessageType),
    CreatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastUpdatedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    LastEditedTimestamp: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    Sender: S.optional(Identity),
    Redacted: S.optional(S.Boolean),
    Status: S.optional(ChannelMessageStatusStructure),
    MessageAttributes: S.optional(MessageAttributeMap),
    ContentType: S.optional(SensitiveString),
    Target: S.optional(TargetList),
})).annotate({
    identifier: "ChannelMessageSummary",
});
export const ChannelMessageSummaryList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelMessageSummary);
export const ListChannelMessagesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    NextToken: S.optional(SensitiveString),
    ChannelMessages: S.optional(ChannelMessageSummaryList),
    SubChannelId: S.optional(S.String),
})).annotate({
    identifier: "ListChannelMessagesResponse",
});
export const ListChannelModeratorsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channels/{ChannelArn}/moderators" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelModeratorsRequest",
});
export const ChannelModeratorSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Moderator: S.optional(Identity) })).annotate({
    identifier: "ChannelModeratorSummary",
});
export const ChannelModeratorSummaryList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelModeratorSummary);
export const ListChannelModeratorsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    NextToken: S.optional(SensitiveString),
    ChannelModerators: S.optional(ChannelModeratorSummaryList),
})).annotate({
    identifier: "ListChannelModeratorsResponse",
});
export const ListChannelsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceArn: S.String.pipe(T.HttpQuery("app-instance-arn")),
    Privacy: S.optional(ChannelPrivacy).pipe(T.HttpQuery("privacy")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channels" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelsRequest",
});
export const ChannelSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelSummary);
export const ListChannelsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Channels: S.optional(ChannelSummaryList),
    NextToken: S.optional(SensitiveString),
})).annotate({
    identifier: "ListChannelsResponse",
});
export const ListChannelsAssociatedWithChannelFlowRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelFlowArn: S.String.pipe(T.HttpQuery("channel-flow-arn")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels?scope=channel-flow-associations",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelsAssociatedWithChannelFlowRequest",
});
export const ChannelAssociatedWithFlowSummary = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Name: S.optional(SensitiveString),
    ChannelArn: S.optional(S.String),
    Mode: S.optional(ChannelMode),
    Privacy: S.optional(ChannelPrivacy),
    Metadata: S.optional(SensitiveString),
})).annotate({
    identifier: "ChannelAssociatedWithFlowSummary",
});
export const ChannelAssociatedWithFlowSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelAssociatedWithFlowSummary);
export const ListChannelsAssociatedWithChannelFlowResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Channels: S.optional(ChannelAssociatedWithFlowSummaryList),
    NextToken: S.optional(SensitiveString),
})).annotate({
    identifier: "ListChannelsAssociatedWithChannelFlowResponse",
});
export const ListChannelsModeratedByAppInstanceUserRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceUserArn: S.optional(S.String).pipe(T.HttpQuery("app-instance-user-arn")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channels?scope=app-instance-user-moderated-channels",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelsModeratedByAppInstanceUserRequest",
});
export const ChannelModeratedByAppInstanceUserSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelModeratedByAppInstanceUserSummary);
export const ListChannelsModeratedByAppInstanceUserResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Channels: S.optional(ChannelModeratedByAppInstanceUserSummaryList),
    NextToken: S.optional(SensitiveString),
})).annotate({
    identifier: "ListChannelsModeratedByAppInstanceUserResponse",
});
export const ListSubChannelsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channels/{ChannelArn}/subchannels" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListSubChannelsRequest",
});
export const SubChannelSummary = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SubChannelId: S.optional(S.String),
    MembershipCount: S.optional(S.Number),
})).annotate({
    identifier: "SubChannelSummary",
});
export const SubChannelSummaryList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(SubChannelSummary);
export const ListSubChannelsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    SubChannels: S.optional(SubChannelSummaryList),
    NextToken: S.optional(SensitiveString),
})).annotate({
    identifier: "ListSubChannelsResponse",
});
export const ListTagsForResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceARN: S.String.pipe(T.HttpQuery("arn")) }).pipe(T.all(T.Http({ method: "GET", uri: "/tags" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTagsForResourceRequest",
});
export const ListTagsForResourceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Tags: S.optional(TagList) })).annotate({
    identifier: "ListTagsForResourceResponse",
});
export const PutChannelExpirationSettingsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChimeBearer: S.optional(S.String).pipe(T.HttpHeader("x-amz-chime-bearer")),
    ExpirationSettings: S.optional(ExpirationSettings),
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/channels/{ChannelArn}/expiration-settings",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutChannelExpirationSettingsRequest",
});
export const PutChannelExpirationSettingsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    ExpirationSettings: S.optional(ExpirationSettings),
})).annotate({
    identifier: "PutChannelExpirationSettingsResponse",
});
export const PutChannelMembershipPreferencesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MemberArn: S.String.pipe(T.HttpLabel("MemberArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    Preferences: ChannelMembershipPreferences,
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/channels/{ChannelArn}/memberships/{MemberArn}/preferences",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutChannelMembershipPreferencesRequest",
});
export const PutChannelMembershipPreferencesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    Member: S.optional(Identity),
    Preferences: S.optional(ChannelMembershipPreferences),
})).annotate({
    identifier: "PutChannelMembershipPreferencesResponse",
});
export const PutMessagingStreamingConfigurationsRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AppInstanceArn: S.String.pipe(T.HttpLabel("AppInstanceArn")),
    StreamingConfigurations: StreamingConfigurationList,
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/app-instances/{AppInstanceArn}/streaming-configurations",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutMessagingStreamingConfigurationsRequest",
});
export const PutMessagingStreamingConfigurationsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StreamingConfigurations: S.optional(StreamingConfigurationList),
})).annotate({
    identifier: "PutMessagingStreamingConfigurationsResponse",
});
export const RedactChannelMessageRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MessageId: S.String.pipe(T.HttpLabel("MessageId")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/channels/{ChannelArn}/messages/{MessageId}?operation=redact",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "RedactChannelMessageRequest",
});
export const RedactChannelMessageResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    MessageId: S.optional(S.String),
    SubChannelId: S.optional(S.String),
})).annotate({
    identifier: "RedactChannelMessageResponse",
});
export const SearchFieldKey = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SearchFieldValues = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const SearchFieldOperator = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const SearchField = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Key: SearchFieldKey,
    Values: SearchFieldValues,
    Operator: SearchFieldOperator,
})).annotate({ identifier: "SearchField" });
export const SearchFields = /*@__PURE__*/ /*#__PURE__*/ S.Array(SearchField);
export const SearchChannelsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChimeBearer: S.optional(S.String).pipe(T.HttpHeader("x-amz-chime-bearer")),
    Fields: SearchFields,
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
    NextToken: S.optional(SensitiveString).pipe(T.HttpQuery("next-token")),
}).pipe(T.all(T.Http({ method: "POST", uri: "/channels?operation=search" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "SearchChannelsRequest",
});
export const SearchChannelsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Channels: S.optional(ChannelSummaryList),
    NextToken: S.optional(SensitiveString),
})).annotate({
    identifier: "SearchChannelsResponse",
});
export const SendChannelMessageRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    Content: SensitiveString,
    Type: ChannelMessageType,
    Persistence: ChannelMessagePersistenceType,
    Metadata: S.optional(SensitiveString),
    ClientRequestToken: SensitiveString.pipe(T.IdempotencyToken()),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    PushNotification: S.optional(PushNotificationConfiguration),
    MessageAttributes: S.optional(MessageAttributeMap),
    SubChannelId: S.optional(S.String),
    ContentType: S.optional(SensitiveString),
    Target: S.optional(TargetList),
}).pipe(T.all(T.Http({ method: "POST", uri: "/channels/{ChannelArn}/messages" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "SendChannelMessageRequest",
});
export const SendChannelMessageResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    MessageId: S.optional(S.String),
    Status: S.optional(ChannelMessageStatusStructure),
    SubChannelId: S.optional(S.String),
})).annotate({
    identifier: "SendChannelMessageResponse",
});
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceARN: S.String, Tags: TagList }).pipe(T.all(T.Http({ method: "POST", uri: "/tags?operation=tag-resource" }), 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(SensitiveString);
export const UntagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceARN: S.String, TagKeys: TagKeyList }).pipe(T.all(T.Http({ method: "POST", uri: "/tags?operation=untag-resource" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UntagResourceRequest",
});
export const UntagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UntagResourceResponse",
});
export const UpdateChannelRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    Name: S.optional(SensitiveString),
    Mode: S.optional(ChannelMode),
    Metadata: S.optional(SensitiveString),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/channels/{ChannelArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateChannelRequest",
});
export const UpdateChannelResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelArn: S.optional(S.String) })).annotate({
    identifier: "UpdateChannelResponse",
});
export const UpdateChannelFlowRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelFlowArn: S.String.pipe(T.HttpLabel("ChannelFlowArn")),
    Processors: ProcessorList,
    Name: SensitiveString,
}).pipe(T.all(T.Http({ method: "PUT", uri: "/channel-flows/{ChannelFlowArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateChannelFlowRequest",
});
export const UpdateChannelFlowResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelFlowArn: S.optional(S.String) })).annotate({
    identifier: "UpdateChannelFlowResponse",
});
export const UpdateChannelMessageRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    MessageId: S.String.pipe(T.HttpLabel("MessageId")),
    Content: SensitiveString,
    Metadata: S.optional(SensitiveString),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
    SubChannelId: S.optional(S.String),
    ContentType: S.optional(SensitiveString),
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/channels/{ChannelArn}/messages/{MessageId}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateChannelMessageRequest",
});
export const UpdateChannelMessageResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.optional(S.String),
    MessageId: S.optional(S.String),
    Status: S.optional(ChannelMessageStatusStructure),
    SubChannelId: S.optional(S.String),
})).annotate({
    identifier: "UpdateChannelMessageResponse",
});
export const UpdateChannelReadMarkerRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelArn: S.String.pipe(T.HttpLabel("ChannelArn")),
    ChimeBearer: S.String.pipe(T.HttpHeader("x-amz-chime-bearer")),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/channels/{ChannelArn}/readMarker" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateChannelReadMarkerRequest",
});
export const UpdateChannelReadMarkerResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ChannelArn: S.optional(S.String) })).annotate({
    identifier: "UpdateChannelReadMarkerResponse",
});
//# Errors
export class BadRequestException extends S.TaggedErrorClass()("BadRequestException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withBadRequestError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withConflictError) {
}
export class ForbiddenException extends S.TaggedErrorClass()("ForbiddenException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withAuthError) {
}
export class NotFoundException extends S.TaggedErrorClass()("NotFoundException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withBadRequestError) {
}
export class ServiceFailureException extends S.TaggedErrorClass()("ServiceFailureException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withServerError) {
}
export class ServiceUnavailableException extends S.TaggedErrorClass()("ServiceUnavailableException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withServerError) {
}
export class ThrottledClientException extends S.TaggedErrorClass()("ThrottledClientException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withThrottlingError) {
}
export class UnauthorizedClientException extends S.TaggedErrorClass()("UnauthorizedClientException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withAuthError) {
}
export class ResourceLimitExceededException extends S.TaggedErrorClass()("ResourceLimitExceededException", { Code: S.optional(ErrorCode), Message: S.optional(S.String) }).pipe(C.withBadRequestError) {
}
/**
 * Associates a channel flow with a channel. Once associated, all messages to that channel go through channel flow processors. To stop processing, use the
 * `DisassociateChannelFlow` API.
 *
 * Only administrators or channel moderators can associate a channel flow. The
 * `x-amz-chime-bearer` request header is mandatory. Use the ARN of the
 * `AppInstanceUser` or `AppInstanceBot`
 * that makes the API call as the value in the header.
 */
export const associateChannelFlow = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: AssociateChannelFlowRequest,
    output: AssociateChannelFlowResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Adds a specified number of users and bots to a channel.
 */
export const batchCreateChannelMembership = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchCreateChannelMembershipRequest,
    output: BatchCreateChannelMembershipResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ResourceLimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Calls back Amazon Chime SDK messaging with a processing response message. This should be invoked from the processor Lambda. This is a developer API.
 *
 * You can return one of the following processing responses:
 *
 * - Update message content or metadata
 *
 * - Deny a message
 *
 * - Make no changes to the message
 */
export const channelFlowCallback = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ChannelFlowCallbackRequest,
    output: ChannelFlowCallbackResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Creates a channel to which you can add users and send messages.
 *
 * **Restriction**: You can't change a channel's
 * privacy.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const createChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateChannelRequest,
    output: CreateChannelResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ResourceLimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Permanently bans a member from a channel. Moderators can't add banned members to a
 * channel. To undo a ban, you first have to `DeleteChannelBan`, and then
 * `CreateChannelMembership`. Bans are cleaned up when you delete users or
 * channels.
 *
 * If you ban a user who is already part of a channel, that user is automatically kicked
 * from the channel.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const createChannelBan = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateChannelBanRequest,
    output: CreateChannelBanResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ResourceLimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Creates a channel flow, a container for processors. Processors are AWS Lambda functions
 * that perform actions on chat messages, such as stripping out profanity. You can associate
 * channel flows with channels, and the processors in the channel flow then take action on all
 * messages sent to that channel. This is a developer API.
 *
 * Channel flows process the following items:
 *
 * - New and updated messages
 *
 * - Persistent and non-persistent messages
 *
 * - The Standard message type
 *
 * Channel flows don't process Control or System messages. For more information about the message types provided by Chime SDK messaging, refer to
 * Message types in the *Amazon Chime developer guide*.
 */
export const createChannelFlow = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateChannelFlowRequest,
    output: CreateChannelFlowResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ResourceLimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Adds a member to a channel. The `InvitedBy` field in `ChannelMembership`
 * is derived from the request header. A channel member can:
 *
 * - List messages
 *
 * - Send messages
 *
 * - Receive messages
 *
 * - Edit their own messages
 *
 * - Leave the channel
 *
 * Privacy settings impact this action as follows:
 *
 * - Public Channels: You do not need to be a member to list messages, but you must be
 * a member to send messages.
 *
 * - Private Channels: You must be a member to list or send messages.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUserArn` or `AppInstanceBot` that makes the API call
 * as the value in the header.
 */
export const createChannelMembership = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateChannelMembershipRequest,
    output: CreateChannelMembershipResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        NotFoundException,
        ResourceLimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Creates a new `ChannelModerator`. A channel moderator can:
 *
 * - Add and remove other members of the channel.
 *
 * - Add and remove other moderators of the channel.
 *
 * - Add and remove user bans for the channel.
 *
 * - Redact messages in the channel.
 *
 * - List messages in the channel.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot`of the user that makes the API call as the value in
 * the header.
 */
export const createChannelModerator = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateChannelModeratorRequest,
    output: CreateChannelModeratorResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ResourceLimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Immediately makes a channel and its memberships inaccessible and marks them for
 * deletion. This is an irreversible process.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUserArn` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const deleteChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelRequest,
    output: DeleteChannelResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Removes a member from a channel's ban list.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const deleteChannelBan = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelBanRequest,
    output: DeleteChannelBanResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Deletes a channel flow, an irreversible process. This is a developer API.
 *
 * This API works only when the channel flow is not associated with any channel. To get a list of all channels that a channel flow is associated with, use the
 * `ListChannelsAssociatedWithChannelFlow` API. Use the `DisassociateChannelFlow` API to disassociate a channel flow from all channels.
 */
export const deleteChannelFlow = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelFlowRequest,
    output: DeleteChannelFlowResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Removes a member from a channel.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * `AppInstanceUserArn` of the user that makes the API call as the value in
 * the header.
 */
export const deleteChannelMembership = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelMembershipRequest,
    output: DeleteChannelMembershipResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Deletes a channel message. Only admins can perform this action. Deletion makes messages
 * inaccessible immediately. A background process deletes any revisions created by
 * `UpdateChannelMessage`.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const deleteChannelMessage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelMessageRequest,
    output: DeleteChannelMessageResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Deletes a channel moderator.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const deleteChannelModerator = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelModeratorRequest,
    output: DeleteChannelModeratorResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Deletes the streaming configurations for an `AppInstance`. For more information, see
 * Streaming messaging data in the *Amazon Chime SDK Developer Guide*.
 */
export const deleteMessagingStreamingConfigurations = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteMessagingStreamingConfigurationsRequest,
    output: DeleteMessagingStreamingConfigurationsResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Returns the full details of a channel in an Amazon Chime
 * `AppInstance`.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const describeChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeChannelRequest,
    output: DescribeChannelResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Returns the full details of a channel ban.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const describeChannelBan = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeChannelBanRequest,
    output: DescribeChannelBanResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Returns the full details of a channel flow in an Amazon Chime `AppInstance`. This is a developer API.
 */
export const describeChannelFlow = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeChannelFlowRequest,
    output: DescribeChannelFlowResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Returns the full details of a user's channel membership.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const describeChannelMembership = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeChannelMembershipRequest,
    output: DescribeChannelMembershipResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Returns the details of a channel based on the membership of the specified
 * `AppInstanceUser` or `AppInstanceBot`.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const describeChannelMembershipForAppInstanceUser = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeChannelMembershipForAppInstanceUserRequest,
    output: DescribeChannelMembershipForAppInstanceUserResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Returns the full details of a channel moderated by the specified
 * `AppInstanceUser` or `AppInstanceBot`.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const describeChannelModeratedByAppInstanceUser = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeChannelModeratedByAppInstanceUserRequest,
    output: DescribeChannelModeratedByAppInstanceUserResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Returns the full details of a single ChannelModerator.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * `AppInstanceUserArn` of the user that makes the API call as the value in
 * the header.
 */
export const describeChannelModerator = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DescribeChannelModeratorRequest,
    output: DescribeChannelModeratorResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Disassociates a channel flow from all its channels. Once disassociated, all messages to
 * that channel stop going through the channel flow processor.
 *
 * Only administrators or channel moderators can disassociate a channel flow.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const disassociateChannelFlow = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DisassociateChannelFlowRequest,
    output: DisassociateChannelFlowResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Gets the membership preferences of an `AppInstanceUser` or `AppInstanceBot`
 * for the specified channel. A user or a bot must be a member of the channel and own the membership in order to retrieve membership preferences.
 * Users or bots in the `AppInstanceAdmin` and channel moderator roles can't
 * retrieve preferences for other users or bots. Banned users or bots can't retrieve membership preferences for the
 * channel from which they are banned.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const getChannelMembershipPreferences = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetChannelMembershipPreferencesRequest,
    output: GetChannelMembershipPreferencesResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Gets the full details of a channel message.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const getChannelMessage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetChannelMessageRequest,
    output: GetChannelMessageResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Gets message status for a specified `messageId`. Use this API to determine the intermediate status of messages going through channel flow processing. The API provides an alternative to
 * retrieving message status if the event was not received because a client wasn't connected to a websocket.
 *
 * Messages can have any one of these statuses.
 *
 * ### SENT
 *
 * Message processed successfully
 *
 * ### PENDING
 *
 * Ongoing processing
 *
 * ### FAILED
 *
 * Processing failed
 *
 * ### DENIED
 *
 * Message denied by the processor
 *
 * - This API does not return statuses for denied messages, because we don't store them once the processor denies them.
 *
 * - Only the message sender can invoke this API.
 *
 * - The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const getChannelMessageStatus = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetChannelMessageStatusRequest,
    output: GetChannelMessageStatusResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * The details of the endpoint for the messaging session.
 */
export const getMessagingSessionEndpoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetMessagingSessionEndpointRequest,
    output: GetMessagingSessionEndpointResponse,
    errors: [
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Retrieves the data streaming configuration for an `AppInstance`. For more information, see
 * Streaming messaging data in the *Amazon Chime SDK Developer Guide*.
 */
export const getMessagingStreamingConfigurations = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetMessagingStreamingConfigurationsRequest,
    output: GetMessagingStreamingConfigurationsResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Lists all the users and bots banned from a particular channel.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const listChannelBans = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelBansRequest,
    output: ListChannelBansResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a paginated lists of all the channel flows created under a single Chime. This is a developer API.
 */
export const listChannelFlows = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelFlowsRequest,
    output: ListChannelFlowsResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists all channel memberships in a channel.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 *
 * If you want to list the channels to which a specific app instance user belongs, see the
 * ListChannelMembershipsForAppInstanceUser API.
 */
export const listChannelMemberships = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelMembershipsRequest,
    output: ListChannelMembershipsResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists all channels that an `AppInstanceUser` or `AppInstanceBot` is a part of.
 * Only an `AppInstanceAdmin` can call the API with a user ARN that is not their own.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const listChannelMembershipsForAppInstanceUser = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelMembershipsForAppInstanceUserRequest,
    output: ListChannelMembershipsForAppInstanceUserResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * List all the messages in a channel. Returns a paginated list of
 * `ChannelMessages`. By default, sorted by creation timestamp in descending
 * order.
 *
 * Redacted messages appear in the results as empty, since they are only redacted, not
 * deleted. Deleted messages do not appear in the results. This action always returns the
 * latest version of an edited message.
 *
 * Also, the `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const listChannelMessages = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelMessagesRequest,
    output: ListChannelMessagesResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists all the moderators for a channel.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const listChannelModerators = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelModeratorsRequest,
    output: ListChannelModeratorsResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists all Channels created under a single Chime App as a paginated list. You can specify
 * filters to narrow results.
 *
 * **Functionality & restrictions**
 *
 * - Use privacy = `PUBLIC` to retrieve all public channels in the
 * account.
 *
 * - Only an `AppInstanceAdmin` can set privacy = `PRIVATE` to
 * list the private channels in an account.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const listChannels = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelsRequest,
    output: ListChannelsResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists all channels associated with a specified channel flow. You can associate a channel flow with multiple channels, but you can only associate a channel with one channel flow. This is a developer API.
 */
export const listChannelsAssociatedWithChannelFlow = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelsAssociatedWithChannelFlowRequest,
    output: ListChannelsAssociatedWithChannelFlowResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * A list of the channels moderated by an `AppInstanceUser`.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const listChannelsModeratedByAppInstanceUser = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelsModeratedByAppInstanceUserRequest,
    output: ListChannelsModeratedByAppInstanceUserResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists all the SubChannels in an elastic channel when given a channel ID. Available only to the app instance admins and channel moderators of elastic channels.
 */
export const listSubChannels = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListSubChannelsRequest,
    output: ListSubChannelsResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Lists the tags applied to an Amazon Chime SDK messaging resource.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Sets the number of days before the channel is automatically deleted.
 *
 * - A background process deletes expired channels within 6 hours of expiration.
 * Actual deletion times may vary.
 *
 * - Expired channels that have not yet been deleted appear as active, and you can update
 * their expiration settings. The system honors the new settings.
 *
 * - The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const putChannelExpirationSettings = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutChannelExpirationSettingsRequest,
    output: PutChannelExpirationSettingsResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Sets the membership preferences of an `AppInstanceUser` or `AppInstanceBot`
 * for the specified channel. The user or bot must be a member of the channel. Only the user or bot who owns the
 * membership can set preferences. Users or bots in the `AppInstanceAdmin` and channel moderator roles can't set
 * preferences for other users. Banned users or bots can't set membership preferences for the channel from
 * which they are banned.
 *
 * The x-amz-chime-bearer request header is mandatory. Use the ARN of an
 * `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in the
 * header.
 */
export const putChannelMembershipPreferences = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutChannelMembershipPreferencesRequest,
    output: PutChannelMembershipPreferencesResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Sets the data streaming configuration for an `AppInstance`. For more information, see
 * Streaming messaging data in the *Amazon Chime SDK Developer Guide*.
 */
export const putMessagingStreamingConfigurations = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutMessagingStreamingConfigurationsRequest,
    output: PutMessagingStreamingConfigurationsResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Redacts message content and metadata. The message exists in the back end, but the
 * action returns null content, and the state shows as redacted.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const redactChannelMessage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: RedactChannelMessageRequest,
    output: RedactChannelMessageResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Allows the `ChimeBearer` to search channels by channel members. Users or bots can search
 * across the channels that they belong to. Users in the `AppInstanceAdmin` role can search across
 * all channels.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 *
 * This operation isn't supported for `AppInstanceUsers` with a large number of memberships.
 */
export const searchChannels = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: SearchChannelsRequest,
    output: SearchChannelsResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Sends a message to a particular channel that the member is a part of.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 *
 * Also, `STANDARD` messages can be up to 4KB in size and contain metadata. Metadata is arbitrary,
 * and you can use it in a variety of ways, such as containing a link to an attachment.
 *
 * `CONTROL` messages are limited to 30 bytes and do not contain metadata.
 */
export const sendChannelMessage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: SendChannelMessageRequest,
    output: SendChannelMessageResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Applies the specified tags to the specified Amazon Chime SDK messaging resource.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ResourceLimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Removes the specified tags from the specified Amazon Chime SDK messaging resource.
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Update a channel's attributes.
 *
 * **Restriction**: You can't change a channel's privacy.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const updateChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateChannelRequest,
    output: UpdateChannelResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Updates channel flow attributes. This is a developer API.
 */
export const updateChannelFlow = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateChannelFlowRequest,
    output: UpdateChannelFlowResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * Updates the content of a message.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const updateChannelMessage = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateChannelMessageRequest,
    output: UpdateChannelMessageResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
/**
 * The details of the time when a user last read messages in a channel.
 *
 * The `x-amz-chime-bearer` request header is mandatory. Use the
 * ARN of the `AppInstanceUser` or `AppInstanceBot` that makes the API call as the value in
 * the header.
 */
export const updateChannelReadMarker = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateChannelReadMarkerRequest,
    output: UpdateChannelReadMarkerResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottledClientException,
        UnauthorizedClientException,
    ],
}));
//# sourceMappingURL=chime-sdk-messaging.js.map