// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef RLZ_LIB_RLZ_LIB_CLEAR_H_
#define RLZ_LIB_RLZ_LIB_CLEAR_H_

#include "base/containers/span.h"
#include "rlz/lib/rlz_api.h"
#include "rlz/lib/rlz_enums.h"

namespace rlz_lib {

// Clears all product-specifc state from the RLZ registry.
// Should be called during product uninstallation.
// This removes outstanding product events, product financial ping times,
// the product RLS argument (if any), and any RLZ's for access points being
// uninstalled with the product.
// IMPORTANT: These are the access_points the product is removing as part
// of the uninstallation, not necessarily all the access points passed to
// SendFinancialPing() and GetPingParams().
// No return value - this is best effort. Will assert in debug mode on
// failed attempts.
// Access: HKCU write.
void RLZ_LIB_API ClearProductState(Product product,
                                   base::span<const AccessPoint> access_points);

}  // namespace rlz_lib

#endif  // RLZ_LIB_RLZ_LIB_CLEAR_H_
