import * as HttpClient from "effect/unstable/http/HttpClient";
import * as S from "effect/Schema";
import * as stream from "effect/Stream";
import * as API from "../client/api.js";
import * as T from "../traits.js";
import * as C from "../category.js";
const svc = T.AwsApiService({
    sdkId: "MediaPackageV2",
    serviceShapeName: "mediapackagev2",
});
const auth = T.AwsAuthSigv4({ name: "mediapackagev2" });
const ver = T.ServiceVersion("2022-12-25");
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://mediapackagev2-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://mediapackagev2-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://mediapackagev2.${Region}.${_.getAttr(PartitionResult, "dualStackDnsSuffix")}`);
                    }
                    return err("DualStack is enabled but this partition does not support DualStack");
                }
                return e(`https://mediapackagev2.${Region}.${_.getAttr(PartitionResult, "dnsSuffix")}`);
            }
        }
    }
    return err("Invalid Configuration: Missing Region");
});
export const ListTagsForResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ResourceArn: S.String.pipe(T.HttpLabel("ResourceArn")) }).pipe(T.all(T.Http({ method: "GET", uri: "/tags/{ResourceArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListTagsForResourceRequest",
});
export const TagMap = /*@__PURE__*/ /*#__PURE__*/ S.Record(S.String, S.String.pipe(S.optional));
export const ListTagsForResourceResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Tags: S.optional(TagMap) }).pipe(S.encodeKeys({ Tags: "tags" }))).annotate({
    identifier: "ListTagsForResourceResponse",
});
export const ValidationExceptionType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const TagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceArn: S.String.pipe(T.HttpLabel("ResourceArn")),
    Tags: TagMap,
})
    .pipe(S.encodeKeys({ Tags: "tags" }))
    .pipe(T.all(T.Http({ method: "POST", uri: "/tags/{ResourceArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "TagResourceRequest",
});
export const TagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "TagResourceResponse",
});
export const TagKeyList = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const UntagResourceRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ResourceArn: S.String.pipe(T.HttpLabel("ResourceArn")),
    TagKeys: TagKeyList.pipe(T.HttpQuery("tagKeys")),
}).pipe(T.all(T.Http({ method: "DELETE", uri: "/tags/{ResourceArn}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UntagResourceRequest",
});
export const UntagResourceResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "UntagResourceResponse",
});
export const CreateChannelGroupRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    ClientToken: S.optional(S.String).pipe(T.HttpHeader("x-amzn-client-token"), T.IdempotencyToken()),
    Description: S.optional(S.String),
    Tags: S.optional(TagMap),
})
    .pipe(S.encodeKeys({ Tags: "tags" }))
    .pipe(T.all(T.Http({ method: "POST", uri: "/channelGroup" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateChannelGroupRequest",
});
export const CreateChannelGroupResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    Arn: S.String,
    EgressDomain: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ETag: S.optional(S.String),
    Description: S.optional(S.String),
    Tags: S.optional(TagMap),
})).annotate({
    identifier: "CreateChannelGroupResponse",
});
export const ConflictExceptionType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ResourceTypeNotFound = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const GetChannelGroupRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channelGroup/{ChannelGroupName}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetChannelGroupRequest",
});
export const GetChannelGroupResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    Arn: S.String,
    EgressDomain: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Description: S.optional(S.String),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
}).pipe(S.encodeKeys({ Tags: "tags" }))).annotate({
    identifier: "GetChannelGroupResponse",
});
export const UpdateChannelGroupRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ETag: S.optional(S.String).pipe(T.HttpHeader("x-amzn-update-if-match")),
    Description: S.optional(S.String),
}).pipe(T.all(T.Http({ method: "PUT", uri: "/channelGroup/{ChannelGroupName}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateChannelGroupRequest",
});
export const UpdateChannelGroupResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    Arn: S.String,
    EgressDomain: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Description: S.optional(S.String),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
}).pipe(S.encodeKeys({ Tags: "tags" }))).annotate({
    identifier: "UpdateChannelGroupResponse",
});
export const DeleteChannelGroupRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
}).pipe(T.all(T.Http({ method: "DELETE", uri: "/channelGroup/{ChannelGroupName}" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelGroupRequest",
});
export const DeleteChannelGroupResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelGroupResponse",
});
export const ListChannelGroupsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("maxResults")),
    NextToken: S.optional(S.String).pipe(T.HttpQuery("nextToken")),
}).pipe(T.all(T.Http({ method: "GET", uri: "/channelGroup" }), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelGroupsRequest",
});
export const ChannelGroupListConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    Arn: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Description: S.optional(S.String),
})).annotate({
    identifier: "ChannelGroupListConfiguration",
});
export const ChannelGroupsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelGroupListConfiguration);
export const ListChannelGroupsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Items: S.optional(ChannelGroupsList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListChannelGroupsResponse",
});
export const InputType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const InputSwitchConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    MQCSInputSwitching: S.optional(S.Boolean),
    PreferredInput: S.optional(S.Number),
})).annotate({
    identifier: "InputSwitchConfiguration",
});
export const OutputHeaderConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ PublishMQCS: S.optional(S.Boolean) })).annotate({
    identifier: "OutputHeaderConfiguration",
});
export const CreateChannelRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String,
    ClientToken: S.optional(S.String).pipe(T.HttpHeader("x-amzn-client-token"), T.IdempotencyToken()),
    InputType: S.optional(InputType),
    Description: S.optional(S.String),
    InputSwitchConfiguration: S.optional(InputSwitchConfiguration),
    OutputHeaderConfiguration: S.optional(OutputHeaderConfiguration),
    Tags: S.optional(TagMap),
})
    .pipe(S.encodeKeys({ Tags: "tags" }))
    .pipe(T.all(T.Http({
    method: "POST",
    uri: "/channelGroup/{ChannelGroupName}/channel",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateChannelRequest",
});
export const IngestEndpoint = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Id: S.optional(S.String), Url: S.optional(S.String) })).annotate({ identifier: "IngestEndpoint" });
export const IngestEndpointList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(IngestEndpoint);
export const CreateChannelResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Arn: S.String,
    ChannelName: S.String,
    ChannelGroupName: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Description: S.optional(S.String),
    IngestEndpoints: S.optional(IngestEndpointList),
    InputType: S.optional(InputType),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
    InputSwitchConfiguration: S.optional(InputSwitchConfiguration),
    OutputHeaderConfiguration: S.optional(OutputHeaderConfiguration),
})).annotate({
    identifier: "CreateChannelResponse",
});
export const GetChannelRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetChannelRequest",
});
export const GetChannelResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Arn: S.String,
    ChannelName: S.String,
    ChannelGroupName: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ResetAt: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    Description: S.optional(S.String),
    IngestEndpoints: S.optional(IngestEndpointList),
    InputType: S.optional(InputType),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
    InputSwitchConfiguration: S.optional(InputSwitchConfiguration),
    OutputHeaderConfiguration: S.optional(OutputHeaderConfiguration),
})).annotate({
    identifier: "GetChannelResponse",
});
export const UpdateChannelRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    ETag: S.optional(S.String).pipe(T.HttpHeader("x-amzn-update-if-match")),
    Description: S.optional(S.String),
    InputSwitchConfiguration: S.optional(InputSwitchConfiguration),
    OutputHeaderConfiguration: S.optional(OutputHeaderConfiguration),
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateChannelRequest",
});
export const UpdateChannelResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Arn: S.String,
    ChannelName: S.String,
    ChannelGroupName: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Description: S.optional(S.String),
    IngestEndpoints: S.optional(IngestEndpointList),
    InputType: S.optional(InputType),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
    InputSwitchConfiguration: S.optional(InputSwitchConfiguration),
    OutputHeaderConfiguration: S.optional(OutputHeaderConfiguration),
}).pipe(S.encodeKeys({ Tags: "tags" }))).annotate({
    identifier: "UpdateChannelResponse",
});
export const DeleteChannelRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelRequest",
});
export const DeleteChannelResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelResponse",
});
export const ListChannelsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("maxResults")),
    NextToken: S.optional(S.String).pipe(T.HttpQuery("nextToken")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channelGroup/{ChannelGroupName}/channel",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListChannelsRequest",
});
export const ChannelListConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Arn: S.String,
    ChannelName: S.String,
    ChannelGroupName: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Description: S.optional(S.String),
    InputType: S.optional(InputType),
})).annotate({
    identifier: "ChannelListConfiguration",
});
export const ChannelList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ChannelListConfiguration);
export const ListChannelsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ Items: S.optional(ChannelList), NextToken: S.optional(S.String) })).annotate({
    identifier: "ListChannelsResponse",
});
export const ResetChannelStateRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/reset",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ResetChannelStateRequest",
});
export const ResetChannelStateResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    ChannelName: S.String,
    Arn: S.String,
    ResetAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({
    identifier: "ResetChannelStateResponse",
});
export const PutChannelPolicyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    Policy: S.String,
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/policy",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutChannelPolicyRequest",
});
export const PutChannelPolicyResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "PutChannelPolicyResponse",
});
export const GetChannelPolicyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/policy",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetChannelPolicyRequest",
});
export const GetChannelPolicyResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    ChannelName: S.String,
    Policy: S.String,
})).annotate({
    identifier: "GetChannelPolicyResponse",
});
export const DeleteChannelPolicyRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/policy",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteChannelPolicyRequest",
});
export const DeleteChannelPolicyResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteChannelPolicyResponse",
});
export const ContainerType = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ScteFilter = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ScteFilterList = /*@__PURE__*/ /*#__PURE__*/ S.Array(ScteFilter);
export const ScteInSegments = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const Scte = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ScteFilter: S.optional(ScteFilterList),
    ScteInSegments: S.optional(ScteInSegments),
})).annotate({ identifier: "Scte" });
export const TsEncryptionMethod = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CmafEncryptionMethod = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const IsmEncryptionMethod = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const EncryptionMethod = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TsEncryptionMethod: S.optional(TsEncryptionMethod),
    CmafEncryptionMethod: S.optional(CmafEncryptionMethod),
    IsmEncryptionMethod: S.optional(IsmEncryptionMethod),
})).annotate({
    identifier: "EncryptionMethod",
});
export const PresetSpeke20Audio = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const PresetSpeke20Video = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const EncryptionContractConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    PresetSpeke20Audio: PresetSpeke20Audio,
    PresetSpeke20Video: PresetSpeke20Video,
})).annotate({
    identifier: "EncryptionContractConfiguration",
});
export const DrmSystem = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DrmSystems = /*@__PURE__*/ /*#__PURE__*/ S.Array(DrmSystem);
export const SpekeKeyProvider = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    EncryptionContractConfiguration: EncryptionContractConfiguration,
    ResourceId: S.String,
    DrmSystems: DrmSystems,
    RoleArn: S.String,
    Url: S.String,
    CertificateArn: S.optional(S.String),
})).annotate({
    identifier: "SpekeKeyProvider",
});
export const Encryption = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ConstantInitializationVector: S.optional(S.String),
    EncryptionMethod: EncryptionMethod,
    KeyRotationIntervalSeconds: S.optional(S.Number),
    CmafExcludeSegmentDrmMetadata: S.optional(S.Boolean),
    SpekeKeyProvider: SpekeKeyProvider,
})).annotate({ identifier: "Encryption" });
export const Segment = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    SegmentDurationSeconds: S.optional(S.Number),
    SegmentName: S.optional(S.String),
    TsUseAudioRenditionGroup: S.optional(S.Boolean),
    IncludeIframeOnlyStreams: S.optional(S.Boolean),
    TsIncludeDvbSubtitles: S.optional(S.Boolean),
    Scte: S.optional(Scte),
    Encryption: S.optional(Encryption),
})).annotate({ identifier: "Segment" });
export const AdMarkerHls = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ScteHls = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AdMarkerHls: S.optional(AdMarkerHls) })).annotate({ identifier: "ScteHls" });
export const StartTag = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TimeOffset: S.Number, Precise: S.optional(S.Boolean) })).annotate({ identifier: "StartTag" });
export const FilterConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestFilter: S.optional(S.String),
    DrmSettings: S.optional(S.String),
    Start: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    End: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    TimeDelaySeconds: S.optional(S.Number),
    ClipStartTime: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
})).annotate({
    identifier: "FilterConfiguration",
});
export const CreateHlsManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    ChildManifestName: S.optional(S.String),
    ScteHls: S.optional(ScteHls),
    StartTag: S.optional(StartTag),
    ManifestWindowSeconds: S.optional(S.Number),
    ProgramDateTimeIntervalSeconds: S.optional(S.Number),
    FilterConfiguration: S.optional(FilterConfiguration),
    UrlEncodeChildManifest: S.optional(S.Boolean),
})).annotate({
    identifier: "CreateHlsManifestConfiguration",
});
export const CreateHlsManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(CreateHlsManifestConfiguration);
export const CreateLowLatencyHlsManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    ChildManifestName: S.optional(S.String),
    ScteHls: S.optional(ScteHls),
    StartTag: S.optional(StartTag),
    ManifestWindowSeconds: S.optional(S.Number),
    ProgramDateTimeIntervalSeconds: S.optional(S.Number),
    FilterConfiguration: S.optional(FilterConfiguration),
    UrlEncodeChildManifest: S.optional(S.Boolean),
})).annotate({
    identifier: "CreateLowLatencyHlsManifestConfiguration",
});
export const CreateLowLatencyHlsManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(CreateLowLatencyHlsManifestConfiguration);
export const DashSegmentTemplateFormat = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DashPeriodTrigger = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DashPeriodTriggers = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(DashPeriodTrigger);
export const AdMarkerDash = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const ScteDash = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ AdMarkerDash: S.optional(AdMarkerDash) })).annotate({ identifier: "ScteDash" });
export const DashDrmSignaling = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DashUtcTimingMode = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DashUtcTiming = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    TimingMode: S.optional(DashUtcTimingMode),
    TimingSource: S.optional(S.String),
})).annotate({ identifier: "DashUtcTiming" });
export const DashProfile = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DashProfiles = /*@__PURE__*/ /*#__PURE__*/ S.Array(DashProfile);
export const DashBaseUrl = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Url: S.String,
    ServiceLocation: S.optional(S.String),
    DvbPriority: S.optional(S.Number),
    DvbWeight: S.optional(S.Number),
})).annotate({ identifier: "DashBaseUrl" });
export const DashBaseUrls = /*@__PURE__*/ /*#__PURE__*/ S.Array(DashBaseUrl);
export const DashProgramInformation = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Title: S.optional(S.String),
    Source: S.optional(S.String),
    Copyright: S.optional(S.String),
    LanguageCode: S.optional(S.String),
    MoreInformationUrl: S.optional(S.String),
})).annotate({
    identifier: "DashProgramInformation",
});
export const DashDvbFontDownload = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Url: S.optional(S.String),
    MimeType: S.optional(S.String),
    FontFamily: S.optional(S.String),
})).annotate({
    identifier: "DashDvbFontDownload",
});
export const DashDvbMetricsReporting = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ReportingUrl: S.String, Probability: S.optional(S.Number) })).annotate({
    identifier: "DashDvbMetricsReporting",
});
export const DashDvbErrorMetrics = /*@__PURE__*/ /*#__PURE__*/ S.Array(DashDvbMetricsReporting);
export const DashDvbSettings = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    FontDownload: S.optional(DashDvbFontDownload),
    ErrorMetrics: S.optional(DashDvbErrorMetrics),
})).annotate({
    identifier: "DashDvbSettings",
});
export const DashCompactness = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DashTtmlProfile = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const DashTtmlConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TtmlProfile: DashTtmlProfile })).annotate({
    identifier: "DashTtmlConfiguration",
});
export const DashSubtitleConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ TtmlConfiguration: S.optional(DashTtmlConfiguration) })).annotate({
    identifier: "DashSubtitleConfiguration",
});
export const CreateDashManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    ManifestWindowSeconds: S.optional(S.Number),
    FilterConfiguration: S.optional(FilterConfiguration),
    MinUpdatePeriodSeconds: S.optional(S.Number),
    MinBufferTimeSeconds: S.optional(S.Number),
    SuggestedPresentationDelaySeconds: S.optional(S.Number),
    SegmentTemplateFormat: S.optional(DashSegmentTemplateFormat),
    PeriodTriggers: S.optional(DashPeriodTriggers),
    ScteDash: S.optional(ScteDash),
    DrmSignaling: S.optional(DashDrmSignaling),
    UtcTiming: S.optional(DashUtcTiming),
    Profiles: S.optional(DashProfiles),
    BaseUrls: S.optional(DashBaseUrls),
    ProgramInformation: S.optional(DashProgramInformation),
    DvbSettings: S.optional(DashDvbSettings),
    Compactness: S.optional(DashCompactness),
    SubtitleConfiguration: S.optional(DashSubtitleConfiguration),
})).annotate({
    identifier: "CreateDashManifestConfiguration",
});
export const CreateDashManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(CreateDashManifestConfiguration);
export const MssManifestLayout = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateMssManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    ManifestWindowSeconds: S.optional(S.Number),
    FilterConfiguration: S.optional(FilterConfiguration),
    ManifestLayout: S.optional(MssManifestLayout),
})).annotate({
    identifier: "CreateMssManifestConfiguration",
});
export const CreateMssManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(CreateMssManifestConfiguration);
export const EndpointErrorCondition = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const EndpointErrorConditions = /*@__PURE__*/ /*#__PURE__*/ S.Array(EndpointErrorCondition);
export const ForceEndpointErrorConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ EndpointErrorConditions: S.optional(EndpointErrorConditions) })).annotate({
    identifier: "ForceEndpointErrorConfiguration",
});
export const CreateOriginEndpointRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String,
    ContainerType: ContainerType,
    Segment: S.optional(Segment),
    ClientToken: S.optional(S.String).pipe(T.HttpHeader("x-amzn-client-token"), T.IdempotencyToken()),
    Description: S.optional(S.String),
    StartoverWindowSeconds: S.optional(S.Number),
    HlsManifests: S.optional(CreateHlsManifests),
    LowLatencyHlsManifests: S.optional(CreateLowLatencyHlsManifests),
    DashManifests: S.optional(CreateDashManifests),
    MssManifests: S.optional(CreateMssManifests),
    ForceEndpointErrorConfiguration: S.optional(ForceEndpointErrorConfiguration),
    Tags: S.optional(TagMap),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateOriginEndpointRequest",
});
export const GetHlsManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    Url: S.String,
    ChildManifestName: S.optional(S.String),
    ManifestWindowSeconds: S.optional(S.Number),
    ProgramDateTimeIntervalSeconds: S.optional(S.Number),
    ScteHls: S.optional(ScteHls),
    FilterConfiguration: S.optional(FilterConfiguration),
    StartTag: S.optional(StartTag),
    UrlEncodeChildManifest: S.optional(S.Boolean),
})).annotate({
    identifier: "GetHlsManifestConfiguration",
});
export const GetHlsManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(GetHlsManifestConfiguration);
export const GetLowLatencyHlsManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    Url: S.String,
    ChildManifestName: S.optional(S.String),
    ManifestWindowSeconds: S.optional(S.Number),
    ProgramDateTimeIntervalSeconds: S.optional(S.Number),
    ScteHls: S.optional(ScteHls),
    FilterConfiguration: S.optional(FilterConfiguration),
    StartTag: S.optional(StartTag),
    UrlEncodeChildManifest: S.optional(S.Boolean),
})).annotate({
    identifier: "GetLowLatencyHlsManifestConfiguration",
});
export const GetLowLatencyHlsManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(GetLowLatencyHlsManifestConfiguration);
export const GetDashManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    Url: S.String,
    ManifestWindowSeconds: S.optional(S.Number),
    FilterConfiguration: S.optional(FilterConfiguration),
    MinUpdatePeriodSeconds: S.optional(S.Number),
    MinBufferTimeSeconds: S.optional(S.Number),
    SuggestedPresentationDelaySeconds: S.optional(S.Number),
    SegmentTemplateFormat: S.optional(DashSegmentTemplateFormat),
    PeriodTriggers: S.optional(DashPeriodTriggers),
    ScteDash: S.optional(ScteDash),
    DrmSignaling: S.optional(DashDrmSignaling),
    UtcTiming: S.optional(DashUtcTiming),
    Profiles: S.optional(DashProfiles),
    BaseUrls: S.optional(DashBaseUrls),
    ProgramInformation: S.optional(DashProgramInformation),
    DvbSettings: S.optional(DashDvbSettings),
    Compactness: S.optional(DashCompactness),
    SubtitleConfiguration: S.optional(DashSubtitleConfiguration),
})).annotate({
    identifier: "GetDashManifestConfiguration",
});
export const GetDashManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(GetDashManifestConfiguration);
export const GetMssManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    Url: S.String,
    FilterConfiguration: S.optional(FilterConfiguration),
    ManifestWindowSeconds: S.optional(S.Number),
    ManifestLayout: S.optional(MssManifestLayout),
})).annotate({
    identifier: "GetMssManifestConfiguration",
});
export const GetMssManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(GetMssManifestConfiguration);
export const CreateOriginEndpointResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Arn: S.String,
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    ContainerType: ContainerType,
    Segment: Segment,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Description: S.optional(S.String),
    StartoverWindowSeconds: S.optional(S.Number),
    HlsManifests: S.optional(GetHlsManifests),
    LowLatencyHlsManifests: S.optional(GetLowLatencyHlsManifests),
    DashManifests: S.optional(GetDashManifests),
    MssManifests: S.optional(GetMssManifests),
    ForceEndpointErrorConfiguration: S.optional(ForceEndpointErrorConfiguration),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
})).annotate({
    identifier: "CreateOriginEndpointResponse",
});
export const GetOriginEndpointRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetOriginEndpointRequest",
});
export const GetOriginEndpointResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Arn: S.String,
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    ContainerType: ContainerType,
    Segment: Segment,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ResetAt: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    Description: S.optional(S.String),
    StartoverWindowSeconds: S.optional(S.Number),
    HlsManifests: S.optional(GetHlsManifests),
    LowLatencyHlsManifests: S.optional(GetLowLatencyHlsManifests),
    DashManifests: S.optional(GetDashManifests),
    MssManifests: S.optional(GetMssManifests),
    ForceEndpointErrorConfiguration: S.optional(ForceEndpointErrorConfiguration),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
})).annotate({
    identifier: "GetOriginEndpointResponse",
});
export const UpdateOriginEndpointRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
    ContainerType: ContainerType,
    Segment: S.optional(Segment),
    Description: S.optional(S.String),
    StartoverWindowSeconds: S.optional(S.Number),
    HlsManifests: S.optional(CreateHlsManifests),
    LowLatencyHlsManifests: S.optional(CreateLowLatencyHlsManifests),
    DashManifests: S.optional(CreateDashManifests),
    MssManifests: S.optional(CreateMssManifests),
    ForceEndpointErrorConfiguration: S.optional(ForceEndpointErrorConfiguration),
    ETag: S.optional(S.String).pipe(T.HttpHeader("x-amzn-update-if-match")),
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "UpdateOriginEndpointRequest",
});
export const UpdateOriginEndpointResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Arn: S.String,
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    ContainerType: ContainerType,
    Segment: Segment,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Description: S.optional(S.String),
    StartoverWindowSeconds: S.optional(S.Number),
    HlsManifests: S.optional(GetHlsManifests),
    LowLatencyHlsManifests: S.optional(GetLowLatencyHlsManifests),
    MssManifests: S.optional(GetMssManifests),
    ForceEndpointErrorConfiguration: S.optional(ForceEndpointErrorConfiguration),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
    DashManifests: S.optional(GetDashManifests),
}).pipe(S.encodeKeys({ Tags: "tags" }))).annotate({
    identifier: "UpdateOriginEndpointResponse",
});
export const DeleteOriginEndpointRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteOriginEndpointRequest",
});
export const DeleteOriginEndpointResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteOriginEndpointResponse",
});
export const ListOriginEndpointsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("maxResults")),
    NextToken: S.optional(S.String).pipe(T.HttpQuery("nextToken")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListOriginEndpointsRequest",
});
export const ListHlsManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    ChildManifestName: S.optional(S.String),
    Url: S.optional(S.String),
})).annotate({
    identifier: "ListHlsManifestConfiguration",
});
export const ListHlsManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(ListHlsManifestConfiguration);
export const ListLowLatencyHlsManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ManifestName: S.String,
    ChildManifestName: S.optional(S.String),
    Url: S.optional(S.String),
})).annotate({
    identifier: "ListLowLatencyHlsManifestConfiguration",
});
export const ListLowLatencyHlsManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(ListLowLatencyHlsManifestConfiguration);
export const ListDashManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ManifestName: S.String, Url: S.optional(S.String) })).annotate({
    identifier: "ListDashManifestConfiguration",
});
export const ListDashManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(ListDashManifestConfiguration);
export const ListMssManifestConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ManifestName: S.String, Url: S.optional(S.String) })).annotate({
    identifier: "ListMssManifestConfiguration",
});
export const ListMssManifests = /*@__PURE__*/ /*#__PURE__*/ S.Array(ListMssManifestConfiguration);
export const OriginEndpointListConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Arn: S.String,
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    ContainerType: ContainerType,
    Description: S.optional(S.String),
    CreatedAt: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    ModifiedAt: S.optional(S.Date.pipe(T.TimestampFormat("epoch-seconds"))),
    HlsManifests: S.optional(ListHlsManifests),
    LowLatencyHlsManifests: S.optional(ListLowLatencyHlsManifests),
    DashManifests: S.optional(ListDashManifests),
    MssManifests: S.optional(ListMssManifests),
    ForceEndpointErrorConfiguration: S.optional(ForceEndpointErrorConfiguration),
})).annotate({
    identifier: "OriginEndpointListConfiguration",
});
export const OriginEndpointsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(OriginEndpointListConfiguration);
export const ListOriginEndpointsResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Items: S.optional(OriginEndpointsList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListOriginEndpointsResponse",
});
export const ResetOriginEndpointStateRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/reset",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ResetOriginEndpointStateRequest",
});
export const ResetOriginEndpointStateResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    Arn: S.String,
    ResetAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({
    identifier: "ResetOriginEndpointStateResponse",
});
export const CdnIdentifierSecretArns = /*@__PURE__*/ /*#__PURE__*/ S.Array(S.String);
export const CdnAuthConfiguration = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    CdnIdentifierSecretArns: CdnIdentifierSecretArns,
    SecretsRoleArn: S.String,
})).annotate({
    identifier: "CdnAuthConfiguration",
});
export const PutOriginEndpointPolicyRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
    Policy: S.String,
    CdnAuthConfiguration: S.optional(CdnAuthConfiguration),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/policy",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "PutOriginEndpointPolicyRequest",
});
export const PutOriginEndpointPolicyResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "PutOriginEndpointPolicyResponse",
});
export const GetOriginEndpointPolicyRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/policy",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetOriginEndpointPolicyRequest",
});
export const GetOriginEndpointPolicyResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    Policy: S.String,
    CdnAuthConfiguration: S.optional(CdnAuthConfiguration),
})).annotate({
    identifier: "GetOriginEndpointPolicyResponse",
});
export const DeleteOriginEndpointPolicyRequest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
}).pipe(T.all(T.Http({
    method: "DELETE",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/policy",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "DeleteOriginEndpointPolicyRequest",
});
export const DeleteOriginEndpointPolicyResponse = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "DeleteOriginEndpointPolicyResponse",
});
export const HarvestedHlsManifest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ManifestName: S.String })).annotate({
    identifier: "HarvestedHlsManifest",
});
export const HarvestedHlsManifestsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(HarvestedHlsManifest);
export const HarvestedDashManifest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ManifestName: S.String })).annotate({
    identifier: "HarvestedDashManifest",
});
export const HarvestedDashManifestsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(HarvestedDashManifest);
export const HarvestedLowLatencyHlsManifest = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ ManifestName: S.String })).annotate({
    identifier: "HarvestedLowLatencyHlsManifest",
});
export const HarvestedLowLatencyHlsManifestsList = 
/*@__PURE__*/ /*#__PURE__*/ S.Array(HarvestedLowLatencyHlsManifest);
export const HarvestedManifests = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    HlsManifests: S.optional(HarvestedHlsManifestsList),
    DashManifests: S.optional(HarvestedDashManifestsList),
    LowLatencyHlsManifests: S.optional(HarvestedLowLatencyHlsManifestsList),
})).annotate({
    identifier: "HarvestedManifests",
});
export const HarvesterScheduleConfiguration = 
/*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    StartTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    EndTime: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
})).annotate({
    identifier: "HarvesterScheduleConfiguration",
});
export const S3DestinationConfig = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ BucketName: S.String, DestinationPath: S.String })).annotate({
    identifier: "S3DestinationConfig",
});
export const Destination = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({ S3Destination: S3DestinationConfig })).annotate({ identifier: "Destination" });
export const CreateHarvestJobRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
    Description: S.optional(S.String),
    HarvestedManifests: HarvestedManifests,
    ScheduleConfiguration: HarvesterScheduleConfiguration,
    Destination: Destination,
    ClientToken: S.optional(S.String).pipe(T.HttpHeader("x-amzn-client-token"), T.IdempotencyToken()),
    HarvestJobName: S.optional(S.String),
    Tags: S.optional(TagMap),
}).pipe(T.all(T.Http({
    method: "POST",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/harvestJob",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "CreateHarvestJobRequest",
});
export const HarvestJobStatus = /*@__PURE__*/ /*#__PURE__*/ S.String;
export const CreateHarvestJobResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    Destination: Destination,
    HarvestJobName: S.String,
    HarvestedManifests: HarvestedManifests,
    Description: S.optional(S.String),
    ScheduleConfiguration: HarvesterScheduleConfiguration,
    Arn: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Status: HarvestJobStatus,
    ErrorMessage: S.optional(S.String),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
})).annotate({
    identifier: "CreateHarvestJobResponse",
});
export const GetHarvestJobRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
    HarvestJobName: S.String.pipe(T.HttpLabel("HarvestJobName")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/harvestJob/{HarvestJobName}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "GetHarvestJobRequest",
});
export const GetHarvestJobResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    Destination: Destination,
    HarvestJobName: S.String,
    HarvestedManifests: HarvestedManifests,
    Description: S.optional(S.String),
    ScheduleConfiguration: HarvesterScheduleConfiguration,
    Arn: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Status: HarvestJobStatus,
    ErrorMessage: S.optional(S.String),
    ETag: S.optional(S.String),
    Tags: S.optional(TagMap),
})).annotate({
    identifier: "GetHarvestJobResponse",
});
export const CancelHarvestJobRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.String.pipe(T.HttpLabel("ChannelName")),
    OriginEndpointName: S.String.pipe(T.HttpLabel("OriginEndpointName")),
    HarvestJobName: S.String.pipe(T.HttpLabel("HarvestJobName")),
    ETag: S.optional(S.String).pipe(T.HttpHeader("x-amzn-update-if-match")),
}).pipe(T.all(T.Http({
    method: "PUT",
    uri: "/channelGroup/{ChannelGroupName}/channel/{ChannelName}/originEndpoint/{OriginEndpointName}/harvestJob/{HarvestJobName}",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "CancelHarvestJobRequest",
});
export const CancelHarvestJobResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({})).annotate({
    identifier: "CancelHarvestJobResponse",
});
export const ListHarvestJobsRequest = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String.pipe(T.HttpLabel("ChannelGroupName")),
    ChannelName: S.optional(S.String).pipe(T.HttpQuery("channelName")),
    OriginEndpointName: S.optional(S.String).pipe(T.HttpQuery("originEndpointName")),
    Status: S.optional(HarvestJobStatus).pipe(T.HttpQuery("includeStatus")),
    MaxResults: S.optional(S.Number).pipe(T.HttpQuery("maxResults")),
    NextToken: S.optional(S.String).pipe(T.HttpQuery("nextToken")),
}).pipe(T.all(T.Http({
    method: "GET",
    uri: "/channelGroup/{ChannelGroupName}/harvestJob",
}), svc, auth, proto, ver, rules))).annotate({
    identifier: "ListHarvestJobsRequest",
});
export const HarvestJob = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    ChannelGroupName: S.String,
    ChannelName: S.String,
    OriginEndpointName: S.String,
    Destination: Destination,
    HarvestJobName: S.String,
    HarvestedManifests: HarvestedManifests,
    Description: S.optional(S.String),
    ScheduleConfiguration: HarvesterScheduleConfiguration,
    Arn: S.String,
    CreatedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    ModifiedAt: S.Date.pipe(T.TimestampFormat("epoch-seconds")),
    Status: HarvestJobStatus,
    ErrorMessage: S.optional(S.String),
    ETag: S.optional(S.String),
})).annotate({ identifier: "HarvestJob" });
export const HarvestJobsList = /*@__PURE__*/ /*#__PURE__*/ S.Array(HarvestJob);
export const ListHarvestJobsResponse = /*@__PURE__*/ /*#__PURE__*/ S.suspend(() => S.Struct({
    Items: S.optional(HarvestJobsList),
    NextToken: S.optional(S.String),
})).annotate({
    identifier: "ListHarvestJobsResponse",
});
//# Errors
export class ValidationException extends S.TaggedErrorClass()("ValidationException", {
    Message: S.optional(S.String),
    ValidationExceptionType: S.optional(ValidationExceptionType),
}) {
}
export class AccessDeniedException extends S.TaggedErrorClass()("AccessDeniedException", { Message: S.optional(S.String) }).pipe(C.withAuthError) {
}
export class ConflictException extends S.TaggedErrorClass()("ConflictException", {
    Message: S.optional(S.String),
    ConflictExceptionType: S.optional(ConflictExceptionType),
}).pipe(C.withConflictError) {
}
export class InternalServerException extends S.TaggedErrorClass()("InternalServerException", { Message: S.optional(S.String) }).pipe(C.withServerError) {
}
export class ResourceNotFoundException extends S.TaggedErrorClass()("ResourceNotFoundException", {
    Message: S.optional(S.String),
    ResourceTypeNotFound: S.optional(ResourceTypeNotFound),
}).pipe(C.withBadRequestError) {
}
export class ServiceQuotaExceededException extends S.TaggedErrorClass()("ServiceQuotaExceededException", { Message: S.optional(S.String) }).pipe(C.withQuotaError) {
}
export class ThrottlingException extends S.TaggedErrorClass()("ThrottlingException", { Message: S.optional(S.String) }).pipe(C.withThrottlingError) {
}
/**
 * Lists the tags assigned to a resource.
 */
