async def METHOD_NAME(
    state: State,
    tsx_data: MoneroTransactionData,
    network_type: MoneroNetworkType,
    progress: MoneroTransactionProgress,
) -> None:
    """
    Ask for confirmation from user.
    """
    from apps.monero.xmr.addresses import get_change_addr_idx
    outputs = tsx_data.outputs
    change_idx = get_change_addr_idx(outputs, tsx_data.change_dts)
    payment_id = tsx_data.payment_id  # local_cache_attribute
    if tsx_data.unlock_time != 0:
        await _require_confirm_unlock_time(tsx_data.unlock_time)
    for idx, dst in enumerate(outputs):
        is_change = change_idx is not None and idx == change_idx
        if is_change:
            continue  # Change output does not need confirmation
        is_dummy = change_idx is None and dst.amount == 0 and len(outputs) == 2
        if is_dummy:
            continue  # Dummy output does not need confirmation
        if tsx_data.integrated_indices and idx in tsx_data.integrated_indices:
            cur_payment = payment_id
        else:
            cur_payment = None
        await _require_confirm_output(dst, network_type, cur_payment)
    if (
        payment_id
        and not tsx_data.integrated_indices
        and payment_id != DUMMY_PAYMENT_ID
    ):
        await _require_confirm_payment_id(payment_id)
    await _require_confirm_fee(tsx_data.fee)
    progress.step(state, 0)