{
  "id": "@typed/router#RouteTransition",
  "canonicalId": "@typed/router/RouteExecutor#RouteTransition",
  "symbol": {
    "id": "@typed/router#RouteTransition",
    "packageName": "@typed/router",
    "moduleName": ".",
    "exportName": "RouteTransition",
    "kind": "interface",
    "signatures": [
      "export interface RouteTransition {\n    readonly path: string;\n    readonly input: unknown;\n    readonly candidates: ReadonlyArray<CompiledEntry>;\n    readonly layers?: ReadonlyArray<AnyLayer>;\n}"
    ],
    "summary": "The path, raw input, candidate list, and ambient Layers for one route update.",
    "sections": {
      "Why": "Candidate selection and parameter decoding can be executed independently from path lookup.",
      "Ownership and lifetime": "Callers construct this immutable transition value for one `transition` call. The executor reads it\nduring that call; any selected entry, decoded parameters, Layers, layouts, or catch handlers are then\nretained by their dedicated scoped managers rather than by this record itself.",
      "Property: candidates": "The ordered executable candidates selected by path lookup.",
      "Property: candidates: Why": "These candidates already share the matcher path selected by path lookup. Their schemas and guards\nfall through in registration order without rerunning path-shape selection.",
      "Property: candidates: Ownership and lifetime": "The executor borrows this array for the transition. A selected entry identity remains current until\nanother route replaces it, but the executor does not copy or own the candidate array.",
      "Property: input": "The raw path and query parameter record decoded by each candidate.",
      "Property: input: Why": "Each candidate applies its own Effect Schema before a handler observes values.",
      "Property: input: Ownership and lifetime": "Candidate schemas inspect this value during the transition. Only the decoded parameters for the\nselected candidate are placed in the active `RefSubject`; the raw input is not retained.",
      "Property: layers": "Additional Effect Layers applied to this transition.",
      "Property: layers: Why": "Ambient route dependencies can participate in the same prepare, commit, rollback, and release protocol.",
      "Property: layers: Ownership and lifetime": "The Layer manager compares these values by identity. Selected Layer identities and their child Scopes\nremain active until a later transition removes them or the executor's root Scope closes.",
      "Property: path": "The current pathname and search string being transitioned.",
      "Property: path: Why": "Typed errors and candidate selection retain the exact location that produced them.",
      "Property: path: Ownership and lifetime": "The executor reads this string while selecting candidates and reporting failures. It does not retain\nthe string after the transition completes."
    },
    "examples": [],
    "relations": [],
    "source": {
      "file": "packages/router/src/RouteExecutor.ts",
      "line": 33
    },
    "since": "1.0.0",
    "category": "Candidate execution"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/router#RouteTransition",
    "packageName": "@typed/router",
    "packageVersion": "1.0.0-beta.13",
    "moduleName": ".",
    "consumerSpecifier": "@typed/router",
    "exportName": "RouteTransition",
    "qualifiedName": "RouteTransition",
    "declarationKey": "declaration:0144bcdcde44c229aac4189a",
    "family": "interface",
    "signatures": [
      "export interface RouteTransition {\n    readonly path: string;\n    readonly input: unknown;\n    readonly candidates: ReadonlyArray<CompiledEntry>;\n    readonly layers?: ReadonlyArray<AnyLayer>;\n}"
    ],
    "sourceSpans": [
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 33,
          "column": 1
        },
        "end": {
          "line": 95,
          "column": 2
        }
      },
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 79,
          "column": 3
        },
        "end": {
          "line": 79,
          "column": 53
        }
      },
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 63,
          "column": 3
        },
        "end": {
          "line": 63,
          "column": 27
        }
      },
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 94,
          "column": 3
        },
        "end": {
          "line": 94,
          "column": 45
        }
      },
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 48,
          "column": 3
        },
        "end": {
          "line": 48,
          "column": 25
        }
      }
    ],
    "aliases": [
      "@typed/router/RouteExecutor#RouteTransition"
    ],
    "isAlias": true,
    "static": false,
    "importedFrom": "declaration:0144bcdcde44c229aac4189a"
  },
  "declaration": {
    "declarationKey": "declaration:0144bcdcde44c229aac4189a",
    "name": "RouteTransition",
    "family": "interface",
    "facets": [
      {
        "family": "interface",
        "syntaxKind": "InterfaceDeclaration",
        "signatures": [
          "export interface RouteTransition {\n    readonly path: string;\n    readonly input: unknown;\n    readonly candidates: ReadonlyArray<CompiledEntry>;\n    readonly layers?: ReadonlyArray<AnyLayer>;\n}"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/RouteExecutor.ts",
            "start": {
              "line": 33,
              "column": 1
            },
            "end": {
              "line": 95,
              "column": 2
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly candidates: ReadonlyArray<CompiledEntry>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/RouteExecutor.ts",
            "start": {
              "line": 79,
              "column": 3
            },
            "end": {
              "line": 79,
              "column": 53
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly input: unknown;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/RouteExecutor.ts",
            "start": {
              "line": 63,
              "column": 3
            },
            "end": {
              "line": 63,
              "column": 27
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly layers?: ReadonlyArray<AnyLayer>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/RouteExecutor.ts",
            "start": {
              "line": 94,
              "column": 3
            },
            "end": {
              "line": 94,
              "column": 45
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": true
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly path: string;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/RouteExecutor.ts",
            "start": {
              "line": 48,
              "column": 3
            },
            "end": {
              "line": 48,
              "column": 25
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      }
    ],
    "signatures": [
      "export interface RouteTransition {\n    readonly path: string;\n    readonly input: unknown;\n    readonly candidates: ReadonlyArray<CompiledEntry>;\n    readonly layers?: ReadonlyArray<AnyLayer>;\n}"
    ],
    "typeParameters": [],
    "summary": "The path, raw input, candidate list, and ambient Layers for one route update.",
    "sections": {
      "Why": "Candidate selection and parameter decoding can be executed independently from path lookup.",
      "Ownership and lifetime": "Callers construct this immutable transition value for one `transition` call. The executor reads it\nduring that call; any selected entry, decoded parameters, Layers, layouts, or catch handlers are then\nretained by their dedicated scoped managers rather than by this record itself.",
      "Property: candidates": "The ordered executable candidates selected by path lookup.",
      "Property: candidates: Why": "These candidates already share the matcher path selected by path lookup. Their schemas and guards\nfall through in registration order without rerunning path-shape selection.",
      "Property: candidates: Ownership and lifetime": "The executor borrows this array for the transition. A selected entry identity remains current until\nanother route replaces it, but the executor does not copy or own the candidate array.",
      "Property: input": "The raw path and query parameter record decoded by each candidate.",
      "Property: input: Why": "Each candidate applies its own Effect Schema before a handler observes values.",
      "Property: input: Ownership and lifetime": "Candidate schemas inspect this value during the transition. Only the decoded parameters for the\nselected candidate are placed in the active `RefSubject`; the raw input is not retained.",
      "Property: layers": "Additional Effect Layers applied to this transition.",
      "Property: layers: Why": "Ambient route dependencies can participate in the same prepare, commit, rollback, and release protocol.",
      "Property: layers: Ownership and lifetime": "The Layer manager compares these values by identity. Selected Layer identities and their child Scopes\nremain active until a later transition removes them or the executor's root Scope closes.",
      "Property: path": "The current pathname and search string being transitioned.",
      "Property: path: Why": "Typed errors and candidate selection retain the exact location that produced them.",
      "Property: path: Ownership and lifetime": "The executor reads this string while selecting candidates and reporting failures. It does not retain\nthe string after the transition completes."
    },
    "examples": [],
    "sourceSpans": [
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 33,
          "column": 1
        },
        "end": {
          "line": 95,
          "column": 2
        }
      },
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 79,
          "column": 3
        },
        "end": {
          "line": 79,
          "column": 53
        }
      },
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 63,
          "column": 3
        },
        "end": {
          "line": 63,
          "column": 27
        }
      },
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 94,
          "column": 3
        },
        "end": {
          "line": 94,
          "column": 45
        }
      },
      {
        "file": "packages/router/src/RouteExecutor.ts",
        "start": {
          "line": 48,
          "column": 3
        },
        "end": {
          "line": 48,
          "column": 25
        }
      }
    ],
    "since": "1.0.0",
    "category": "Candidate execution"
  }
}