export const listTagsForResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ListTagsForResourceRequest,
    output: ListTagsForResourceResponse,
    errors: [ValidationException],
}));
/**
 * Assigns one of more tags (key-value pairs) to the specified MediaPackage resource.
 *
 * Tags can help you organize and categorize your resources. You can also use them to scope user permissions, by granting a user permission to access or change only resources with certain tag values. You can use the TagResource operation with a resource that already has tags. If you specify a new tag key for the resource, this tag is appended to the list of tags associated with the resource. If you specify a tag key that is already associated with the resource, the new tag value that you specify replaces the previous value for that tag.
 */
export const tagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: TagResourceRequest,
    output: TagResourceResponse,
    errors: [ValidationException],
}));
/**
 * Removes one or more tags from the specified resource.
 */
export const untagResource = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UntagResourceRequest,
    output: UntagResourceResponse,
    errors: [ValidationException],
}));
/**
 * Create a channel group to group your channels and origin endpoints. A channel group is the top-level resource that consists of channels and origin endpoints that are associated with it and that provides predictable URLs for stream delivery. All channels and origin endpoints within the channel group are guaranteed to share the DNS. You can create only one channel group with each request.
 */
export const createChannelGroup = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateChannelGroupRequest,
    output: CreateChannelGroupResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the specified channel group that's configured in AWS Elemental MediaPackage.
 */
