{
  "id": "@typed/router/Path#QueryInputParameter",
  "canonicalId": "@typed/router/Path#QueryInputParameter",
  "symbol": {
    "id": "@typed/router/Path#QueryInputParameter",
    "packageName": "@typed/router",
    "moduleName": "Path",
    "exportName": "QueryInputParameter",
    "kind": "type",
    "signatures": [
      "export type QueryInputParameter = {\n    readonly inputName: string;\n    readonly outputName?: string;\n    readonly ast: PathAst.Literal | PathAst.Parameter | PathAst.Wildcard;\n};"
    ],
    "summary": "Describes one query key expected by matcher input decoding.",
    "sections": {
      "Why": "Matcher registration can distinguish scalar, optional, literal, and repeated query policies.",
      "Ownership and lifetime": "`QueryInputParameter` is a readonly structural contract. The concrete arrays, AST nodes, names, and Schemas remain owned by the caller that constructs them.",
      "Property: ast": "Value grammar used to normalize the raw query input.",
      "Property: ast: Why": "Literal, scalar, optional, and repeated-value policies derive from the same Path AST.",
      "Property: ast: Ownership and lifetime": "The analysis record retains this child AST by reference; request-specific strings are not stored\non the AST.",
      "Property: inputName": "URLSearchParams key read from matcher input.",
      "Property: inputName: Why": "The external query key can differ from the decoded output field name.",
      "Property: inputName: Ownership and lifetime": "This immutable string is retained in the returned analysis record and reused for each match.",
      "Property: outputName": "Decoded record key, absent when the AST represents a literal constraint.",
      "Property: outputName: Why": "Literal query declarations participate in matching without adding handler parameters.",
      "Property: outputName: Ownership and lifetime": "This optional immutable string is retained with the analysis record and creates no decoded value\nuntil a candidate is evaluated."
    },
    "examples": [],
    "relations": [],
    "source": {
      "file": "packages/router/src/Path.ts",
      "line": 1094
    },
    "since": "1.0.0",
    "category": "Query decoding"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/router/Path#QueryInputParameter",
    "packageName": "@typed/router",
    "packageVersion": "1.0.0-beta.13",
    "moduleName": "Path",
    "consumerSpecifier": "@typed/router/Path",
    "exportName": "QueryInputParameter",
    "qualifiedName": "QueryInputParameter",
    "declarationKey": "declaration:850d83bfb1e83766dc9b46f7",
    "family": "type-alias",
    "signatures": [
      "export type QueryInputParameter = {\n    readonly inputName: string;\n    readonly outputName?: string;\n    readonly ast: PathAst.Literal | PathAst.Parameter | PathAst.Wildcard;\n};"
    ],
    "sourceSpans": [
      {
        "file": "packages/router/src/Path.ts",
        "start": {
          "line": 1094,
          "column": 1
        },
        "end": {
          "line": 1139,
          "column": 3
        }
      },
      {
        "file": "packages/router/src/Path.ts",
        "start": {
          "line": 1138,
          "column": 3
        },
        "end": {
          "line": 1138,
          "column": 72
        }
      },
      {
        "file": "packages/router/src/Path.ts",
        "start": {
          "line": 1108,
          "column": 3
        },
        "end": {
          "line": 1108,
          "column": 30
        }
      },
      {
        "file": "packages/router/src/Path.ts",
        "start": {
          "line": 1123,
          "column": 3
        },
        "end": {
          "line": 1123,
          "column": 32
        }
      }
    ],
    "aliases": [],
    "isAlias": false,
    "static": false
  },
  "declaration": {
    "declarationKey": "declaration:850d83bfb1e83766dc9b46f7",
    "name": "QueryInputParameter",
    "family": "type-alias",
    "facets": [
      {
        "family": "type-alias",
        "syntaxKind": "TypeAliasDeclaration",
        "signatures": [
          "export type QueryInputParameter = {\n    readonly inputName: string;\n    readonly outputName?: string;\n    readonly ast: PathAst.Literal | PathAst.Parameter | PathAst.Wildcard;\n};"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/Path.ts",
            "start": {
              "line": 1094,
              "column": 1
            },
            "end": {
              "line": 1139,
              "column": 3
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly ast: PathAst.Literal | PathAst.Parameter | PathAst.Wildcard;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/Path.ts",
            "start": {
              "line": 1138,
              "column": 3
            },
            "end": {
              "line": 1138,
              "column": 72
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly inputName: string;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/Path.ts",
            "start": {
              "line": 1108,
              "column": 3
            },
            "end": {
              "line": 1108,
              "column": 30
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly outputName?: string;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/router/src/Path.ts",
            "start": {
              "line": 1123,
              "column": 3
            },
            "end": {
              "line": 1123,
              "column": 32
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": true
      }
    ],
    "signatures": [
      "export type QueryInputParameter = {\n    readonly inputName: string;\n    readonly outputName?: string;\n    readonly ast: PathAst.Literal | PathAst.Parameter | PathAst.Wildcard;\n};"
    ],
    "typeParameters": [],
    "summary": "Describes one query key expected by matcher input decoding.",
    "sections": {
      "Why": "Matcher registration can distinguish scalar, optional, literal, and repeated query policies.",
      "Ownership and lifetime": "`QueryInputParameter` is a readonly structural contract. The concrete arrays, AST nodes, names, and Schemas remain owned by the caller that constructs them.",
      "Property: ast": "Value grammar used to normalize the raw query input.",
      "Property: ast: Why": "Literal, scalar, optional, and repeated-value policies derive from the same Path AST.",
      "Property: ast: Ownership and lifetime": "The analysis record retains this child AST by reference; request-specific strings are not stored\non the AST.",
      "Property: inputName": "URLSearchParams key read from matcher input.",
      "Property: inputName: Why": "The external query key can differ from the decoded output field name.",
      "Property: inputName: Ownership and lifetime": "This immutable string is retained in the returned analysis record and reused for each match.",
      "Property: outputName": "Decoded record key, absent when the AST represents a literal constraint.",
      "Property: outputName: Why": "Literal query declarations participate in matching without adding handler parameters.",
      "Property: outputName: Ownership and lifetime": "This optional immutable string is retained with the analysis record and creates no decoded value\nuntil a candidate is evaluated."
    },
    "examples": [],
    "sourceSpans": [
      {
        "file": "packages/router/src/Path.ts",
        "start": {
          "line": 1094,
          "column": 1
        },
        "end": {
          "line": 1139,
          "column": 3
        }
      },
      {
        "file": "packages/router/src/Path.ts",
        "start": {
          "line": 1138,
          "column": 3
        },
        "end": {
          "line": 1138,
          "column": 72
        }
      },
      {
        "file": "packages/router/src/Path.ts",
        "start": {
          "line": 1108,
          "column": 3
        },
        "end": {
          "line": 1108,
          "column": 30
        }
      },
      {
        "file": "packages/router/src/Path.ts",
        "start": {
          "line": 1123,
          "column": 3
        },
        "end": {
          "line": 1123,
          "column": 32
        }
      }
    ],
    "since": "1.0.0",
    "category": "Query decoding"
  }
}
