1import type * as appsignals from "@distilled.cloud/aws/application-signals";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { ServiceLevelObjective } from "./ServiceLevelObjective.ts";
5
6/**
7 * Runtime binding for `application-signals:GetServiceLevelObjective`,
8 * scoped to one {@link ServiceLevelObjective}.
9 *
10 * Returns the bound SLO's full configuration (SLI, goal, burn rates).
11 * Provide the implementation with
12 * `Effect.provide(AWS.ApplicationSignals.GetServiceLevelObjectiveHttp)`.
13 * ### Reading SLOs
14 * **Example:** Read the Bound SLO
15 * ```typescript
16 * // init — bind the operation to the SLO
17 * const getSlo = yield* AWS.ApplicationSignals.GetServiceLevelObjective(slo);
18 *
19 * // runtime — the SLO's ARN is injected automatically
20 * const result = yield* getSlo();
21 * yield* Effect.log(result.Slo.Goal.AttainmentGoal);
22 * ```
23 *
24 * @binding
25 */
26export interface GetServiceLevelObjective extends Binding.Service<
27 GetServiceLevelObjective,
28 "AWS.ApplicationSignals.GetServiceLevelObjective",
29 (
30 slo: ServiceLevelObjective,
31 ) => Effect.Effect<
32 () => Effect.Effect<
33 appsignals.GetServiceLevelObjectiveOutput,
34 appsignals.GetServiceLevelObjectiveError
35 >
36 >
37> {}
38
39export const GetServiceLevelObjective =
40 Binding.Service<GetServiceLevelObjective>(
41 "AWS.ApplicationSignals.GetServiceLevelObjective",
42 );