def METHOD_NAME(
    self,
    external: int,
    segwit: int,
    presigned: int,
    taproot_only: bool,
    serialize: bool,
    coin: CoinInfo,
    tx: SignTx,
    orig_txs: list[OriginalTxInfo],
) -> None:
    if __debug__:
        self.assert_finished()
    self.progress = 0
    self.steps = 0
    self.signing = True
    # Step 3 - verify inputs
    if taproot_only or (coin.overwintered and tx.version == 5):
        self.steps += presigned
    else:
        self.steps = tx.inputs_count * _PREV_TX_MULTIPLIER
    for orig in orig_txs:
        self.steps += orig.tx.inputs_count
    # Steps 3 and 4 - get_legacy_tx_digest() for each legacy input.
    if not (coin.force_bip143 or coin.overwintered or coin.decred):
        self.steps += (tx.inputs_count - segwit) * (
            tx.inputs_count + tx.outputs_count
        )
        if segwit != tx.inputs_count:
            # The transaction has a legacy input.
            # Simplification: We assume that all original transaction inputs
            # are legacy, since mixed script types are not supported in Suite.
            for orig in orig_txs:
                self.steps += orig.tx.inputs_count * (
                    orig.tx.inputs_count + orig.tx.outputs_count
                )
    # Steps 4 and 6 - serialize and sign inputs
    if serialize:
        # Step 4 - serialize all inputs.
        self.steps += tx.inputs_count
        # Step 6 - serialize witnesses for all segwit inputs except for the
        # external ones that are not presigned.
        self.steps += segwit - (external - presigned)
    else:
        # Add the number of inputs to be signed.
        self.steps += tx.inputs_count - external
    # Step 5 - serialize outputs
    if serialize and not coin.decred:
        self.steps += tx.outputs_count
    self.report_init()
    self.report()