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

from .base import BuiltinFunction

"""Built-in message function."""
__all__ = ["src_mul_edge", "copy_src", "copy_edge", "copy_u", "copy_e", "BinaryMessageFunction", "CopyMessageFunction"]
class MessageFunction(BuiltinFunction):
    """Base builtin message function class."""
    @property
    def name(self):
        """Return the name of this builtin function."""
        ...
    


class BinaryMessageFunction(MessageFunction):
    """Class for the lhs_op_rhs builtin message function.

    See Also
    --------
    src_mul_edge
    """
    def __init__(self, binary_op, lhs, rhs, lhs_field, rhs_field, out_field) -> None:
        ...
    
    @property
    def name(self): # -> str:
        ...
    


class CopyMessageFunction(MessageFunction):
    """Class for the copy builtin message function.

    See Also
    --------
    copy_src
    """
    def __init__(self, target, in_field, out_field) -> None:
        ...
    
    @property
    def name(self): # -> str:
        ...
    


def copy_u(u, out): # -> CopyMessageFunction:
    """Builtin message function that computes message using source node
    feature.

    Parameters
    ----------
    u : str
        The source feature field.
    out : str
        The output message field.

    Examples
    --------
    >>> import dgl
    >>> message_func = dgl.function.copy_u('h', 'm')

    The above example is equivalent to the following user defined function:

    >>> def message_func(edges):
    >>>     return {'m': edges.src['h']}
    """
    ...

def copy_e(e, out): # -> CopyMessageFunction:
    """Builtin message function that computes message using edge feature.

    Parameters
    ----------
    e : str
        The edge feature field.
    out : str
        The output message field.

    Examples
    --------
    >>> import dgl
    >>> message_func = dgl.function.copy_e('h', 'm')

    The above example is equivalent to the following user defined function:

    >>> def message_func(edges):
    >>>     return {'m': edges.data['h']}
    """
    ...

_TARGET_MAP = ...
def src_mul_edge(src, edge, out): # -> Any:
    """Builtin message function that computes message by performing
    binary operation mul between src feature and edge feature.

    Notes
    -----
    This function is deprecated. Please use u_mul_e instead.

    Parameters
    ----------
    src : str
        The source feature field.
    edge : str
        The edge feature field.
    out : str
        The output message field.

    Examples
    --------
    >>> import dgl
    >>> message_func = dgl.function.src_mul_edge('h', 'e', 'm')
    """
    ...

def copy_src(src, out): # -> CopyMessageFunction:
    """Builtin message function that computes message using source node
    feature.

    Notes
    -----
    This function is deprecated. Please use copy_u instead.

    Parameters
    ----------
    src : str
        The source feature field.
    out : str
        The output message field.

    Examples
    --------
    >>> import dgl
    >>> message_func = dgl.function.copy_src('h', 'm')

    The above example is equivalent to the following user defined function:

    >>> def message_func(edges):
    >>>     return {'m': edges.src['h']}
    """
    ...

def copy_edge(edge, out): # -> CopyMessageFunction:
    """Builtin message function that computes message using edge feature.

    Notes
    -----
    This function is deprecated. Please use copy_e instead.

    Parameters
    ----------
    edge : str
        The edge feature field.
    out : str
        The output message field.

    Examples
    --------
    >>> import dgl
    >>> message_func = dgl.function.copy_edge('h', 'm')

    The above example is equivalent to the following user defined function:

    >>> def message_func(edges):
    >>>     return {'m': edges.data['h']}
    """
    ...

