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 Meetings",
    serviceShapeName: "ChimeMeetingsSDKService",
});
const auth = T.AwsAuthSigv4({ name: "chime" });
const ver = T.ServiceVersion("2021-07-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://meetings-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://meetings-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://meetings-chime.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://meetings-chime.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const MediaCapabilities = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AttendeeCapabilities = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Audio: MediaCapabilities,
    Video: MediaCapabilities,
    Content: MediaCapabilities,
})).annotate({
    identifier: "AttendeeCapabilities",
});
export const CreateAttendeeRequestItem = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ExternalUserId: SensitiveString,
    Capabilities: S.optional(AttendeeCapabilities),
})).annotate({
    identifier: "CreateAttendeeRequestItem",
});
export const CreateAttendeeRequestItemList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(CreateAttendeeRequestItem);
export const BatchCreateAttendeeRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.String.pipe(T.HttpLabel("MeetingId")),
    Attendees: CreateAttendeeRequestItemList,
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/meetings/{MeetingId}/attendees?operation=batch-create",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchCreateAttendeeRequest",
});
export const Attendee = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ExternalUserId: S.optional(SensitiveString),
    AttendeeId: S.optional(S.String),
    JoinToken: S.optional(SensitiveString),
    Capabilities: S.optional(AttendeeCapabilities),
})).annotate({ identifier: "Attendee" });
export const AttendeeList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Attendee);
export const CreateAttendeeError_ = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ExternalUserId: S.optional(SensitiveString),
    ErrorCode: S.optional(S.String),
    ErrorMessage: S.optional(S.String),
})).annotate({
    identifier: "CreateAttendeeError",
});
export const BatchCreateAttendeeErrorList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(CreateAttendeeError_);
export const BatchCreateAttendeeResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Attendees: S.optional(AttendeeList),
    Errors: S.optional(BatchCreateAttendeeErrorList),
})).annotate({
    identifier: "BatchCreateAttendeeResponse",
});
export const AttendeeIdItem = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AttendeeId: S.String })).annotate({ identifier: "AttendeeIdItem" });
export const AttendeeIdsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(AttendeeIdItem);
export const BatchUpdateAttendeeCapabilitiesExceptRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.String.pipe(T.HttpLabel("MeetingId")),
    ExcludedAttendeeIds: AttendeeIdsList,
    Capabilities: AttendeeCapabilities,
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/meetings/{MeetingId}/attendees/capabilities?operation=batch-update-except",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "BatchUpdateAttendeeCapabilitiesExceptRequest",
});
export const BatchUpdateAttendeeCapabilitiesExceptResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "BatchUpdateAttendeeCapabilitiesExceptResponse",
});
export const CreateAttendeeRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.String.pipe(T.HttpLabel("MeetingId")),
    ExternalUserId: SensitiveString,
    Capabilities: S.optional(AttendeeCapabilities),
}).pipe(T.all(T.Http({ method: "POST", uri: "/meetings/{MeetingId}/attendees" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateAttendeeRequest",
});
export const CreateAttendeeResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Attendee: S.optional(Attendee) })).annotate({
    identifier: "CreateAttendeeResponse",
});
export const NotificationsConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LambdaFunctionArn: S.optional(SensitiveString),
    SnsTopicArn: S.optional(SensitiveString),
    SqsQueueArn: S.optional(SensitiveString),
})).annotate({
    identifier: "NotificationsConfiguration",
});
export const MeetingFeatureStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const AudioFeatures = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ EchoReduction: S.optional(MeetingFeatureStatus) })).annotate({ identifier: "AudioFeatures" });
export const VideoResolution = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const VideoFeatures = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MaxResolution: S.optional(VideoResolution) })).annotate({ identifier: "VideoFeatures" });
export const ContentResolution = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ContentFeatures = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MaxResolution: S.optional(ContentResolution) })).annotate({
    identifier: "ContentFeatures",
});
export const AttendeeFeatures = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MaxCount: S.optional(S.Number) })).annotate({
    identifier: "AttendeeFeatures",
});
export const MeetingFeaturesConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Audio: S.optional(AudioFeatures),
    Video: S.optional(VideoFeatures),
    Content: S.optional(ContentFeatures),
    Attendee: S.optional(AttendeeFeatures),
})).annotate({
    identifier: "MeetingFeaturesConfiguration",
});
export const TenantIdList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const Tag = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Key: S.String, Value: S.String })).annotate({ identifier: "Tag" });
export const TagList = /*@__PURE__*/ /*#__PURE__*/ S.Array(Tag);
export const MediaPlacementNetworkType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateMeetingRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientRequestToken: SensitiveString.pipe(T.IdempotencyToken()),
    MediaRegion: S.String,
    MeetingHostId: S.optional(SensitiveString),
    ExternalMeetingId: SensitiveString,
    NotificationsConfiguration: S.optional(NotificationsConfiguration),
    MeetingFeatures: S.optional(MeetingFeaturesConfiguration),
    PrimaryMeetingId: S.optional(S.String),
    TenantIds: S.optional(TenantIdList),
    Tags: S.optional(TagList),
    MediaPlacementNetworkType: S.optional(MediaPlacementNetworkType),
}).pipe(T.all(T.Http({ method: "POST", uri: "/meetings" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateMeetingRequest",
});
export const MediaPlacement = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    AudioHostUrl: S.optional(S.String),
    AudioFallbackUrl: S.optional(S.String),
    SignalingUrl: S.optional(S.String),
    TurnControlUrl: S.optional(S.String),
    ScreenDataUrl: S.optional(S.String),
    ScreenViewingUrl: S.optional(S.String),
    ScreenSharingUrl: S.optional(S.String),
    EventIngestionUrl: S.optional(S.String),
})).annotate({ identifier: "MediaPlacement" });
export const Meeting = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.optional(S.String),
    MeetingHostId: S.optional(SensitiveString),
    ExternalMeetingId: S.optional(SensitiveString),
    MediaRegion: S.optional(S.String),
    MediaPlacement: S.optional(MediaPlacement),
    MeetingFeatures: S.optional(MeetingFeaturesConfiguration),
    PrimaryMeetingId: S.optional(S.String),
    TenantIds: S.optional(TenantIdList),
    MeetingArn: S.optional(S.String),
})).annotate({ identifier: "Meeting" });
export const CreateMeetingResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Meeting: S.optional(Meeting) })).annotate({
    identifier: "CreateMeetingResponse",
});
export const CreateMeetingWithAttendeesRequestItemList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(CreateAttendeeRequestItem);
export const CreateMeetingWithAttendeesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ClientRequestToken: SensitiveString.pipe(T.IdempotencyToken()),
    MediaRegion: S.String,
    MeetingHostId: S.optional(SensitiveString),
    ExternalMeetingId: SensitiveString,
    MeetingFeatures: S.optional(MeetingFeaturesConfiguration),
    NotificationsConfiguration: S.optional(NotificationsConfiguration),
    Attendees: CreateMeetingWithAttendeesRequestItemList,
    PrimaryMeetingId: S.optional(S.String),
    TenantIds: S.optional(TenantIdList),
    Tags: S.optional(TagList),
    MediaPlacementNetworkType: S.optional(MediaPlacementNetworkType),
}).pipe(T.all(T.Http({ method: "POST", uri: "/meetings?operation=create-attendees" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateMeetingWithAttendeesRequest",
});
export const CreateMeetingWithAttendeesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Meeting: S.optional(Meeting),
    Attendees: S.optional(AttendeeList),
    Errors: S.optional(BatchCreateAttendeeErrorList),
})).annotate({
    identifier: "CreateMeetingWithAttendeesResponse",
});
export const DeleteAttendeeRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.String.pipe(T.HttpLabel("MeetingId")),
    AttendeeId: S.String.pipe(T.HttpLabel("AttendeeId")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/meetings/{MeetingId}/attendees/{AttendeeId}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteAttendeeRequest",
});
export const DeleteAttendeeResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteAttendeeResponse",
});
export const DeleteMeetingRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MeetingId: S.String.pipe(T.HttpLabel("MeetingId")) }).pipe(T.all(T.Http({ method: "DELETE", uri: "/meetings/{MeetingId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteMeetingRequest",
});
export const DeleteMeetingResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteMeetingResponse",
});
export const GetAttendeeRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.String.pipe(T.HttpLabel("MeetingId")),
    AttendeeId: S.String.pipe(T.HttpLabel("AttendeeId")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/meetings/{MeetingId}/attendees/{AttendeeId}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetAttendeeRequest",
});
export const GetAttendeeResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Attendee: S.optional(Attendee) })).annotate({
    identifier: "GetAttendeeResponse",
});
export const GetMeetingRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MeetingId: S.String.pipe(T.HttpLabel("MeetingId")) }).pipe(T.all(T.Http({ method: "GET", uri: "/meetings/{MeetingId}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetMeetingRequest",
});
export const GetMeetingResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Meeting: S.optional(Meeting) })).annotate({
    identifier: "GetMeetingResponse",
});
export const ListAttendeesRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.String.pipe(T.HttpLabel("MeetingId")),
    NextToken: S.optional(S.String).pipe(T.HttpQuery("next-token")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("max-results")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/meetings/{MeetingId}/attendees" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListAttendeesRequest",
});
export const ListAttendeesResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Attendees: S.optional(AttendeeList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListAttendeesResponse",
});
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 TranscribeLanguageCode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribeVocabularyFilterMethod = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribeRegion = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribePartialResultsStability = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribeContentIdentificationType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribeContentRedactionType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const EngineTranscribeSettings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LanguageCode: S.optional(TranscribeLanguageCode),
    VocabularyFilterMethod: S.optional(TranscribeVocabularyFilterMethod),
    VocabularyFilterName: S.optional(S.String),
    VocabularyName: S.optional(S.String),
    Region: S.optional(TranscribeRegion),
    EnablePartialResultsStabilization: S.optional(S.Boolean),
    PartialResultsStability: S.optional(TranscribePartialResultsStability),
    ContentIdentificationType: S.optional(TranscribeContentIdentificationType),
    ContentRedactionType: S.optional(TranscribeContentRedactionType),
    PiiEntityTypes: S.optional(S.String),
    LanguageModelName: S.optional(S.String),
    IdentifyLanguage: S.optional(S.Boolean),
    LanguageOptions: S.optional(S.String),
    PreferredLanguage: S.optional(TranscribeLanguageCode),
    VocabularyNames: S.optional(S.String),
    VocabularyFilterNames: S.optional(S.String),
})).annotate({
    identifier: "EngineTranscribeSettings",
});
export const TranscribeMedicalLanguageCode = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribeMedicalSpecialty = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribeMedicalType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribeMedicalRegion = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TranscribeMedicalContentIdentificationType = 
/*@__PURE__*/ /*#__PURE__*/ S.String;
export const EngineTranscribeMedicalSettings = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    LanguageCode: TranscribeMedicalLanguageCode,
    Specialty: TranscribeMedicalSpecialty,
    Type: TranscribeMedicalType,
    VocabularyName: S.optional(S.String),
    Region: S.optional(TranscribeMedicalRegion),
    ContentIdentificationType: S.optional(TranscribeMedicalContentIdentificationType),
})).annotate({
    identifier: "EngineTranscribeMedicalSettings",
});
export const TranscriptionConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EngineTranscribeSettings: S.optional(EngineTranscribeSettings),
    EngineTranscribeMedicalSettings: S.optional(EngineTranscribeMedicalSettings),
})).annotate({
    identifier: "TranscriptionConfiguration",
});
export const StartMeetingTranscriptionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.String.pipe(T.HttpLabel("MeetingId")),
    TranscriptionConfiguration: TranscriptionConfiguration,
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/meetings/{MeetingId}/transcription?operation=start",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "StartMeetingTranscriptionRequest",
});
export const StartMeetingTranscriptionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "StartMeetingTranscriptionResponse",
});
export const StopMeetingTranscriptionRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ MeetingId: S.String.pipe(T.HttpLabel("MeetingId")) }).pipe(T.all(T.Http({
    method: "POST",
    uri: "/meetings/{MeetingId}/transcription?operation=stop",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "StopMeetingTranscriptionRequest",
});
export const StopMeetingTranscriptionResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "StopMeetingTranscriptionResponse",
});
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(S.String);
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 UpdateAttendeeCapabilitiesRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MeetingId: S.String.pipe(T.HttpLabel("MeetingId")),
    AttendeeId: S.String.pipe(T.HttpLabel("AttendeeId")),
    Capabilities: AttendeeCapabilities,
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/meetings/{MeetingId}/attendees/{AttendeeId}/capabilities",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateAttendeeCapabilitiesRequest",
});
export const UpdateAttendeeCapabilitiesResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Attendee: S.optional(Attendee) })).annotate({
    identifier: "UpdateAttendeeCapabilitiesResponse",
});
//# Errors
export class BadRequestException extends S.TaggedErrorClass()("BadRequestException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withBadRequestError) {
}
export class ForbiddenException extends S.TaggedErrorClass()("ForbiddenException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withAuthError) {
}
export class LimitExceededException extends S.TaggedErrorClass()("LimitExceededException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withBadRequestError) {
}
export class NotFoundException extends S.TaggedErrorClass()("NotFoundException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withBadRequestError) {
}
export class ServiceFailureException extends S.TaggedErrorClass()("ServiceFailureException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withServerError) {
}
export class ServiceUnavailableException extends S.TaggedErrorClass()("ServiceUnavailableException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
    RetryAfterSeconds: S.optional(S.String).pipe(T.HttpHeader("Retry-After")),
}).pipe(C.withServerError) {
}
export class ThrottlingException extends S.TaggedErrorClass()("ThrottlingException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withThrottlingError) {
}
export class UnauthorizedException extends S.TaggedErrorClass()("UnauthorizedException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withAuthError) {
}
export class UnprocessableEntityException extends S.TaggedErrorClass()("UnprocessableEntityException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withBadRequestError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
}).pipe(C.withConflictError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
    ResourceName: S.optional(S.String),
}).pipe(C.withBadRequestError) {
}
export class TooManyTagsException extends S.TaggedErrorClass()("TooManyTagsException", {
    Code: S.optional(S.String),
    Message: S.optional(S.String),
    RequestId: S.optional(S.String),
    ResourceName: S.optional(S.String),
}).pipe(C.withBadRequestError) {
}
/**
 * Creates up to 100 attendees for an active Amazon Chime SDK meeting. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK in the *Amazon Chime Developer Guide*.
 */
