"""
This type stub file was generated by pyright.
"""

from .dgl_dataset import DGLBuiltinDataset

""" BitcoinOTC dataset for fraud detection """
class BitcoinOTCDataset(DGLBuiltinDataset):
    r"""BitcoinOTC dataset for fraud detection

    This is who-trusts-whom network of people who trade using Bitcoin on
    a platform called Bitcoin OTC. Since Bitcoin users are anonymous,
    there is a need to maintain a record of users' reputation to prevent
    transactions with fraudulent and risky users.

    Offical website: `<https://snap.stanford.edu/data/soc-sign-bitcoin-otc.html>`_

    Bitcoin OTC dataset statistics:

    - Nodes: 5,881
    - Edges: 35,592
    - Range of edge weight: -10 to +10
    - Percentage of positive edges: 89%

    Parameters
    ----------
    raw_dir : str
        Raw file directory to download/contains the input data directory.
        Default: ~/.dgl/
    force_reload : bool
        Whether to reload the dataset.
        Default: False
    verbose: bool
        Whether to print out progress information.
        Default: True.

    Attributes
    ----------
    graphs : list
        A list of DGLGraph objects
    is_temporal : bool
        Indicate whether the graphs are temporal graphs

    Raises
    ------
    UserWarning
        If the raw data is changed in the remote server by the author.

    Examples
    --------
    >>> dataset = BitcoinOTCDataset()
    >>> len(dataset)
    136
    >>> for g in dataset:
    ....    # get edge feature
    ....    edge_weights = g.edata['h']
    ....    # your code here
    >>>
    """
    _url = ...
    _sha1_str = ...
    def __init__(self, raw_dir=..., force_reload=..., verbose=...) -> None:
        ...
    
    def download(self): # -> None:
        ...
    
    def process(self): # -> None:
        ...
    
    def has_cache(self): # -> bool:
        ...
    
    def save(self): # -> None:
        ...
    
    def load(self): # -> None:
        ...
    
    @property
    def graphs(self): # -> list[Unknown]:
        ...
    
    def __len__(self): # -> int:
        r""" Number of graphs in the dataset.

        Return
        -------
        int
        """
        ...
    
    def __getitem__(self, item):
        r""" Get graph by index

        Parameters
        ----------
        item : int
            Item index

        Returns
        -------
        :class:`dgl.DGLGraph`

            The graph contains:

            - ``edata['h']`` : edge weights
        """
        ...
    
    @property
    def is_temporal(self): # -> Literal[True]:
        r""" Are the graphs temporal graphs

        Returns
        -------
        bool
        """
        ...
    


BitcoinOTC = BitcoinOTCDataset
