# Bounds

Defines the bounds for slicing an Fx stream.

## Signatures

```ts
export interface Bounds {
    readonly skip: number;
    readonly take: number;
}
```

## Why

`Bounds` keeps the two independent slice decisions explicit: `skip` counts discarded prefix
values and `take` bounds the following output.

## Ownership and lifetime

This immutable model acquires no resources. A consumer decides how to normalize unusual numeric
values when applying it.

## Property: skip

Number of source values discarded before the slice can emit.

## Property: skip: Why

Keeping the prefix count separate from `take` permits windows that begin anywhere in a source.

## Property: skip: Ownership and lifetime

This number stores no state and acquires no resources; `slice` copies it into a per-run counter.

## Property: take

Maximum number of values emitted after the skipped prefix.

## Property: take: Why

The output bound makes early completion explicit without buffering the selected values.

## Property: take: Ownership and lifetime

This number stores no state and acquires no resources; `slice` owns the corresponding counter
only for the duration of one run.

## Examples

```ts
import type { Fx } from "@typed/fx"

const page: Fx.Bounds = { skip: 20, take: 10 }
```

```ts
import type { Fx } from "@typed/fx"
const bounds: Fx.Bounds = { skip: 2, take: 1 }
```

```ts
import type { Fx } from "@typed/fx"
const bounds: Fx.Bounds = { skip: 0, take: 10 }
```