export const batchCreateAttendee = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchCreateAttendeeRequest,
    output: BatchCreateAttendeeResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        LimitExceededException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
        UnprocessableEntityException,
    ],
}));
/**
 * Updates `AttendeeCapabilities` except the capabilities listed in an `ExcludedAttendeeIds` table.
 *
 * You use the capabilities with a set of values that control what the capabilities can do, such as `SendReceive` data. For more information about those values, see
 * .
 *
 * When using capabilities, be aware of these corner cases:
 *
 * - If you specify `MeetingFeatures:Video:MaxResolution:None` when you create a meeting, all API requests
 * that include `SendReceive`, `Send`, or `Receive` for `AttendeeCapabilities:Video` will be rejected with `ValidationError 400`.
 *
 * - If you specify `MeetingFeatures:Content:MaxResolution:None` when you create a meeting, all API requests that include `SendReceive`, `Send`, or
 * `Receive` for `AttendeeCapabilities:Content` will be rejected with `ValidationError 400`.
 *
 * - You can't set `content` capabilities to `SendReceive` or `Receive` unless you also set `video` capabilities to `SendReceive`
 * or `Receive`. If you don't set the `video` capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your `video` capability
 * to receive and you set your `content` capability to not receive.
 *
 * - If meeting features is defined as `Video:MaxResolution:None` but
 * `Content:MaxResolution` is defined as something other than
 * `None` and attendee capabilities are not defined in the API
 * request, then the default attendee video capability is set to
 * `Receive` and attendee content capability is set to
 * `SendReceive`. This is because content `SendReceive`
 * requires video to be at least `Receive`.
 *
 * - When you change an `audio` capability from `None` or `Receive` to `Send` or `SendReceive` ,
 * and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants.
 *
 * - When you change a `video` or `content` capability from `None` or `Receive` to `Send` or `SendReceive` ,
 * and if the attendee turned on their video or content streams, remote attendees can receive those streams, but only after media renegotiation between the client and the Amazon Chime back-end server.
 */
