def METHOD_NAME(
    self,
    cluster: clusterlib.ClusterLib,
    payment_addrs: tp.List[clusterlib.AddressRecord],
    fund_script_secp: tp.Tuple[str, tp.List[clusterlib.UTXOData], tp.List[clusterlib.UTXOData]],
):
    """Test that it is possible to spend a locked UTxO by a script that uses a SECP function.
    * create the necessary Tx outputs
    * spend the locked UTxO
    * check that script address UTxO was spent
    """
    amount = 2_000_000
    # create the necessary Tx outputs
    algorithm, script_utxos, collateral_utxos = fund_script_secp
    temp_template = f"{common.get_test_id(cluster)}_{algorithm}"
    script_file = (
        plutus_common.SECP256K1_LOOP_ECDSA_PLUTUS_V2
        if algorithm == "ecdsa"
        else plutus_common.SECP256K1_LOOP_SCHNORR_PLUTUS_V2
    )
    redeemer_dir = (
        plutus_common.SEPC256K1_ECDSA_DIR
        if algorithm == "ecdsa"
        else plutus_common.SEPC256K1_SCHNORR_DIR
    )
    redeemer_file = redeemer_dir / "loop_script.redeemer"
    execution_units = (
        plutus_common.SECP256K1_ECDSA_LOOP_COST
        if algorithm == "ecdsa"
        else plutus_common.SECP256K1_SCHNORR_LOOP_COST
    )
    plutus_op = plutus_common.PlutusOp(
        script_file=script_file,
        datum_file=plutus_common.DATUM_42_TYPED,
        redeemer_file=redeemer_file,
        execution_cost=execution_units,
    )
    # for mypy
    assert plutus_op.script_file
    assert plutus_op.redeemer_file
    assert plutus_op.execution_cost
    # spend the "locked" UTxO
    plutus_txins = [
        clusterlib.ScriptTxIn(
            txins=script_utxos,
            script_file=plutus_op.script_file,
            collaterals=collateral_utxos,
            redeemer_file=plutus_op.redeemer_file,
            inline_datum_present=True,
            execution_units=(
                plutus_op.execution_cost.per_time,
                plutus_op.execution_cost.per_space,
            ),
        )
    ]
    tx_files_redeem = clusterlib.TxFiles(
        signing_key_files=[payment_addrs[1].skey_file],
    )
    txouts_redeem = [
        clusterlib.TxOut(address=payment_addrs[0].address, amount=amount),
    ]
    try:
        cluster.g_transaction.send_tx(
            src_address=payment_addrs[0].address,
            tx_name=f"{temp_template}_step1",
            txouts=txouts_redeem,
            tx_files=tx_files_redeem,
            script_txins=plutus_txins,
            fee=300_000,
        )
    except clusterlib.CLIError as err:
        plutus_common.xfail_on_secp_error(
            cluster_obj=cluster, algorithm=algorithm, err_msg=str(err)
        )
        raise
    # check that script address UTxO was spent
    assert not cluster.g_query.get_utxo(
        utxo=script_utxos[0]
    ), f"Script address UTxO was NOT spent `{script_utxos}`"