1import * as ivsrealtime from "@distilled.cloud/aws/ivs-realtime";
2import * as Effect from "effect/Effect";
3import * as Layer from "effect/Layer";
4import { toWireSeconds } from "../../Util/Duration.ts";
5import { makeIvsRealtimeReplicationHttpBinding } from "./BindingHttp.ts";
6import {
7 StartParticipantReplication,
8 type StartParticipantReplicationRequest,
9} from "./StartParticipantReplication.ts";
10import type { Stage } from "./Stage.ts";
11
12export const StartParticipantReplicationHttp = Layer.effect(
13 StartParticipantReplication,
14 Effect.gen(function* () {
15 const make = yield* makeIvsRealtimeReplicationHttpBinding({
16 tag: "AWS.IVSRealtime.StartParticipantReplication",
17 operation: ivsrealtime.startParticipantReplication,
18 actions: ["ivs:StartParticipantReplication"],
19 });
20 return Effect.fn(function* (sourceStage: Stage, destinationStage: Stage) {
21 const startReplication = yield* make(sourceStage, destinationStage);
22 return ({
23 reconnectWindow,
24 ...request
25 }: StartParticipantReplicationRequest) =>
26 startReplication({
27 ...request,
28 reconnectWindowSeconds: toWireSeconds(reconnectWindow),
29 });
30 });
31 }),
32);