1import type * as forecast from "@distilled.cloud/aws/forecast";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `forecast:DescribeForecast` — poll a forecast
7 * generation started by {@link CreateForecast} until its `Status` reaches
8 * `ACTIVE` and it becomes queryable.
9 *
10 * Forecast ARNs are created at runtime, so the binding takes no arguments
11 * and grants `forecast:DescribeForecast` on `*`. Provide the implementation
12 * with `Effect.provide(AWS.Forecast.DescribeForecastHttp)`.
13 *
14 * ### Generating Forecasts
15 * **Example:** Wait for a Forecast to Become Queryable
16 * ```typescript
17 * // init
18 * const describeForecast = yield* AWS.Forecast.DescribeForecast();
19 *
20 * // runtime
21 * const detail = yield* describeForecast({
22 * ForecastArn: generated.ForecastArn!,
23 * });
24 * yield* Effect.log(`forecast ${detail.Status}`);
25 * ```
26 *
27 * @binding
28 */
29export interface DescribeForecast extends Binding.Service<
30 DescribeForecast,
31 "AWS.Forecast.DescribeForecast",
32 () => Effect.Effect<
33 (
34 request: forecast.DescribeForecastRequest,
35 ) => Effect.Effect<
36 forecast.DescribeForecastResponse,
37 forecast.DescribeForecastError
38 >
39 >
40> {}
41export const DescribeForecast = Binding.Service<DescribeForecast>(
42 "AWS.Forecast.DescribeForecast",
43);