1import type * as personalizeruntime from "@distilled.cloud/aws/personalize-runtime";
2import type * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4
5/**
6 * Runtime binding for `personalize:GetRecommendations` — Returns a list of recommended items for a user from a campaign or
7 * domain recommender — the core Personalize serving call. Campaign and
8 * recommender ARNs are chosen at runtime, so the binding takes no
9 * arguments and grants `personalize:GetRecommendations` on `*`.
10 * Provide the implementation with
11 * `Effect.provide(AWS.Personalize.GetRecommendationsHttp)`.
12 *
13 * ### Serving Recommendations
14 * **Example:** Recommend Items for a User
15 * ```typescript
16 * // init
17 * const getRecommendations = yield* Personalize.GetRecommendations();
18 *
19 * const { itemList } = yield* getRecommendations({
20 * campaignArn,
21 * userId: "user-1",
22 * numResults: 10,
23 * });
24 * ```
25 *
26 * @binding
27 */
28export interface GetRecommendations extends Binding.Service<
29 GetRecommendations,
30 "AWS.Personalize.GetRecommendations",
31 () => Effect.Effect<
32 (
33 request: personalizeruntime.GetRecommendationsRequest,
34 ) => Effect.Effect<
35 personalizeruntime.GetRecommendationsResponse,
36 personalizeruntime.GetRecommendationsError
37 >
38 >
39> {}
40export const GetRecommendations = Binding.Service<GetRecommendations>(
41 "AWS.Personalize.GetRecommendations",
42);