Protocol union type where the second type is to be defined in the future

I’d like to define a union type of Protocols where the members of this union are to be determined in the future.

Here’s an example

@runtime_checkable
class Parser(Protocol):
  ...

ParserProtocols = Parser | Protocol

def parse(parser: ParserProtocols):
  if isinstance(parser, Parser)
    ...
  else:
    raise NotImplementedError(...)

I expect to define other parser protocols in the future, but I want consumers of this type to be aware that a future parser implementing a different protocol are not interoperable (e.g., method of same name have different signature).

Is Parser | Protocol a good union type to signify this? Is there a better way?