"""Base class of corresponding backends."""

# AUTOGENERATED! DO NOT EDIT! File to edit: ../../../src/platform/backends/base_backend.ipynb.

# %% auto #0
__all__ = ['BaseBackend']

# %% ../../../src/platform/backends/base_backend.ipynb #e8dd5677-66ab-40f7-93d2-ac88b5dfc4e0
from ...imports import *

# %% ../../../src/platform/backends/base_backend.ipynb #009a348f-06d0-48ed-9e99-ca2d7dbe0cbd
class BaseBackend(abc.ABC):
    """Backends implement at least these functions."""

    BASIC_BACKEND_TYPE = type[Any]
    
    @abc.abstractmethod
    def backend_to_genqc(self, *args, **kwargs):
        raise NotImplementedError()

    @abc.abstractmethod
    def genqc_to_backend(self, *args, **kwargs):
        raise NotImplementedError()

    @abc.abstractmethod
    def get_unitary(self, *args, **kwargs):
        raise NotImplementedError()

    @abc.abstractmethod
    def draw(self, *args, **kwargs) -> None:
        raise NotImplementedError()
