'Create an instance of an :class:`~.Input`.
Args:
fulfillment (:class:`cryptoconditions.Fulfillment`): A
Fulfillment to be signed with a private key.
owners_before (:obj:`list` of :obj:`str`): A list of owners
after a Transaction was confirmed.
fulfills (:class:`~bigchaindb.common.transaction.
TransactionLink`, optional): A link representing the input
of a `TRANSFER` Transaction.'

def __init__(self, fulfillment, owners_before, fulfills=None):

    if ((fulfills is not None) and (not isinstance(fulfills, TransactionLink))):
        raise TypeError('`fulfills`    must    be    a    TransactionLink    instance')
    if (not isinstance(owners_before, list)):
        raise TypeError('`owners_after`    must    be    a    list    instance')
    self.fulfillment = fulfillment
    self.fulfills = fulfills
    self.owners_before = owners_before