export const batchUpdateAttendeeCapabilitiesExcept = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: BatchUpdateAttendeeCapabilitiesExceptRequest,
    output: BatchUpdateAttendeeCapabilitiesExceptResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * Creates a new attendee for an active Amazon Chime SDK meeting. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK
 * in the
 * *Amazon Chime Developer Guide*.
 */
export const createAttendee = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateAttendeeRequest,
    output: CreateAttendeeResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        LimitExceededException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
        UnprocessableEntityException,
    ],
}));
/**
 * Creates a new Amazon Chime SDK meeting in the specified media Region with no initial attendees. For more information about specifying media Regions, see
 * Available Regions and
 * Using meeting Regions, both
 * in the *Amazon Chime SDK Developer Guide*. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK
 * in the
 * *Amazon Chime SDK Developer Guide*.
 *
 * If you use this API in conjuction with the and APIs, and you don't specify the
 * `MeetingFeatures.Content.MaxResolution` or `MeetingFeatures.Video.MaxResolution` parameters, the following defaults are used:
 *
 * - Content.MaxResolution: FHD
 *
 * - Video.MaxResolution: HD
 */
export const createMeeting = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateMeetingRequest,
    output: CreateMeetingResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        LimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * Creates a new Amazon Chime SDK meeting in the specified media Region, with attendees. For more information about specifying media Regions, see
 * Available Regions and
 * Using meeting Regions, both
 * in the *Amazon Chime SDK Developer Guide*. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK
 * in the
 * *Amazon Chime SDK Developer Guide*.
 *
 * If you use this API in conjuction with the and APIs, and you don't specify the
 * `MeetingFeatures.Content.MaxResolution` or `MeetingFeatures.Video.MaxResolution` parameters, the following defaults are used:
 *
 * - Content.MaxResolution: FHD
 *
 * - Video.MaxResolution: HD
 */
