docs: async def build_get_txn_request(submitter_did: Optional[str],
                                  ledger_type: Optional[str],
                                  seq_no: int) -> str:
      """
      Builds a GET_TXN request. Request to get any transaction by its seq_no.
  
      :param submitter_did: (Optional) DID of the read request sender (if not provided then default Libindy DID will be used).
      :param ledger_type: (Optional) type of the ledger the requested transaction belongs to:
          DOMAIN - used default,
          POOL,
          CONFIG
          any number
      :param seq_no: requested transaction sequence number as it's stored on Ledger.
      :return: Request result as json.
      """
  
      logger = logging.getLogger(__name__)
      logger.debug("build_get_txn_request: >>> submitter_did: %r, ledger_type: %r, seq_no: %r",
                   submitter_did,
                   ledger_type,
                   seq_no)
  
      if not hasattr(build_get_txn_request, "cb"):
          logger.debug("build_get_txn_request: Creating callback")
          build_get_txn_request.cb = create_cb(CFUNCTYPE(None, c_int32, c_int32, c_char_p))
  
      c_submitter_did = c_char_p(submitter_did.encode('utf-8')) if submitter_did is not None else None
      c_ledger_type = c_char_p(ledger_type.encode('utf-8')) if ledger_type is not None else None
      c_seq_no = c_int32(seq_no)
  
      request_json = await do_call('indy_build_get_txn_request',
                                   c_submitter_did,
                                   c_ledger_type,
                                   c_seq_no,
                                   build_get_txn_request.cb)
  
      res = request_json.decode()
      logger.debug("build_get_txn_request: <<< res: %r", res)
      return res