docs: def card_transfer(provider: Provider, card: CardTransfer, inputs: dict,
                    change_address: str, locktime: int=0) -> Transaction:
  
      '''Prepare the CardTransfer Transaction object
  
         : card - CardTransfer object
         : inputs - utxos (has to be owned by deck issuer)
         : change_address - address to send the change to
         : locktime - tx locked until block n=int
         '''
  
      network_params = net_query(provider.network)
      pa_params = param_query(provider.network)
  
      if card.deck_p2th is None:
          raise Exception("card.deck_p2th required for tx_output")
  
      outs = [
          tx_output(network=provider.network,
                    value=pa_params.P2TH_fee,
                    n=0, script=p2pkh_script(address=card.deck_p2th,
                                             network=provider.network)),  # deck p2th
          tx_output(network=provider.network,
                    value=Decimal(0), n=1,
                    script=nulldata_script(card.metainfo_to_protobuf))  # op_return
      ]
  
      for addr, index in zip(card.receiver, range(len(card.receiver))):
          outs.append(   # TxOut for each receiver, index + 2 because we have two outs already
              tx_output(network=provider.network, value=Decimal(0), n=index+2,
                        script=p2pkh_script(address=addr,
                                            network=provider.network))
          )
  
      #  first round of txn making is done by presuming minimal fee
      change_sum = Decimal(inputs['total'] - network_params.min_tx_fee - pa_params.P2TH_fee)
  
      outs.append(
          tx_output(network=provider.network,
                    value=change_sum, n=len(outs)+1,
                    script=p2pkh_script(address=change_address,
                                        network=provider.network))
          )
  
      unsigned_tx = make_raw_transaction(network=provider.network,
                                         inputs=inputs['utxos'],
                                         outputs=outs,
                                         locktime=Locktime(locktime)
                                         )
      return unsigned_tx