import * as kv from "@distilled.cloud/aws/kinesis-video";
import * as Effect from "effect/Effect";
declare const KinesisVideoNotConverged_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: "KinesisVideoNotConverged";
} & Readonly;
/**
* Raised when a Kinesis Video stream or signaling channel fails to reach
* `ACTIVE` within the bounded polling budget after a create/update.
*/
export declare class KinesisVideoNotConverged extends KinesisVideoNotConverged_base<{
readonly resource: string;
readonly status: string | undefined;
}> {
}
declare const SignalingEndpointUnavailable_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: "SignalingEndpointUnavailable";
} & Readonly;
/**
* Raised when `GetSignalingChannelEndpoint` returns no endpoint for the
* requested protocol.
*/
export declare class SignalingEndpointUnavailable extends SignalingEndpointUnavailable_base<{
readonly channelArn: string;
readonly protocol: string;
}> {
}
/**
* Bounded retry through transient `ResourceInUseException` states — e.g.
* deleting a stream or channel that is still `CREATING`/`UPDATING`, or
* re-creating one whose previous incarnation is still `DELETING`.
*
* Expressed as an explicitly-typed module-scope helper: inlining
* `Effect.retry` in lifecycle code leaves its conditional return type
* unresolved in the provider's declaration emit, which widens the
* `AWS.providers()` layer type for every downstream consumer.
*/
export declare const retryWhileResourceInUse: (self: Effect.Effect) => Effect.Effect;
/**
* Bounded retry through the transient states a mutation can hit while a
* previous async transition settles: `ResourceInUseException` and the
* synthetic `StreamNotActive` (Kinesis Video overloads
* `ResourceNotFoundException` with "not found or not active" while a
* stream/channel is CREATING/UPDATING — patched into a typed tag in
* distilled). Explicitly typed for the declaration-emit reason above.
*/
export declare const retryWhileSettling: (self: Effect.Effect) => Effect.Effect;
/**
* Bounded retry through `ResourceNotFoundException` — a freshly-created
* stream/channel can be invisible to `Describe*` for a few seconds
* (eventual consistency). Explicitly typed for the same declaration-emit
* reason as above.
*/
export declare const retryWhileNotFound: (self: Effect.Effect) => Effect.Effect;
/**
* Poll `DescribeStream` until the stream is `ACTIVE`. Tolerates the brief
* post-create window where the stream is not yet describable.
*
* Mutations (`UpdateStream`/`UpdateDataRetention`) are asynchronous AND bump
* the stream version — a describe issued immediately after can still show
* the pre-mutation `ACTIVE` state with the stale version. Pass
* `previousVersion` after a mutation to also wait for the version bump, so
* the returned `Version` is safe to use in the next versioned call.
*/
export declare const waitForStreamActive: (streamName: string, previousVersion?: string | undefined) => Effect.Effect;
/**
* Poll `DescribeSignalingChannel` until the channel is `ACTIVE`. Tolerates
* the brief post-create window where the channel is not yet describable.
* Pass `previousVersion` after `UpdateSignalingChannel` to also wait for the
* version bump (see {@link waitForStreamActive}).
*/
export declare const waitForChannelActive: (channelName: string, previousVersion?: string | undefined) => Effect.Effect;
/**
* Poll `DescribeStream` until the stream is fully purged (NotFound).
* A stream in `DELETING` blocks re-creation of the same name with
* `ResourceInUseException`, so reconcilers wait it out before recreating.
*/
export declare const waitForStreamGone: (streamName: string) => Effect.Effect;
/**
* Poll `DescribeSignalingChannel` until the channel is fully purged
* (NotFound) — see {@link waitForStreamGone}.
*/
export declare const waitForChannelGone: (channelName: string) => Effect.Effect;
/**
* Drop `undefined` values from a distilled tag map (`{ [key]: string |
* undefined }`) so it can be diffed as a plain `Record`.
*/
export declare const compactTags: (tags: {
[key: string]: string | undefined;
} | undefined) => Record;
/**
* Discover (and cache) the per-stream data endpoint for `apiName`.
* Parameterized over the `GetDataEndpoint` operation so binding layers can
* pass an operation captured via yield-first (`yield* op`) whose calls are
* requirement-free.
*/
export declare const discoverDataEndpoint: (streamArn: string, apiName: kv.APIName, getDataEndpoint: (input: kv.GetDataEndpointInput) => Effect.Effect) => Effect.Effect;
/**
* Discover (and cache) the per-channel signaling endpoint for `protocol` +
* `role` via `GetSignalingChannelEndpoint`. Parameterized over the operation
* for the same yield-first reason as {@link discoverDataEndpoint}.
*/
export declare const discoverSignalingEndpoint: (channelArn: string, protocol: kv.ChannelProtocol, role: kv.ChannelRole, getSignalingChannelEndpoint: (input: kv.GetSignalingChannelEndpointInput) => Effect.Effect) => Effect.Effect;
export {};
//# sourceMappingURL=internal.d.ts.map