1import * as Kinesis from "@distilled.cloud/aws/kinesis";
2import * as Effect from "effect/Effect";
3import * as Binding from "../../Binding.ts";
4import type { Stream } from "./Stream.ts";
5
6export interface DescribeStreamRequest extends Omit<
7 Kinesis.DescribeStreamInput,
8 "StreamName" | "StreamARN"
9> {}
10
11/**
12 * Runtime binding for `kinesis:DescribeStream`.
13 *
14 * Bind this operation to a `Stream` to read its full description, including
15 * the shard map — the stream name is injected automatically. For status and
16 * counts without the shard list, prefer `AWS.Kinesis.DescribeStreamSummary`.
17 * Provide the implementation with
18 * `Effect.provide(AWS.Kinesis.DescribeStreamHttp)`.
19 * ### Inspecting Streams
20 * **Example:** Describe the Bound Stream
21 * ```typescript
22 * // init
23 * const describeStream = yield* AWS.Kinesis.DescribeStream(stream);
24 *
25 * // runtime
26 * const result = yield* describeStream();
27 * const status = result.StreamDescription.StreamStatus;
28 * const shards = result.StreamDescription.Shards;
29 * ```
30 *
31 * @binding
32 */
33export interface DescribeStream extends Binding.Service<
34 DescribeStream,
35 "AWS.Kinesis.DescribeStream",
36 (
37 stream: Stream,
38 ) => Effect.Effect<
39 (
40 request?: DescribeStreamRequest,
41 ) => Effect.Effect<
42 Kinesis.DescribeStreamOutput,
43 Kinesis.DescribeStreamError
44 >
45 >
46> {}
47
48export const DescribeStream = Binding.Service<DescribeStream>(
49 "AWS.Kinesis.DescribeStream",
50);