from ..error import VLPSequenceLenError as VLPSequenceLenError, VLPValueRangeError as VLPValueRangeError
from .led import LED as LED
from .room import Room as Room
from numbers import Number
from typing import Union

class PD:
    def __init__(self, n: Number = ..., fov: Number = ..., Ar: Number = ..., Ts: Number = ..., pos: tuple = ..., Nv: tuple = ..., origin: tuple = ..., *args, **kwargs) -> None: ...
    @staticmethod
    def recv_frame_model(l, alpha, beta, center_tp_pos: tuple): ...
    @staticmethod
    def recv_surface_model(r: Union[Number, tuple], alpha, beta, center_tp_pos: tuple): ...
    @staticmethod
    def recv_hemisphere_model(r, l, alpha, center_tp_pos: tuple): ...
    def recv_led_radiation_intensity(self, led: LED): ...
    def recv_los_led_signal(self, led: LED): ...
    def recv_nlos_led_signal(self, led: LED, room: Room): ...
    def recv_led_signal(self, led: LED, room: Room): ...
    def shot_noise(self, P, R: float = ..., Ibg: float = ..., I2: float = ..., B: float = ..., *argv, **kwargv): ...
    def thermal_noise(self, Tk: int = ..., G: int = ..., eta: int = ..., B: float = ..., I2: float = ..., I3: float = ..., gamma: float = ..., gm: int = ..., *argv, **kwargv): ...
    def recv_noise_signal(self, P, *argv, **kwargv): ...
    def SNR(self, P, R, dB: bool = ..., *argv, **kwargv): ...
    @property
    def origin(self) -> tuple: ...
    @property
    def pos(self): ...
    @property
    def Nv(self): ...
    @property
    def fov(self): ...
    @property
    def Ar(self): ...
    @property
    def Ts(self): ...
    @property
    def n(self): ...
    @property
    def G_Con(self): ...
