1import * as Kinesis from "@distilled.cloud/aws/kinesis";
2import * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { StreamConsumer } from "./StreamConsumer.ts";
5
6export interface DescribeStreamConsumerRequest extends Omit<
7 Kinesis.DescribeStreamConsumerInput,
8 "ConsumerARN" | "StreamARN" | "ConsumerName"
9> {}
10
11/**
12 * Runtime binding for `kinesis:DescribeStreamConsumer`.
13 *
14 * Bind this operation to a `StreamConsumer` to read the enhanced fan-out
15 * consumer's status and ARN — the consumer ARN is injected automatically.
16 * Provide the implementation with
17 * `Effect.provide(AWS.Kinesis.DescribeStreamConsumerHttp)`.
18 * ### Enhanced Fan-Out
19 * **Example:** Describe a Registered Consumer
20 * ```typescript
21 * const consumer = yield* AWS.Kinesis.StreamConsumer("Analytics", {
22 * streamArn: stream.streamArn,
23 * });
24 * // init
25 * const describeStreamConsumer =
26 * yield* AWS.Kinesis.DescribeStreamConsumer(consumer);
27 *
28 * // runtime
29 * const result = yield* describeStreamConsumer();
30 * const status = result.ConsumerDescription.ConsumerStatus;
31 * ```
32 *
33 * @binding
34 */
35export interface DescribeStreamConsumer extends Binding.Service<
36 DescribeStreamConsumer,
37 "AWS.Kinesis.DescribeStreamConsumer",
38 (
39 consumer: StreamConsumer,
40 ) => Effect.Effect<
41 (
42 request?: DescribeStreamConsumerRequest,
43 ) => Effect.Effect<
44 Kinesis.DescribeStreamConsumerOutput,
45 Kinesis.DescribeStreamConsumerError
46 >
47 >
48> {}
49
50export const DescribeStreamConsumer = Binding.Service<DescribeStreamConsumer>(
51 "AWS.Kinesis.DescribeStreamConsumer",
52);