export const getChannelGroup = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetChannelGroupRequest,
    output: GetChannelGroupResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Update the specified channel group. You can edit the description on a channel group for easier identification later from the AWS Elemental MediaPackage console. You can't edit the name of the channel group.
 *
 * Any edits you make that impact the video output may not be reflected for a few minutes.
 */
export const updateChannelGroup = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateChannelGroupRequest,
    output: UpdateChannelGroupResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Delete a channel group. You must delete the channel group's channels and origin endpoints before you can delete the channel group. If you delete a channel group, you'll lose access to the egress domain and will have to create a new channel group to replace it.
 */
export const deleteChannelGroup = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelGroupRequest,
    output: DeleteChannelGroupResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves all channel groups that are configured in Elemental MediaPackage.
 */
export const listChannelGroups = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelGroupsRequest,
    output: ListChannelGroupsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Items",
        pageSize: "MaxResults",
    },
}));
/**
 * Create a channel to start receiving content streams. The channel represents the input to MediaPackage for incoming live content from an encoder such as AWS Elemental MediaLive. The channel receives content, and after packaging it, outputs it through an origin endpoint to downstream devices (such as video players or CDNs) that request the content. You can create only one channel with each request. We recommend that you spread out channels between channel groups, such as putting redundant channels in the same AWS Region in different channel groups.
 */
