# Automatically generated by pb2py
# fmt: off
from .. import protobuf as p

from .MoneroMultisigKLRki import MoneroMultisigKLRki
from .MoneroOutputEntry import MoneroOutputEntry

if __debug__:
    try:
        from typing import Dict, List, Optional
        from typing_extensions import Literal  # noqa: F401
    except ImportError:
        Dict, List, Optional = None, None, None  # type: ignore


class MoneroTransactionSourceEntry(p.MessageType):

    def __init__(
        self,
        outputs: List[MoneroOutputEntry] = None,
        real_output: int = None,
        real_out_tx_key: bytes = None,
        real_out_additional_tx_keys: List[bytes] = None,
        real_output_in_tx_index: int = None,
        amount: int = None,
        rct: bool = None,
        mask: bytes = None,
        multisig_kLRki: MoneroMultisigKLRki = None,
    ) -> None:
        self.outputs = outputs if outputs is not None else []
        self.real_output = real_output
        self.real_out_tx_key = real_out_tx_key
        self.real_out_additional_tx_keys = real_out_additional_tx_keys if real_out_additional_tx_keys is not None else []
        self.real_output_in_tx_index = real_output_in_tx_index
        self.amount = amount
        self.rct = rct
        self.mask = mask
        self.multisig_kLRki = multisig_kLRki

    @classmethod
    def get_fields(cls) -> Dict:
        return {
            1: ('outputs', MoneroOutputEntry, p.FLAG_REPEATED),
            2: ('real_output', p.UVarintType, 0),
            3: ('real_out_tx_key', p.BytesType, 0),
            4: ('real_out_additional_tx_keys', p.BytesType, p.FLAG_REPEATED),
            5: ('real_output_in_tx_index', p.UVarintType, 0),
            6: ('amount', p.UVarintType, 0),
            7: ('rct', p.BoolType, 0),
            8: ('mask', p.BytesType, 0),
            9: ('multisig_kLRki', MoneroMultisigKLRki, 0),
        }
