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

#ifndef IOS_CHROME_BROWSER_VARIATIONS_VARIATIONS_APP_INTERFACE_H_
#define IOS_CHROME_BROWSER_VARIATIONS_VARIATIONS_APP_INTERFACE_H_

#import <Foundation/Foundation.h>

// The app interface for variations tests.
@interface VariationsAppInterface : NSObject

// Clears all local state variations prefs.
+ (void)clearVariationsPrefs;

// Returns true if there is a field trial for the test seed study.
+ (BOOL)fieldTrialExistsForTestSeed;

// Returns true if the variations safe seed pref is set.
+ (BOOL)hasSafeSeed;

// Sets a test safe seed and signature pair.
+ (void)setTestSafeSeedAndSignature;

// Sets a regular (i.e., non-safe) seed and signature pair which cause a crash
// on startup.
+ (void)setCrashingRegularSeedAndSignature;

// Returns the value of the variations crash streak pref.
+ (int)crashStreak;

// Sets the variations crash streak pref to `value`.
+ (void)setCrashValue:(int)value;

// Returns the value of the variations failed fetch streak pref.
+ (int)failedFetchStreak;

// Sets the variations fetch failure pref to `value`.
+ (void)setFetchFailureValue:(int)value;

@end

#endif  // IOS_CHROME_BROWSER_VARIATIONS_VARIATIONS_APP_INTERFACE_H_
