1import type * as shield from "@distilled.cloud/aws/shield";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `shield:DescribeAttack`.
7 *
8 * Hydrates the full detail document of a DDoS attack (vectors, counters,
9 * mitigations, sub-resources) from an attack id surfaced by
10 * {@link ListAttacks}. Requires an active Shield Advanced subscription; a
11 * nonexistent attack id answers with an empty document or the typed
12 * `AccessDeniedException`.
13 * Provide the implementation with
14 * `Effect.provide(AWS.Shield.DescribeAttackHttp)`.
15 * ### Attack Visibility
16 * **Example:** Hydrate Attack Details
17 * ```typescript
18 * // init — account-level binding, no resource argument
19 * const describeAttack = yield* AWS.Shield.DescribeAttack();
20 *
21 * // runtime
22 * const { Attack } = yield* describeAttack({ AttackId: attackId });
23 * ```
24 *
25 * @binding
26 */
27export interface DescribeAttack extends Binding.Service<
28 DescribeAttack,
29 "AWS.Shield.DescribeAttack",
30 () => Effect.Effect<
31 (
32 request: shield.DescribeAttackRequest,
33 ) => Effect.Effect<
34 shield.DescribeAttackResponse,
35 shield.DescribeAttackError
36 >
37 >
38> {}
39export const DescribeAttack = Binding.Service<DescribeAttack>(
40 "AWS.Shield.DescribeAttack",
41);