def METHOD_NAME(
    temp_template: str,
    cluster: clusterlib.ClusterLib,
    payment_addr: clusterlib.AddressRecord,
    dst_addr: clusterlib.AddressRecord,
    plutus_op: plutus_common.PlutusOp,
    amount: int,
    redeem_cost: plutus_common.ScriptCost,
    use_reference_script: bool = False,
    use_inline_datum: bool = False,
    collateral_amount: tp.Optional[int] = None,
    tokens_collateral: tp.Optional[
        tp.List[plutus_common.Token]
    ] = None,  # tokens must already be in `payment_addr`
) -> tp.Tuple[
    tp.List[clusterlib.UTXOData],
    tp.List[clusterlib.UTXOData],
    tp.Optional[clusterlib.UTXOData],
    clusterlib.TxRawOutput,