docs: def deck_spawn(provider: Provider, deck: Deck, inputs: dict,
                 change_address: str, locktime: int=0) -> Transaction:
  
      '''Creates Deck spawn raw transaction.
  
         : key - Kutil object which we'll use to sign the tx
         : deck - Deck 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(deck.network)
      pa_params = param_query(deck.network)
  
      if deck.production:
          p2th_addr = pa_params.P2TH_addr
      else:
          p2th_addr = pa_params.test_P2TH_addr
  
      #  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)
  
      txouts = [
          tx_output(network=deck.network, value=pa_params.P2TH_fee,
                    n=0, script=p2pkh_script(address=p2th_addr,
                                             network=deck.network)),  # p2th
  
          tx_output(network=deck.network, value=Decimal(0),
                    n=1, script=nulldata_script(deck.metainfo_to_protobuf)),  # op_return
  
          tx_output(network=deck.network, value=change_sum,
                    n=2, script=p2pkh_script(address=change_address,
                                             network=deck.network))  # change
                ]
  
      unsigned_tx = make_raw_transaction(network=deck.network,
                                         inputs=inputs['utxos'],
                                         outputs=txouts,
                                         locktime=Locktime(locktime)
                                         )
      return unsigned_tx