import _pulsar
import abc
from abc import abstractmethod

class Schema(metaclass=abc.ABCMeta):
    def __init__(self, record_cls, schema_type, schema_definition, schema_name) -> None: ...
    @abstractmethod
    def encode(self, obj): ...
    @abstractmethod
    def decode(self, data): ...
    def decode_message(self, msg: _pulsar.Message): ...
    def schema_info(self): ...
    def attach_client(self, client: _pulsar.Client): ...

class BytesSchema(Schema):
    def __init__(self) -> None: ...
    def encode(self, data): ...
    def decode(self, data): ...

class StringSchema(Schema):
    def __init__(self) -> None: ...
    def encode(self, obj): ...
    def decode(self, data): ...

def remove_reserved_key(data) -> None: ...

class JsonSchema(Schema):
    def __init__(self, record_cls) -> None: ...
    def encode(self, obj): ...
    def decode(self, data): ...
