{
  "id": "@typed/router/CurrentRoute#CurrentRoute",
  "canonicalId": "@typed/router#CurrentRoute",
  "symbol": {
    "id": "@typed/router/CurrentRoute#CurrentRoute",
    "packageName": "@typed/router",
    "moduleName": "CurrentRoute",
    "exportName": "CurrentRoute",
    "kind": "class",
    "signatures": [
      "export declare class CurrentRoute extends CurrentRoute_base {\n    static readonly Default: Layer.Layer<CurrentRoute, never, Navigation>;\n    static readonly extend: (route: Route.Any) => Layer.Layer<CurrentRoute, never, never>;\n}"
    ],
    "summary": "The ambient route context for the current routing boundary.",
    "sections": {
      "Why": "A stable ambient context prevents same-route parameter updates from replacing structural ownership.\nUse Navigation for the live URL; use CurrentRoute for the route tree that owns this handler.",
      "Ownership and lifetime": "The selected handler or layout Scope owns the provided service. `Default` creates the root from\n`Navigation.base`; `extend` shadows it for a nested boundary and retains the previous value as parent.",
      "Property: Default": "Provides the root mount route parsed from `Navigation.base`.",
      "Property: Default: Why": "Every router needs a structural root even before a matcher selects a child route.",
      "Property: Default: Ownership and lifetime": "The Layer borrows Navigation and provides CurrentRoute for its surrounding Layer Scope.",
      "Property: extend": "Provides a nested CurrentRoute whose parent is the ambient mount boundary.",
      "Property: extend: Why": "An independently owned child Matcher declares paths relative to this mount. The supplied\nRoute is the exact child mount, not an automatically joined relative segment; compose deeper\nprefixes with `Route.Join` before extending. Navigation remains shared with the surrounding app.",
      "Property: extend: Ownership and lifetime": "Layer acquisition reads the ambient context once. The returned child tree lives until that Layer Scope closes."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import * as Router from \"@typed/router\"\nimport * as Effect from \"effect/Effect\"\n\nconst mountedPath = Effect.map(Router.CurrentRoute, ({ route }) => route.path)"
      }
    ],
    "relations": [],
    "source": {
      "file": "packages/router/src/CurrentRoute.ts",
      "line": 84
    },
    "since": "1.0.0",
    "category": "Structural mounts"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/router/CurrentRoute#CurrentRoute",
    "packageName": "@typed/router",
    "packageVersion": "1.0.0-beta.13",
    "moduleName": "CurrentRoute",
    "consumerSpecifier": "@typed/router/CurrentRoute",
    "exportName": "CurrentRoute",
    "qualifiedName": "CurrentRoute",
    "declarationKey": "declaration:bdb60b3d511c2ad41c220af0",
    "family": "class",
    "signatures": [
      "export declare class CurrentRoute extends CurrentRoute_base {\n    static readonly Default: Layer.Layer<CurrentRoute, never, Navigation>;\n    static readonly extend: (route: Route.Any) => Layer.Layer<CurrentRoute, never, never>;\n}"
    ],
    "sourceSpans": [
      {
        "file": "packages/router/src/CurrentRoute.ts",
        "start": {
          "line": 84,
          "column": 1
        },
        "end": {
          "line": 131,
          "column": 2
        }
      },
      {
        "file": "packages/router/src/CurrentRoute.ts",
        "start": {
          "line": 103,
          "column": 3
        },
        "end": {
          "line": 103,
          "column": 75
        }
      },
      {
        "file": "packages/router/src/CurrentRoute.ts",
        "start": {
          "line": 120,
          "column": 3
        },
        "end": {
          "line": 130,
          "column": 7
        }
      }
    ],
    "aliases": [
      "@typed/router#CurrentRoute"
    ],
    "isAlias": false,
    "static": false
  },
  "declaration": {
    "declarationKey": "declaration:bdb60b3d511c2ad41c220af0",
    "name": "CurrentRoute",
    "family": "class",
    "facets": [
      {
        "family": "class",
        "syntaxKind": "ClassDeclaration",
        "signatures": [
          "export declare class CurrentRoute extends CurrentRoute_base {\n    static readonly Default: Layer.Layer<CurrentRoute, never, Navigation>;\n    static readonly extend: (route: Route.Any) => Layer.Layer<CurrentRoute, never, never>;\n}"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/CurrentRoute.ts",
            "start": {
              "line": 84,
              "column": 1
            },
            "end": {
              "line": 131,
              "column": 2
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertyDeclaration",
        "signatures": [
          "static readonly Default: Layer.Layer<CurrentRoute, never, Navigation>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/CurrentRoute.ts",
            "start": {
              "line": 103,
              "column": 3
            },
            "end": {
              "line": 103,
              "column": 75
            }
          }
        ],
        "static": true,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertyDeclaration",
        "signatures": [
          "static readonly extend: (route: Route.Any) => Layer.Layer<CurrentRoute, never, never>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/CurrentRoute.ts",
            "start": {
              "line": 120,
              "column": 3
            },
            "end": {
              "line": 130,
              "column": 7
            }
          }
        ],
        "static": true,
        "readonly": true,
        "optional": false
      }
    ],
    "signatures": [
      "export declare class CurrentRoute extends CurrentRoute_base {\n    static readonly Default: Layer.Layer<CurrentRoute, never, Navigation>;\n    static readonly extend: (route: Route.Any) => Layer.Layer<CurrentRoute, never, never>;\n}"
    ],
    "typeParameters": [],
    "summary": "The ambient route context for the current routing boundary.",
    "sections": {
      "Why": "A stable ambient context prevents same-route parameter updates from replacing structural ownership.\nUse Navigation for the live URL; use CurrentRoute for the route tree that owns this handler.",
      "Ownership and lifetime": "The selected handler or layout Scope owns the provided service. `Default` creates the root from\n`Navigation.base`; `extend` shadows it for a nested boundary and retains the previous value as parent.",
      "Property: Default": "Provides the root mount route parsed from `Navigation.base`.",
      "Property: Default: Why": "Every router needs a structural root even before a matcher selects a child route.",
      "Property: Default: Ownership and lifetime": "The Layer borrows Navigation and provides CurrentRoute for its surrounding Layer Scope.",
      "Property: extend": "Provides a nested CurrentRoute whose parent is the ambient mount boundary.",
      "Property: extend: Why": "An independently owned child Matcher declares paths relative to this mount. The supplied\nRoute is the exact child mount, not an automatically joined relative segment; compose deeper\nprefixes with `Route.Join` before extending. Navigation remains shared with the surrounding app.",
      "Property: extend: Ownership and lifetime": "Layer acquisition reads the ambient context once. The returned child tree lives until that Layer Scope closes."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import * as Router from \"@typed/router\"\nimport * as Effect from \"effect/Effect\"\n\nconst mountedPath = Effect.map(Router.CurrentRoute, ({ route }) => route.path)"
      }
    ],
    "sourceSpans": [
      {
        "file": "packages/router/src/CurrentRoute.ts",
        "start": {
          "line": 84,
          "column": 1
        },
        "end": {
          "line": 131,
          "column": 2
        }
      },
      {
        "file": "packages/router/src/CurrentRoute.ts",
        "start": {
          "line": 103,
          "column": 3
        },
        "end": {
          "line": 103,
          "column": 75
        }
      },
      {
        "file": "packages/router/src/CurrentRoute.ts",
        "start": {
          "line": 120,
          "column": 3
        },
        "end": {
          "line": 130,
          "column": 7
        }
      }
    ],
    "since": "1.0.0",
    "category": "Structural mounts"
  }
}
