1import type * as fis from "@distilled.cloud/aws/fis";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `fis:StopExperiment`.
7 *
8 * Stops a running experiment — the manual abort switch for a
9 * chaos-engineering run that a monitoring function decides has gone far
10 * enough. Experiments are created dynamically, so this is an account-level
11 * binding addressed by experiment id. Provide the implementation with
12 * `Effect.provide(AWS.FIS.StopExperimentHttp)`.
13 * ### Running Experiments
14 * **Example:** Abort a Running Experiment
15 * ```typescript
16 * // init — account-level binding, no resource argument
17 * const stopExperiment = yield* AWS.FIS.StopExperiment();
18 *
19 * // runtime
20 * const { experiment } = yield* stopExperiment({ id: experimentId });
21 * console.log(experiment?.state?.status); // "stopping"
22 * ```
23 *
24 * @binding
25 */
26export interface StopExperiment extends Binding.Service<
27 StopExperiment,
28 "AWS.FIS.StopExperiment",
29 () => Effect.Effect<
30 (
31 request: fis.StopExperimentRequest,
32 ) => Effect.Effect<fis.StopExperimentResponse, fis.StopExperimentError>
33 >
34> {}
35export const StopExperiment = Binding.Service<StopExperiment>(
36 "AWS.FIS.StopExperiment",
37);