# Generated by scripts/generate_pyi.py, do not edit.

from typing import Any, Callable

import renpy

import builtins as __builtins__
import functools as functools
import renpy as renpy
import threading as threading

class BlitInfo:
    def __init__(self, reverse: 'Matrix', forward: 'Matrix', mesh_info: 'MeshInfo'): ...

    pass


def Callable(*args, **kwargs): ...

Data = renpy.display.im.Data

Displayable = renpy.display.displayable.Displayable

GL2Model = renpy.gl2.gl2model.GL2Model

class GLTFModel(renpy.display.displayable.Displayable):
    def __init__(self, filename: 'str', shader: 'str | tuple[str]' = (), tangents: 'bool' = False, zoom: 'float' = 1.0, report: 'bool' = False, **kwargs): ...

    def __eq__(self, other): ...

    def __hash__(self): ...

    def load(self): ...

    def predict_one(self): ...

    def render(self, width, height, st, at): ...

    def visit(self): ...

    filename: str
    shaders: Iterable[str]
    tangents: bool
    zoom: float
    uniforms: dict[str, object]
    texture_uniforms: dict[str, Displayable]
    report: bool

def Iterable(*args, **kwargs): ...

def Literal(*args, **kwds): ...

class Loader:

    def __reduce__(self): ...

    def __setstate__(self, __pyx_state): ...

    def get_material_uniforms(self, material_index: int): ...

    def get_texture(self, material_index: int, texture_type: int) -> 'Displayable | None': ...

    def get_texture_uniforms(self, material_index: int) -> 'dict[str, Displayable]': ...

    def get_twosided(self, material_index: int) -> bool: ...

    def load(self, model_data: 'ModelData', filename: str, shaders: 'Iterable[str | Displayable]', tangents: bool, zoom: float, report: bool) -> None: ...

    def load_mesh(self, mesh_index: int) -> 'MeshInfo': ...

    def load_textures(self) -> None: ...


Matrix = renpy.display.matrix.Matrix

class MeshInfo:
    def __init__(self, loader, mesh, material_index, textures: 'Iterable[str]', shaders: 'Iterable[str]'): ...

    mesh: Mesh3
    shaders: Iterable[str]
    uniforms: dict[str, object]
    texture_uniforms: dict[str, Displayable]
    twosided: bool

class ModelData:
    def __init__(self, ): ...

    def report(self): ...

    filename: str
    embedded_textures: dict[str, Data]
    blit_info: list[BlitInfo]
    mesh_info: list[MeshInfo]

Render = renpy.display.render.Render

def finish_predict(): ...

def free_memory(): ...

def preload(): ...

def render_for_texture(d, width, height, st, at): ...

def unoptimized_texture(d): ...

