from typing import Any

from .base import MySQLCompiler as MySQLCompiler
from .base import MySQLDialect as MySQLDialect
from .base import MySQLExecutionContext as MySQLExecutionContext
from .base import MySQLIdentifierPreparer as MySQLIdentifierPreparer
from ... import sql as sql
from ... import util as util

mariadb_cpy_minimum_version: Any

class MySQLExecutionContext_mariadbconnector(MySQLExecutionContext):
    def create_server_side_cursor(self): ...
    def create_default_cursor(self): ...

class MySQLCompiler_mariadbconnector(MySQLCompiler): ...
class MySQLIdentifierPreparer_mariadbconnector(MySQLIdentifierPreparer): ...

class MySQLDialect_mariadbconnector(MySQLDialect):
    driver: str = ...
    supports_unicode_statements: bool = ...
    encoding: str = ...
    convert_unicode: bool = ...
    supports_sane_rowcount: bool = ...
    supports_sane_multi_rowcount: bool = ...
    supports_native_decimal: bool = ...
    default_paramstyle: str = ...
    execution_ctx_cls: Any = ...
    statement_compiler: Any = ...
    preparer: Any = ...
    supports_server_side_cursors: bool = ...
    paramstyle: str = ...
    def __init__(self, **kwargs: Any) -> None: ...
    @classmethod
    def dbapi(cls): ...
    def is_disconnect(self, e: Any, connection: Any, cursor: Any): ...
    def create_connect_args(self, url: Any): ...
    def do_begin_twophase(self, connection: Any, xid: Any) -> None: ...
    def do_prepare_twophase(self, connection: Any, xid: Any) -> None: ...
    def do_rollback_twophase(
        self,
        connection: Any,
        xid: Any,
        is_prepared: bool = ...,
        recover: bool = ...,
    ) -> None: ...
    def do_commit_twophase(
        self,
        connection: Any,
        xid: Any,
        is_prepared: bool = ...,
        recover: bool = ...,
    ) -> None: ...

dialect = MySQLDialect_mariadbconnector