export const createChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateChannelRequest,
    output: CreateChannelResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the specified channel that's configured in AWS Elemental MediaPackage.
 */
export const getChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetChannelRequest,
    output: GetChannelResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Update the specified channel. You can edit if MediaPackage sends ingest or egress access logs to the CloudWatch log group, if content will be encrypted, the description on a channel, and your channel's policy settings. You can't edit the name of the channel or CloudFront distribution details.
 *
 * Any edits you make that impact the video output may not be reflected for a few minutes.
 */
export const updateChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateChannelRequest,
    output: UpdateChannelResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Delete a channel to stop AWS Elemental MediaPackage from receiving further content. You must delete the channel's origin endpoints before you can delete the channel.
 */
export const deleteChannel = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelRequest,
    output: DeleteChannelResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves all channels in a specific channel group that are configured in AWS Elemental MediaPackage.
 */
export const listChannels = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListChannelsRequest,
    output: ListChannelsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Items",
        pageSize: "MaxResults",
    },
}));
/**
 * Resetting the channel can help to clear errors from misconfigurations in the encoder. A reset refreshes the ingest stream and removes previous content.
 *
 * Be sure to stop the encoder before you reset the channel, and wait at least 30 seconds before you restart the encoder.
 */
export const resetChannelState = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ResetChannelStateRequest,
    output: ResetChannelStateResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Attaches an IAM policy to the specified channel. With policies, you can specify who has access to AWS resources and what actions they can perform on those resources. You can attach only one policy with each request.
 */
