1import type * as personalize from "@distilled.cloud/aws/personalize";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `personalize:DescribeCampaign` — Reads a campaign's status and the solution version it serves — used to
7 * confirm a campaign update finished before switching traffic.
8 * Provide the implementation with
9 * `Effect.provide(AWS.Personalize.DescribeCampaignHttp)`.
10 *
11 * ### Retraining Loop
12 * **Example:** Poll a Campaign Update
13 * ```typescript
14 * // init
15 * const describeCampaign = yield* Personalize.DescribeCampaign();
16 *
17 * const { campaign } = yield* describeCampaign({ campaignArn });
18 * const live = campaign?.status === "ACTIVE";
19 * ```
20 *
21 * @binding
22 */
23export interface DescribeCampaign extends Binding.Service<
24 DescribeCampaign,
25 "AWS.Personalize.DescribeCampaign",
26 () => Effect.Effect<
27 (
28 request: personalize.DescribeCampaignRequest,
29 ) => Effect.Effect<
30 personalize.DescribeCampaignResponse,
31 personalize.DescribeCampaignError
32 >
33 >
34> {}
35export const DescribeCampaign = Binding.Service<DescribeCampaign>(
36 "AWS.Personalize.DescribeCampaign",
37);