1import * as sqs from "@distilled.cloud/aws/sqs";
2import * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Queue } from "./Queue.ts";
5
6export interface ListMessageMoveTasksRequest extends Omit<
7 sqs.ListMessageMoveTasksRequest,
8 "SourceArn"
9> {}
10
11/**
12 * Runtime binding for `sqs:ListMessageMoveTasks` (dead-letter queue
13 * redrive).
14 *
15 * Bind this operation to a dead-letter {@link Queue} inside a function
16 * runtime to inspect the most recent message move tasks (up to 10) whose
17 * source is that queue — including their status, progress counters, and
18 * `TaskHandle` for cancellation. The binding grants the host function
19 * `sqs:ListMessageMoveTasks` on the queue. Provide the
20 * `ListMessageMoveTasksHttp` layer on the Function to implement the binding.
21 * ### Dead-Letter Queue Redrive
22 * **Example:** Inspect Redrive Progress
23 * ```typescript
24 * // init (provide SQS.ListMessageMoveTasksHttp on the Function)
25 * const listMessageMoveTasks = yield* SQS.ListMessageMoveTasks(dlq);
26 *
27 * // runtime
28 * const result = yield* listMessageMoveTasks();
29 * for (const task of result.Results ?? []) {
30 * // task.Status, task.ApproximateNumberOfMessagesMoved, task.TaskHandle
31 * }
32 * ```
33 *
34 * @binding
35 */
36export interface ListMessageMoveTasks extends Binding.Service<
37 ListMessageMoveTasks,
38 "AWS.SQS.ListMessageMoveTasks",
39 (
40 queue: Queue,
41 ) => Effect.Effect<
42 (
43 request?: ListMessageMoveTasksRequest,
44 ) => Effect.Effect<
45 sqs.ListMessageMoveTasksResult,
46 sqs.ListMessageMoveTasksError
47 >
48 >
49> {}
50
51export const ListMessageMoveTasks = Binding.Service<ListMessageMoveTasks>(
52 "AWS.SQS.ListMessageMoveTasks",
53);