export const createMeetingWithAttendees = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateMeetingWithAttendeesRequest,
    output: CreateMeetingWithAttendeesResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        LimitExceededException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * Deletes an attendee from the specified Amazon Chime SDK meeting and deletes their
 * `JoinToken`. Attendees are automatically deleted when a Amazon Chime SDK meeting is deleted. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK
 * in the *Amazon Chime Developer Guide*.
 */
export const deleteAttendee = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteAttendeeRequest,
    output: DeleteAttendeeResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * Deletes the specified Amazon Chime SDK meeting. The operation deletes all attendees, disconnects all clients, and prevents new clients from
 * joining the meeting. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK in the
 * *Amazon Chime Developer Guide*.
 */
export const deleteMeeting = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteMeetingRequest,
    output: DeleteMeetingResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * Gets the Amazon Chime SDK attendee details for a specified meeting ID and attendee ID. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK
 * in the *Amazon Chime Developer Guide*.
 */
export const getAttendee = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetAttendeeRequest,
    output: GetAttendeeResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * Gets the Amazon Chime SDK meeting details for the specified meeting ID. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK
 * in the *Amazon Chime Developer Guide*.
 */
export const getMeeting = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetMeetingRequest,
    output: GetMeetingResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * Lists the attendees for the specified Amazon Chime SDK meeting. For more information about the Amazon Chime SDK, see
 * Using the Amazon Chime SDK
 * in the *Amazon Chime Developer Guide*.
 */
