1import type * as scheduler from "@distilled.cloud/aws/scheduler";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { ScheduleGroup } from "./ScheduleGroup.ts";
5
6export interface DeleteScheduleRequest extends Omit<
7 scheduler.DeleteScheduleInput,
8 "GroupName"
9> {}
10
11/**
12 * Runtime binding for `scheduler:DeleteSchedule`.
13 *
14 * Pairs with {@link CreateSchedule} for the dynamic-scheduling pattern: a
15 * deployed Lambda deletes schedules it minted at runtime (cancel a reminder,
16 * clean up a completed one-shot). Optionally scoped to a `ScheduleGroup`;
17 * without one it covers the default group.
18 * ### Deleting Schedules At Runtime
19 * **Example:** Cancel A Reminder
20 * ```typescript
21 * const deleteSchedule = yield* AWS.Scheduler.DeleteSchedule();
22 *
23 * // runtime
24 * yield* deleteSchedule({ Name: `reminder-${userId}` }).pipe(
25 * // already gone — cancellation is idempotent
26 * Effect.catchTag("ResourceNotFoundException", () => Effect.void),
27 * );
28 * ```
29 *
30 * **Example:** Scope Deletion To A Schedule Group
31 * ```typescript
32 * const deleteSchedule = yield* AWS.Scheduler.DeleteSchedule(group);
33 * ```
34 *
35 * @binding
36 */
37export interface DeleteSchedule extends Binding.Service<
38 DeleteSchedule,
39 "AWS.Scheduler.DeleteSchedule",
40 (
41 group?: ScheduleGroup,
42 ) => Effect.Effect<
43 (
44 request: DeleteScheduleRequest,
45 ) => Effect.Effect<
46 scheduler.DeleteScheduleOutput,
47 scheduler.DeleteScheduleError
48 >
49 >
50> {}
51export const DeleteSchedule = Binding.Service<DeleteSchedule>(
52 "AWS.Scheduler.DeleteSchedule",
53);