from dataclasses import dataclass
from sqlalchemy import inspect as inspect
from typing import Any

@dataclass
class ColumnMetaModel:
    name: str
    type: Any
    nullable: bool
    default: Any
    is_primary: bool
    autoincrement: bool
    comment: str = ...
    max_length: int | None = ...
    @property
    def field_constraints(self) -> list[str]: ...

@dataclass
class GenerateMetaModel:
    inspector = ...
    schema_name = ...
    router_path = ...
    table_name = ...
    file_name = ...
    class_name = ...
    columns: list[ColumnMetaModel] = ...
    table_comment: str = ...
    generated_date: str = ...
    entity_imports: list[str] = ...
    table_args: str = ...
    def __init__(self, *, inspector: inspect, table_name, schema_name, output_entity_schema, router_path) -> None: ...

@dataclass
class InitFileTableModel:
    import_str: str
    router_str: str

@dataclass
class InitFileSchemaModel:
    router_path: str = ...
    imports: list[str] = ...
    routers: list[str] = ...
    def __init__(self, *, imports, routers, router_path) -> None: ...

class InitFileGenerateModel:
    imports: list[str]