export const listAttendees = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListAttendeesRequest,
    output: ListAttendeesResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        pageSize: "MaxResults",
    },
}));
/**
 * Returns a list of the tags available for the specified resource.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        LimitExceededException,
        ResourceNotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * Starts transcription for the specified `meetingId`. For more information, refer to
 * Using Amazon Chime SDK live transcription
 * in the *Amazon Chime SDK Developer Guide*.
 *
 * If you specify an invalid configuration, a `TranscriptFailed` event will be sent with the contents of the `BadRequestException` generated by Amazon Transcribe.
 * For more information on each parameter and which combinations are valid, refer to the
 * StartStreamTranscription API in the
 * *Amazon Transcribe Developer Guide*.
 *
 * By default, Amazon Transcribe may use and store audio content processed by the service to develop and improve Amazon Web Services AI/ML services as
 * further described in section 50 of the Amazon Web Services Service Terms. Using Amazon Transcribe
 * may be subject to federal and state laws or regulations regarding the recording or interception of electronic communications. It is your and your end users’
 * responsibility to comply with all applicable laws regarding the recording, including properly notifying all participants in a recorded session or communication
 * that the session or communication is being recorded, and obtaining all necessary consents. You can opt out from Amazon Web Services using audio content to develop and
 * improve AWS AI/ML services by configuring an AI services opt out policy using Amazon Web Services Organizations.
 */
