1import type * as mediatailor from "@distilled.cloud/aws/mediatailor";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `mediatailor:UpdateProgram` — move or re-configure a
7 * scheduled program on a channel-assembly channel (e.g. change its
8 * transition or ad breaks) before it plays.
9 *
10 * Channel/program names are runtime parameters, so the binding is
11 * account-level and grants `mediatailor:UpdateProgram` on `*`. Provide the
12 * implementation with `Effect.provide(AWS.MediaTailor.UpdateProgramHttp)`.
13 *
14 * ### Channel Assembly
15 * **Example:** Reschedule a program
16 * ```typescript
17 * const updateProgram = yield* AWS.MediaTailor.UpdateProgram();
18 *
19 * yield* updateProgram({
20 * ChannelName: "my-channel",
21 * ProgramName: `episode-${id}`,
22 * ScheduleConfiguration: { Transition: { ScheduledStartTimeMillis: startAt } },
23 * });
24 * ```
25 *
26 * @binding
27 */
28export interface UpdateProgram extends Binding.Service<
29 UpdateProgram,
30 "AWS.MediaTailor.UpdateProgram",
31 () => Effect.Effect<
32 (
33 request: mediatailor.UpdateProgramRequest,
34 ) => Effect.Effect<
35 mediatailor.UpdateProgramResponse,
36 mediatailor.UpdateProgramError
37 >
38 >
39> {}
40export const UpdateProgram = Binding.Service<UpdateProgram>(
41 "AWS.MediaTailor.UpdateProgram",
42);