#!/usr/bin/env python3
# -*- coding: utf-8 -*-

from typing import Self, Any, Optional
from Interfaces.SettingsManagerInterface import SettingsManagerInterface
from Interfaces.I18NManagerInterface import I18NManagerInterface
from Interfaces.HTTPSocketDriverInterface import HTTPSocketDriverInterface
from Interfaces.FilesDriverInterface import FilesDriverInterface
from Interfaces.QuestionsManagerInterface import QuestionsManagerInterface
from Interfaces.UsersManagerInterface import UsersManagerInterface
from Interfaces.RoutesManagerInterface import RoutesManagerInterface
from Interfaces.ControllersManagerInterface import ControllersManagerInterface

class OpoTestsInterface:
    
    def __init__(self:Self, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None) -> None:
        self.settings:SettingsManagerInterface = None
        self.i18n:I18NManagerInterface = None
        self.http_server:HTTPSocketDriverInterface = None
        self.files:FilesDriverInterface = None
        self.users:UsersManagerInterface = None
        self.questions:QuestionsManagerInterface = None 
        self.routes:RoutesManagerInterface = None
        self.controllers:ControllersManagerInterface = None

    def print(self:Self, _type:str, string:str, inputs:Optional[dict[str, Any|None]|list[Any|None]|tuple[Any|None]] = None, i:int = 0) -> None:pass
    
    def exception(self, 
        exception:Exception, 
        message:Optional[str|list|tuple] = None, 
        variables:Optional[dict[str, Any]|list|tuple] = None, 
        i:Optional[int] = 1
    ) -> None:pass

    def load_json_data(self:Self, 
        inputs:Optional[str|dict[str, Any|None]|list[Any|None]|tuple[Any|None]], 
        only_dictionaries:bool = True
    ) -> list[dict[str, Any|None]|list[Any|None]|tuple[Any|None]]:pass