export const putChannelPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutChannelPolicyRequest,
    output: PutChannelPolicyResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the specified channel policy that's configured in AWS Elemental MediaPackage. With policies, you can specify who has access to AWS resources and what actions they can perform on those resources.
 */
export const getChannelPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetChannelPolicyRequest,
    output: GetChannelPolicyResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Delete a channel policy.
 */
export const deleteChannelPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteChannelPolicyRequest,
    output: DeleteChannelPolicyResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * The endpoint is attached to a channel, and represents the output of the live content. You can associate multiple endpoints to a single channel. Each endpoint gives players and downstream CDNs (such as Amazon CloudFront) access to the content for playback. Content can't be served from a channel until it has an endpoint. You can create only one endpoint with each request.
 */
export const createOriginEndpoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateOriginEndpointRequest,
    output: CreateOriginEndpointResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the specified origin endpoint that's configured in AWS Elemental MediaPackage to obtain its playback URL and to view the packaging settings that it's currently using.
 */
export const getOriginEndpoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetOriginEndpointRequest,
    output: GetOriginEndpointResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Update the specified origin endpoint. Edit the packaging preferences on an endpoint to optimize the viewing experience. You can't edit the name of the endpoint.
 *
 * Any edits you make that impact the video output may not be reflected for a few minutes.
 */
