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 ListSchedulesRequest extends Omit<
7 scheduler.ListSchedulesInput,
8 "GroupName"
9> {}
10
11/**
12 * Runtime binding for `scheduler:ListSchedules`.
13 *
14 * Pairs with {@link CreateSchedule} for the dynamic-scheduling pattern: a
15 * deployed Lambda enumerates the schedules it minted at runtime (sweep
16 * pending reminders, count outstanding one-shots). Listing is always scoped
17 * to the bound `ScheduleGroup` — or the `default` group when none is given.
18 * Note: IAM evaluates `scheduler:ListSchedules` against the account-wide
19 * `schedule/*​/*` pattern (not the group), so the binding grants on that
20 * pattern while the request's `GroupName` filter keeps results group-scoped.
21 * ### Listing Schedules At Runtime
22 * **Example:** Sweep Pending Reminders
23 * ```typescript
24 * const listSchedules = yield* AWS.Scheduler.ListSchedules();
25 *
26 * // runtime: enumerate this app's runtime-minted reminders
27 * const page = yield* listSchedules({ NamePrefix: "reminder-" });
28 * for (const schedule of page.Schedules) {
29 * console.log(schedule.Name, schedule.State);
30 * }
31 * ```
32 *
33 * **Example:** Scope Listing To A Schedule Group
34 * ```typescript
35 * const listSchedules = yield* AWS.Scheduler.ListSchedules(group);
36 * ```
37 *
38 * @binding
39 */
40export interface ListSchedules extends Binding.Service<
41 ListSchedules,
42 "AWS.Scheduler.ListSchedules",
43 (
44 group?: ScheduleGroup,
45 ) => Effect.Effect<
46 (
47 request?: ListSchedulesRequest,
48 ) => Effect.Effect<
49 scheduler.ListSchedulesOutput,
50 scheduler.ListSchedulesError
51 >
52 >
53> {}
54export const ListSchedules = Binding.Service<ListSchedules>(
55 "AWS.Scheduler.ListSchedules",
56);