{
  "id": "@typed/fx#Fx.Fx.Variance",
  "canonicalId": "@typed/fx/Fx#Fx.Variance",
  "symbol": {
    "id": "@typed/fx#Fx.Fx.Variance",
    "packageName": "@typed/fx",
    "moduleName": ".",
    "exportName": "Fx.Fx.Variance",
    "kind": "interface",
    "signatures": [
      "interface Variance<A, E, R> {\n    readonly _A: Types.Covariant<A>;\n    readonly _E: Types.Covariant<E>;\n    readonly _R: Types.Covariant<R>;\n}"
    ],
    "summary": "Describes how an `Fx` varies in its value, error, and service channels.",
    "sections": {
      "Why": "The phantom fields preserve `Fx<A, E, R>` relationships through TypeScript's\nstructural type system and power channel extraction without runtime sampling.",
      "Ownership and lifetime": "Variance markers are type-level metadata and retain no values or resources.",
      "Property: _A": "Covariant marker for emitted values.",
      "Property: _A: Why": "Preserves the `A` relationship without retaining an emitted value.",
      "Property: _A: Ownership and lifetime": "This phantom field starts no work and owns no resource.",
      "Property: _E": "Covariant marker for typed failures.",
      "Property: _E: Why": "Preserves the `E` relationship without manufacturing a failure.",
      "Property: _E: Ownership and lifetime": "This phantom field starts no work and owns no resource.",
      "Property: _R": "Covariant marker for required services.",
      "Property: _R: Why": "Preserves the `R` relationship without reading an Effect context.",
      "Property: _R: Ownership and lifetime": "This phantom field starts no work and owns no resource."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import type { Fx } from \"@typed/fx/Fx\"\n\ntype NumberFxVariance = Fx.Variance<number, never, never>"
      }
    ],
    "relations": [],
    "source": {
      "file": "packages/fx/src/Fx/Fx.ts",
      "line": 156
    },
    "since": "1.0.0",
    "category": "models"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/fx#Fx.Fx.Variance",
    "packageName": "@typed/fx",
    "packageVersion": "2.0.0-beta.7",
    "moduleName": ".",
    "consumerSpecifier": "@typed/fx",
    "exportName": "Fx",
    "qualifiedName": "Fx.Fx.Variance",
    "declarationKey": "declaration:2411707febf8c3d2e48f54cc",
    "family": "interface",
    "signatures": [
      "interface Variance<A, E, R> {\n    readonly _A: Types.Covariant<A>;\n    readonly _E: Types.Covariant<E>;\n    readonly _R: Types.Covariant<R>;\n}"
    ],
    "sourceSpans": [
      {
        "file": "packages/fx/src/Fx/Fx.ts",
        "start": {
          "line": 156,
          "column": 3
        },
        "end": {
          "line": 205,
          "column": 4
        }
      },
      {
        "file": "packages/fx/src/Fx/Fx.ts",
        "start": {
          "line": 172,
          "column": 5
        },
        "end": {
          "line": 172,
          "column": 37
        }
      },
      {
        "file": "packages/fx/src/Fx/Fx.ts",
        "start": {
          "line": 188,
          "column": 5
        },
        "end": {
          "line": 188,
          "column": 37
        }
      },
      {
        "file": "packages/fx/src/Fx/Fx.ts",
        "start": {
          "line": 204,
          "column": 5
        },
        "end": {
          "line": 204,
          "column": 37
        }
      }
    ],
    "aliases": [
      "@typed/fx/Fx#Fx.Variance"
    ],
    "isAlias": true,
    "parentId": "@typed/fx#Fx.Fx",
    "static": false,
    "importedFrom": "declaration:2411707febf8c3d2e48f54cc"
  },
  "declaration": {
    "declarationKey": "declaration:2411707febf8c3d2e48f54cc",
    "name": "Variance",
    "family": "interface",
    "facets": [
      {
        "family": "interface",
        "syntaxKind": "InterfaceDeclaration",
        "signatures": [
          "interface Variance<A, E, R> {\n    readonly _A: Types.Covariant<A>;\n    readonly _E: Types.Covariant<E>;\n    readonly _R: Types.Covariant<R>;\n}"
        ],
        "typeParameters": [
          "A",
          "E",
          "R"
        ],
        "sourceSpans": [
          {
            "file": "packages/fx/src/Fx/Fx.ts",
            "start": {
              "line": 156,
              "column": 3
            },
            "end": {
              "line": 205,
              "column": 4
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly _A: Types.Covariant<A>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/fx/src/Fx/Fx.ts",
            "start": {
              "line": 172,
              "column": 5
            },
            "end": {
              "line": 172,
              "column": 37
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly _E: Types.Covariant<E>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/fx/src/Fx/Fx.ts",
            "start": {
              "line": 188,
              "column": 5
            },
            "end": {
              "line": 188,
              "column": 37
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly _R: Types.Covariant<R>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/fx/src/Fx/Fx.ts",
            "start": {
              "line": 204,
              "column": 5
            },
            "end": {
              "line": 204,
              "column": 37
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      }
    ],
    "signatures": [
      "interface Variance<A, E, R> {\n    readonly _A: Types.Covariant<A>;\n    readonly _E: Types.Covariant<E>;\n    readonly _R: Types.Covariant<R>;\n}"
    ],
    "typeParameters": [
      "A",
      "E",
      "R"
    ],
    "summary": "Describes how an `Fx` varies in its value, error, and service channels.",
    "sections": {
      "Why": "The phantom fields preserve `Fx<A, E, R>` relationships through TypeScript's\nstructural type system and power channel extraction without runtime sampling.",
      "Ownership and lifetime": "Variance markers are type-level metadata and retain no values or resources.",
      "Property: _A": "Covariant marker for emitted values.",
      "Property: _A: Why": "Preserves the `A` relationship without retaining an emitted value.",
      "Property: _A: Ownership and lifetime": "This phantom field starts no work and owns no resource.",
      "Property: _E": "Covariant marker for typed failures.",
      "Property: _E: Why": "Preserves the `E` relationship without manufacturing a failure.",
      "Property: _E: Ownership and lifetime": "This phantom field starts no work and owns no resource.",
      "Property: _R": "Covariant marker for required services.",
      "Property: _R: Why": "Preserves the `R` relationship without reading an Effect context.",
      "Property: _R: Ownership and lifetime": "This phantom field starts no work and owns no resource."
    },
    "examples": [
      {
        "language": "ts",
        "code": "import type { Fx } from \"@typed/fx/Fx\"\n\ntype NumberFxVariance = Fx.Variance<number, never, never>"
      }
    ],
    "sourceSpans": [
      {
        "file": "packages/fx/src/Fx/Fx.ts",
        "start": {
          "line": 156,
          "column": 3
        },
        "end": {
          "line": 205,
          "column": 4
        }
      },
      {
        "file": "packages/fx/src/Fx/Fx.ts",
        "start": {
          "line": 172,
          "column": 5
        },
        "end": {
          "line": 172,
          "column": 37
        }
      },
      {
        "file": "packages/fx/src/Fx/Fx.ts",
        "start": {
          "line": 188,
          "column": 5
        },
        "end": {
          "line": 188,
          "column": 37
        }
      },
      {
        "file": "packages/fx/src/Fx/Fx.ts",
        "start": {
          "line": 204,
          "column": 5
        },
        "end": {
          "line": 204,
          "column": 37
        }
      }
    ],
    "since": "1.0.0",
    "category": "models"
  }
}