export const updateOriginEndpoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: UpdateOriginEndpointRequest,
    output: UpdateOriginEndpointResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Origin endpoints can serve content until they're deleted. Delete the endpoint if it should no longer respond to playback requests. You must delete all endpoints from a channel before you can delete the channel.
 */
export const deleteOriginEndpoint = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteOriginEndpointRequest,
    output: DeleteOriginEndpointResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves all origin endpoints in a specific channel that are configured in AWS Elemental MediaPackage.
 */
export const listOriginEndpoints = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListOriginEndpointsRequest,
    output: ListOriginEndpointsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Items",
        pageSize: "MaxResults",
    },
}));
/**
 * Resetting the origin endpoint can help to resolve unexpected behavior and other content packaging issues. It also helps to preserve special events when you don't want the previous content to be available for viewing. A reset clears out all previous content from the origin endpoint.
 *
 * MediaPackage might return old content from this endpoint in the first 30 seconds after the endpoint reset. For best results, when possible, wait 30 seconds from endpoint reset to send playback requests to this endpoint.
 */
export const resetOriginEndpointState = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: ResetOriginEndpointStateRequest,
    output: ResetOriginEndpointStateResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Attaches an IAM policy to the specified origin endpoint. You can attach only one policy with each request.
 */