export const startMeetingTranscription = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StartMeetingTranscriptionRequest,
    output: StartMeetingTranscriptionResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        LimitExceededException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
        UnprocessableEntityException,
    ],
}));
/**
 * Stops transcription for the specified `meetingId`. For more information, refer to
 * Using Amazon Chime SDK live transcription
 * in the *Amazon Chime SDK Developer Guide*.
 *
 * By default, Amazon Transcribe may use and store audio content processed by the service to develop and improve Amazon Web Services AI/ML services as
 * further described in section 50 of the Amazon Web Services Service Terms. Using Amazon Transcribe
 * may be subject to federal and state laws or regulations regarding the recording or interception of electronic communications. It is your and your end users’
 * responsibility to comply with all applicable laws regarding the recording, including properly notifying all participants in a recorded session or communication
 * that the session or communication is being recorded, and obtaining all necessary consents. You can opt out from Amazon Web Services using audio content to develop and
 * improve Amazon Web Services AI/ML services by configuring an AI services opt out policy using Amazon Web Services Organizations.
 */
export const stopMeetingTranscription = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: StopMeetingTranscriptionRequest,
    output: StopMeetingTranscriptionResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
        UnprocessableEntityException,
    ],
}));
/**
 * The resource that supports tags.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        LimitExceededException,
        ResourceNotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        TooManyTagsException,
        UnauthorizedException,
    ],
}));
/**
 * Removes the specified tags from the specified resources. When you specify a tag key, the action removes both that key and its associated value. The operation succeeds even if you
 * attempt to remove tags from a resource that were already removed. Note the following:
 *
 * - To remove tags from a resource, you need the necessary permissions for the service that the resource belongs to as well as permissions for removing tags. For more information,
 * see the documentation for the service whose resource you want to untag.
 *
 * - You can only tag resources that are located in the specified Amazon Web Services Region for the calling Amazon Web Services account.
 *
 * **Minimum permissions**
 *
 * In addition to the `tag:UntagResources` permission required by this operation, you must also have the remove tags permission defined by the service that created the resource.
 * For example, to remove the tags from an Amazon EC2 instance using the `UntagResources` operation, you must have both of the following permissions:
 *
 * `tag:UntagResource`
 *
 * `ChimeSDKMeetings:DeleteTags`
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [
        BadRequestException,
        ForbiddenException,
        LimitExceededException,
        ResourceNotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
/**
 * The capabilities that you want to update.
 *
 * You use the capabilities with a set of values that control what the capabilities can do, such as `SendReceive` data. For more information about those values, see
 * .
 *
 * When using capabilities, be aware of these corner cases:
 *
 * - If you specify `MeetingFeatures:Video:MaxResolution:None` when you create a meeting, all API requests
 * that include `SendReceive`, `Send`, or `Receive` for `AttendeeCapabilities:Video` will be rejected with `ValidationError 400`.
 *
 * - If you specify `MeetingFeatures:Content:MaxResolution:None` when you create a meeting, all API requests that include `SendReceive`, `Send`, or
 * `Receive` for `AttendeeCapabilities:Content` will be rejected with `ValidationError 400`.
 *
 * - You can't set `content` capabilities to `SendReceive` or `Receive` unless you also set `video` capabilities to `SendReceive`
 * or `Receive`. If you don't set the `video` capability to receive, the response will contain an HTTP 400 Bad Request status code. However, you can set your `video` capability
 * to receive and you set your `content` capability to not receive.
 *
 * - If meeting features is defined as `Video:MaxResolution:None` but
 * `Content:MaxResolution` is defined as something other than
 * `None` and attendee capabilities are not defined in the API
 * request, then the default attendee video capability is set to
 * `Receive` and attendee content capability is set to
 * `SendReceive`. This is because content `SendReceive`
 * requires video to be at least `Receive`.
 *
 * - When you change an `audio` capability from `None` or `Receive` to `Send` or `SendReceive` ,
 * and if the attendee left their microphone unmuted, audio will flow from the attendee to the other meeting participants.
 *
 * - When you change a `video` or `content` capability from `None` or `Receive` to `Send` or `SendReceive` ,
 * and if the attendee turned on their video or content streams, remote attendees can receive those streams, but only after media renegotiation between the client and the Amazon Chime back-end server.
 */
export const updateAttendeeCapabilities = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateAttendeeCapabilitiesRequest,
    output: UpdateAttendeeCapabilitiesResponse,
    errors: [
        BadRequestException,
        ConflictException,
        ForbiddenException,
        NotFoundException,
        ServiceFailureException,
        ServiceUnavailableException,
        ThrottlingException,
        UnauthorizedException,
    ],
}));
//# sourceMappingURL=chime-sdk-meetings.js.map