# HydrateContext

Advanced renderer state describing the current hydration range.

## Signatures

```ts
export type HydrateContext = {
    readonly where: HydrationNode;
    readonly manyKey?: string;
};
```

```ts
export declare const HydrateContext: Context.Service<HydrateContext, HydrateContext>;
```

## Why

The DOM renderer passes marker position and keyed-list identity through an
Effect service instead of a hidden component tree. It is published for
renderer authors but is not normal application state.

## Ownership and lifetime

A render Scope owns the referenced hydration cursor. Consumers must not retain
or mutate it after that Scope closes.

## Examples

```ts
import type { HydrateContext } from "@typed/template/HydrateContext"

declare const context: HydrateContext
context.where
```

```ts
import { HydrateContext } from "@typed/template/HydrateContext"
import { Effect } from "effect"

const current = Effect.gen(function* () {
  return (yield* HydrateContext).where
})
```
