{
  "id": "@typed/navigation/Blocking#Blocking",
  "canonicalId": "@typed/navigation#Blocking",
  "symbol": {
    "id": "@typed/navigation/Blocking#Blocking",
    "packageName": "@typed/navigation",
    "moduleName": "Blocking",
    "exportName": "Blocking",
    "kind": "interface",
    "signatures": [
      "export interface Blocking extends BeforeNavigationEvent {\n    readonly cancel: Effect.Effect<Destination>;\n    readonly confirm: Effect.Effect<Destination>;\n    readonly redirect: (urlOrPath: string | URL, options?: NavigationNavigateOptions) => Effect.Effect<Destination>;\n}"
    ],
    "summary": "Presents one blocked transition and the three ways its owner can settle it.",
    "sections": {
      "Why": "Confirm, cancel, and redirect are explicit Effects so a UI cannot accidentally settle navigation\nmerely by reading state. Only the first settlement of the active block changes it.",
      "Ownership and lifetime": "The Scope that registered the blocker owns this value's deferred settlement. `confirm` resumes the\noriginal transition, `cancel` keeps the current destination, and `redirect` starts a replacement.",
      "Property: cancel": "Cancels the outstanding blocked transition.",
      "Property: cancel: Why": "Cancellation explicitly keeps the current destination and releases the deferred transition.",
      "Property: cancel: Ownership and lifetime": "Running `cancel` completes the owned Deferred with the current Destination and clears only this\nblocker instance's outstanding transition.",
      "Property: confirm": "Confirms and resumes the outstanding blocked transition.",
      "Property: confirm: Why": "Settlement is an Effect, so merely observing blocking state cannot accidentally navigate.",
      "Property: confirm: Ownership and lifetime": "Running `confirm` completes the owned Deferred with the original navigation Effect. The blocker\nScope keeps ownership until that Effect settles or the Scope closes.",
      "Property: redirect": "Replaces the outstanding blocked transition with another destination.",
      "Property: redirect: Why": "Blocked flows can choose a safe destination without first committing the rejected one.",
      "Property: redirect: Ownership and lifetime": "Running `redirect` completes the owned Deferred with a replacement navigation Effect. The\noriginal proposed transition is never committed by this settlement."
    },
    "examples": [],
    "relations": [],
    "source": {
      "file": "packages/navigation/src/Blocking.ts",
      "line": 65
    },
    "since": "1.0.0",
    "category": "Blocking decisions"
  },
  "exposure": {
    "recordKind": "declaration",
    "id": "@typed/navigation/Blocking#Blocking",
    "packageName": "@typed/navigation",
    "packageVersion": "1.0.0-beta.7",
    "moduleName": "Blocking",
    "consumerSpecifier": "@typed/navigation/Blocking",
    "exportName": "Blocking",
    "qualifiedName": "Blocking",
    "declarationKey": "declaration:36c6093339b598f5816f436b",
    "family": "interface",
    "signatures": [
      "export interface Blocking extends BeforeNavigationEvent {\n    readonly cancel: Effect.Effect<Destination>;\n    readonly confirm: Effect.Effect<Destination>;\n    readonly redirect: (urlOrPath: string | URL, options?: NavigationNavigateOptions) => Effect.Effect<Destination>;\n}"
    ],
    "sourceSpans": [
      {
        "file": "packages/navigation/src/Blocking.ts",
        "start": {
          "line": 65,
          "column": 1
        },
        "end": {
          "line": 114,
          "column": 2
        }
      },
      {
        "file": "packages/navigation/src/Blocking.ts",
        "start": {
          "line": 80,
          "column": 3
        },
        "end": {
          "line": 80,
          "column": 47
        }
      },
      {
        "file": "packages/navigation/src/Blocking.ts",
        "start": {
          "line": 95,
          "column": 3
        },
        "end": {
          "line": 95,
          "column": 48
        }
      },
      {
        "file": "packages/navigation/src/Blocking.ts",
        "start": {
          "line": 110,
          "column": 3
        },
        "end": {
          "line": 113,
          "column": 35
        }
      }
    ],
    "aliases": [
      "@typed/navigation#Blocking"
    ],
    "isAlias": false,
    "static": false
  },
  "declaration": {
    "declarationKey": "declaration:36c6093339b598f5816f436b",
    "name": "Blocking",
    "family": "interface",
    "facets": [
      {
        "family": "interface",
        "syntaxKind": "InterfaceDeclaration",
        "signatures": [
          "export interface Blocking extends BeforeNavigationEvent {\n    readonly cancel: Effect.Effect<Destination>;\n    readonly confirm: Effect.Effect<Destination>;\n    readonly redirect: (urlOrPath: string | URL, options?: NavigationNavigateOptions) => Effect.Effect<Destination>;\n}"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/navigation/src/Blocking.ts",
            "start": {
              "line": 65,
              "column": 1
            },
            "end": {
              "line": 114,
              "column": 2
            }
          }
        ],
        "static": false,
        "readonly": false,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly cancel: Effect.Effect<Destination>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/navigation/src/Blocking.ts",
            "start": {
              "line": 80,
              "column": 3
            },
            "end": {
              "line": 80,
              "column": 47
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly confirm: Effect.Effect<Destination>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/navigation/src/Blocking.ts",
            "start": {
              "line": 95,
              "column": 3
            },
            "end": {
              "line": 95,
              "column": 48
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      },
      {
        "family": "property",
        "syntaxKind": "PropertySignature",
        "signatures": [
          "readonly redirect: (urlOrPath: string | URL, options?: NavigationNavigateOptions) => Effect.Effect<Destination>;"
        ],
        "typeParameters": [],
        "sourceSpans": [
          {
            "file": "packages/navigation/src/Blocking.ts",
            "start": {
              "line": 110,
              "column": 3
            },
            "end": {
              "line": 113,
              "column": 35
            }
          }
        ],
        "static": false,
        "readonly": true,
        "optional": false
      }
    ],
    "signatures": [
      "export interface Blocking extends BeforeNavigationEvent {\n    readonly cancel: Effect.Effect<Destination>;\n    readonly confirm: Effect.Effect<Destination>;\n    readonly redirect: (urlOrPath: string | URL, options?: NavigationNavigateOptions) => Effect.Effect<Destination>;\n}"
    ],
    "typeParameters": [],
    "summary": "Presents one blocked transition and the three ways its owner can settle it.",
    "sections": {
      "Why": "Confirm, cancel, and redirect are explicit Effects so a UI cannot accidentally settle navigation\nmerely by reading state. Only the first settlement of the active block changes it.",
      "Ownership and lifetime": "The Scope that registered the blocker owns this value's deferred settlement. `confirm` resumes the\noriginal transition, `cancel` keeps the current destination, and `redirect` starts a replacement.",
      "Property: cancel": "Cancels the outstanding blocked transition.",
      "Property: cancel: Why": "Cancellation explicitly keeps the current destination and releases the deferred transition.",
      "Property: cancel: Ownership and lifetime": "Running `cancel` completes the owned Deferred with the current Destination and clears only this\nblocker instance's outstanding transition.",
      "Property: confirm": "Confirms and resumes the outstanding blocked transition.",
      "Property: confirm: Why": "Settlement is an Effect, so merely observing blocking state cannot accidentally navigate.",
      "Property: confirm: Ownership and lifetime": "Running `confirm` completes the owned Deferred with the original navigation Effect. The blocker\nScope keeps ownership until that Effect settles or the Scope closes.",
      "Property: redirect": "Replaces the outstanding blocked transition with another destination.",
      "Property: redirect: Why": "Blocked flows can choose a safe destination without first committing the rejected one.",
      "Property: redirect: Ownership and lifetime": "Running `redirect` completes the owned Deferred with a replacement navigation Effect. The\noriginal proposed transition is never committed by this settlement."
    },
    "examples": [],
    "sourceSpans": [
      {
        "file": "packages/navigation/src/Blocking.ts",
        "start": {
          "line": 65,
          "column": 1
        },
        "end": {
          "line": 114,
          "column": 2
        }
      },
      {
        "file": "packages/navigation/src/Blocking.ts",
        "start": {
          "line": 80,
          "column": 3
        },
        "end": {
          "line": 80,
          "column": 47
        }
      },
      {
        "file": "packages/navigation/src/Blocking.ts",
        "start": {
          "line": 95,
          "column": 3
        },
        "end": {
          "line": 95,
          "column": 48
        }
      },
      {
        "file": "packages/navigation/src/Blocking.ts",
        "start": {
          "line": 110,
          "column": 3
        },
        "end": {
          "line": 113,
          "column": 35
        }
      }
    ],
    "since": "1.0.0",
    "category": "Blocking decisions"
  }
}
