from typing import Set, TYPE_CHECKING

if TYPE_CHECKING:
    from ..graph import IMGraphCpp

class LinearThresholdModel:
    def __init__(self, graph: 'IMGraphCpp', seeds: Set[int], theta_l: float = 0.0, theta_h: float = 1.0, record_activated: bool = False) -> None: ...
    
    def set_seeds(self, new_seeds: Set[int]) -> None: ...
    
    def set_record_activated(self, record: bool) -> None: ...
    
    def run_single_simulation(self, seed: int = 0) -> Set[int]: ...
    
    def run_monte_carlo_diffusion(self, rounds: int, seed: int = 0, use_multithread: bool = False, num_threads: int = 0) -> float: ...
