import * as medialive from "@distilled.cloud/aws/medialive"; import * as Provider from "../../Provider.ts"; import { Resource } from "../../Resource.ts"; import type { Providers } from "../Providers.ts"; declare const MediaLiveChannelFailed_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & { readonly _tag: "MediaLiveChannelFailed"; } & Readonly; /** * Raised when a MediaLive channel lands in `CREATE_FAILED` or `UPDATE_FAILED` * instead of settling into `IDLE`. */ export declare class MediaLiveChannelFailed extends MediaLiveChannelFailed_base<{ message: string; }> { } export interface ChannelProps { /** * Name of the channel. If omitted, a unique name is generated from the * app, stage, and logical ID. Names are mutable — changing the name * updates the channel in place. */ name?: string; /** * The class of the channel. `STANDARD` runs two redundant encoder * pipelines; `SINGLE_PIPELINE` runs one. Changing the class replaces the * channel. * @default "STANDARD" */ channelClass?: medialive.ChannelClass; /** * ARN of the IAM role MediaLive assumes to read inputs and write outputs * (trusts `medialive.amazonaws.com`). */ roleArn?: string; /** * The inputs attached to this channel. */ inputAttachments?: medialive.InputAttachment[]; /** * The encoder settings — audio/video descriptions, output groups, and * timecode configuration. */ encoderSettings?: medialive.EncoderSettings; /** * Destinations referenced by the output groups in `encoderSettings`. */ destinations?: medialive.OutputDestination[]; /** * Specification of the input codec/resolution/bitrate tier (drives * per-hour pricing). */ inputSpecification?: medialive.InputSpecification; /** * Specification of CDI inputs for this channel. */ cdiInputSpecification?: medialive.CdiInputSpecification; /** * The CloudWatch log level for the channel. * @default "DISABLED" */ logLevel?: medialive.LogLevel; /** * Maintenance window settings (day + start hour). */ maintenance?: medialive.MaintenanceCreateSettings; /** * VPC output settings. Changing the VPC settings replaces the channel. */ vpc?: medialive.VpcOutputSettings; /** * User-defined tags for the channel. */ tags?: Record; } export interface Channel extends Resource<"AWS.MediaLive.Channel", ChannelProps, { /** Server-assigned unique id of the channel. */ channelId: string; /** ARN of the channel. */ channelArn: string; /** Name of the channel. */ channelName: string | undefined; /** Current lifecycle state (e.g. `IDLE`, `RUNNING`). */ state: medialive.ChannelState | undefined; /** Pipeline class (`STANDARD` or `SINGLE_PIPELINE`). */ channelClass: medialive.ChannelClass | undefined; /** Egress endpoints the channel writes output through. */ egressEndpoints: medialive.ChannelEgressEndpoint[]; }, never, Providers> { } /** * An AWS Elemental MediaLive channel — the live encoder that reads from * attached inputs, transcodes per its encoder settings, and writes to output * destinations (HLS, RTMP, MediaPackage, ...). * * Channels bill per running hour; Alchemy provisions channels in the `IDLE` * state and never starts them — start/stop is a runtime operation. * * ### Creating a Channel * **Example:** Single-pipeline HLS channel * ```typescript * const channel = yield* MediaLive.Channel("Live", { * channelClass: "SINGLE_PIPELINE", * roleArn: role.roleArn, * inputAttachments: [ * { InputId: input.inputId, InputAttachmentName: "primary" }, * ], * inputSpecification: { * Codec: "AVC", * Resolution: "SD", * MaximumBitrate: "MAX_10_MBPS", * }, * destinations, * encoderSettings, * }); * ``` * * **Example:** IAM role for MediaLive * ```typescript * const role = yield* IAM.Role("MediaLiveRole", { * assumeRolePolicyDocument: { * Version: "2012-10-17", * Statement: [ * { * Effect: "Allow", * Principal: { Service: "medialive.amazonaws.com" }, * Action: ["sts:AssumeRole"], * }, * ], * }, * }); * ``` * * @resource */ export declare const Channel: import("../../Resource.ts").ResourceClass; export declare const ChannelProvider: () => import("effect/Layer").Layer, never, import("@distilled.cloud/aws/Credentials").Credentials | import("effect/unstable/http/HttpClient").HttpClient | import("../../Stack.ts").Stack | import("../../Stage.ts").Stage>; export {}; //# sourceMappingURL=Channel.d.ts.map