diff --git a/src/graphql_relay/connection/connectiontypes.py b/src/graphql_relay/connection/connectiontypes.py
index <HASH>..<HASH> 100644
--- a/src/graphql_relay/connection/connectiontypes.py
+++ b/src/graphql_relay/connection/connectiontypes.py
@@ -20,10 +20,10 @@ class PageInfoType(Protocol):
     def endCursor(self) -> Optional[ConnectionCursor]:
         ...
 
-    def hasPreviousPage(self) -> Optional[bool]:
+    def hasPreviousPage(self) -> bool:
         ...
 
-    def hasNextPage(self) -> Optional[bool]:
+    def hasNextPage(self) -> bool:
         ...
 
 
@@ -33,8 +33,8 @@ class PageInfoConstructor(Protocol):
         *,
         startCursor: Optional[ConnectionCursor],
         endCursor: Optional[ConnectionCursor],
-        hasPreviousPage: Optional[bool],
-        hasNextPage: Optional[bool],
+        hasPreviousPage: bool,
+        hasNextPage: bool,
     ) -> PageInfoType:
         ...
 
@@ -44,8 +44,8 @@ class PageInfo(NamedTuple):
 
     startCursor: Optional[ConnectionCursor]
     endCursor: Optional[ConnectionCursor]
-    hasPreviousPage: Optional[bool]
-    hasNextPage: Optional[bool]
+    hasPreviousPage: bool
+    hasNextPage: bool
 
 
 class EdgeType(Protocol):
hasPrevious/NextPage should not be optional (#<I>)

Replicates graphql/graphql-relay-js@<I>a<I>ac<I>c3b<I>a<I>ec<I>cc<I>dee<I>e5bb5