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 CancelMessageMoveTaskRequest
7 extends sqs.CancelMessageMoveTaskRequest {}
8
9/**
10 * Runtime binding for `sqs:CancelMessageMoveTask` (dead-letter queue
11 * redrive).
12 *
13 * Bind this operation to the dead-letter {@link Queue} whose move task
14 * should be cancellable. Cancellation only stops messages that have not been
15 * moved yet; a task that already finished fails with the typed
16 * `ResourceNotFoundException`. The binding grants the host function
17 * `sqs:CancelMessageMoveTask` on the queue. Provide the
18 * `CancelMessageMoveTaskHttp` layer on the Function to implement the
19 * binding.
20 * ### Dead-Letter Queue Redrive
21 * **Example:** Cancel a Running Redrive
22 * ```typescript
23 * // init (provide SQS.CancelMessageMoveTaskHttp on the Function)
24 * const cancelMessageMoveTask = yield* SQS.CancelMessageMoveTask(dlq);
25 *
26 * // runtime
27 * yield* cancelMessageMoveTask({ TaskHandle: taskHandle });
28 * ```
29 *
30 * @binding
31 */
32export interface CancelMessageMoveTask extends Binding.Service<
33 CancelMessageMoveTask,
34 "AWS.SQS.CancelMessageMoveTask",
35 (
36 queue: Queue,
37 ) => Effect.Effect<
38 (
39 request: CancelMessageMoveTaskRequest,
40 ) => Effect.Effect<
41 sqs.CancelMessageMoveTaskResult,
42 sqs.CancelMessageMoveTaskError
43 >
44 >
45> {}
46
47export const CancelMessageMoveTask = Binding.Service<CancelMessageMoveTask>(
48 "AWS.SQS.CancelMessageMoveTask",
49);