# ProposedDestination

Describes a destination before the navigation backend assigns stable entry identity.

## Signatures

```ts
export declare const ProposedDestination: Schema.Struct<{
    readonly url: Schema.URLFromString;
    readonly state: Schema.Unknown;
    readonly sameDocument: Schema.Boolean;
    readonly key: Schema.optional<Schema.String>;
}>;
```

```ts
export type ProposedDestination = typeof ProposedDestination.Type;
```

## Why

Separating a requested destination from a committed one makes redirects, guards, and backend
commits explicit instead of pretending every requested URL is already in history.

## Ownership and lifetime

This immutable schema acquires no resources. Values live for as long as the transition or caller
retaining them; a navigation provider owns conversion to a committed {@link Destination}.

## Examples

```ts
import { ProposedDestination } from "@typed/navigation/model"
import * as Schema from "effect/Schema"

const decode = Schema.decodeUnknownSync(ProposedDestination)
const destination = decode({ url: "/settings", state: {}, sameDocument: true })
```