export const putOriginEndpointPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: PutOriginEndpointPolicyRequest,
    output: PutOriginEndpointPolicyResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the specified origin endpoint policy that's configured in AWS Elemental MediaPackage.
 */
export const getOriginEndpointPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetOriginEndpointPolicyRequest,
    output: GetOriginEndpointPolicyResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Delete an origin endpoint policy.
 */
export const deleteOriginEndpointPolicy = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: DeleteOriginEndpointPolicyRequest,
    output: DeleteOriginEndpointPolicyResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Creates a new harvest job to export content from a MediaPackage v2 channel to an S3 bucket.
 */
export const createHarvestJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CreateHarvestJobRequest,
    output: CreateHarvestJobResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ServiceQuotaExceededException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves the details of a specific harvest job.
 */
export const getHarvestJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: GetHarvestJobRequest,
    output: GetHarvestJobResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Cancels an in-progress harvest job.
 */
export const cancelHarvestJob = /*@__PURE__*/ /*#__PURE__*/ API.make(() => ({
    input: CancelHarvestJobRequest,
    output: CancelHarvestJobResponse,
    errors: [
        AccessDeniedException,
        ConflictException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
}));
/**
 * Retrieves a list of harvest jobs that match the specified criteria.
 */
export const listHarvestJobs = /*@__PURE__*/ /*#__PURE__*/ API.makePaginated(() => ({
    input: ListHarvestJobsRequest,
    output: ListHarvestJobsResponse,
    errors: [
        AccessDeniedException,
        InternalServerException,
        ResourceNotFoundException,
        ThrottlingException,
        ValidationException,
    ],
    pagination: {
        inputToken: "NextToken",
        outputToken: "NextToken",
        items: "Items",
        pageSize: "MaxResults",
    },
}));
//# sourceMappingURL=mediapackagev2.js.map