import typing

import android.content
import android.content.om
import android.content.res
import android.os
import java
import java.io
import java.lang
import java.util

class AssetsProvider(java.lang.Object):
    def loadAssetFd(self, path: str | java.lang.String, accessMode: int | java.jint | java.lang.Integer, /) -> android.content.res.AssetFileDescriptor | None: ...

class ResourcesLoader(java.lang.Object):
    def __init__(self) -> None: ...
    def addProvider(self, resourcesProvider: ResourcesProvider, /) -> None: ...
    def clearProviders(self) -> None: ...
    def getProviders(self) -> java.util.List[ResourcesProvider]: ...
    def removeProvider(self, resourcesProvider: ResourcesProvider, /) -> None: ...
    def setProviders(self, resourcesProviders: java.util.List[ResourcesProvider], /) -> None: ...

class ResourcesProvider(java.io.Closeable, java.lang.AutoCloseable):
    def close(self) -> None: ...
    @staticmethod
    def empty(assetsProvider: AssetsProvider, /) -> ResourcesProvider: ...
    def finalize(self) -> None: ...
    @typing.overload
    @staticmethod
    def loadFromApk(fileDescriptor: android.os.ParcelFileDescriptor, /) -> ResourcesProvider: ...
    @typing.overload
    @staticmethod
    def loadFromApk(fileDescriptor: android.os.ParcelFileDescriptor, assetsProvider: AssetsProvider, /) -> ResourcesProvider: ...
    @staticmethod
    def loadFromDirectory(path: str | java.lang.String, assetsProvider: AssetsProvider, /) -> ResourcesProvider: ...
    @staticmethod
    def loadFromSplit(context: android.content.Context, splitName: str | java.lang.String, /) -> ResourcesProvider: ...
    @staticmethod
    def loadFromTable(fileDescriptor: android.os.ParcelFileDescriptor, assetsProvider: AssetsProvider, /) -> ResourcesProvider: ...
    @staticmethod
    def loadOverlay(overlayInfo: android.content.om.OverlayInfo, /) -> ResourcesProvider: ...
