// DO NOT EDIT. This file is automatically generated.

export interface Alert {
	id: number;
	display_name: string;
	query: string;
	alert: string;
	interesting: number;
	bug_uri_template: string;
	algo: RegressionDetectionGrouping;
	step: StepDetection;
	state: ConfigState;
	owner: string;
	step_up_only: boolean;
	direction: Direction;
	radius: number;
	k: number;
	group_by: string;
	sparse: boolean;
	minimum_num: number;
	category: string;
}

export interface CommitID {
	offset: number;
}

export interface CommitDetail {
	CommitID: CommitID;
	author: string;
	message: string;
	url: string;
	hash: string;
	ts: number;
}

export interface ValuePercent {
	value: string;
	percent: number;
}

export interface StepFit {
	least_squares: number;
	turning_point: number;
	step_size: number;
	regression: number;
	status: StepFitStatus;
}

export interface ColumnHeader {
	offset: number;
	timestamp: number;
}

export interface ClusterSummary {
	centroid: number[] | null;
	shortcut: string;
	param_summaries2: ValuePercent[] | null;
	step_fit: StepFit | null;
	step_point: ColumnHeader | null;
	num: number;
}

export interface FrameRequest {
	begin: number;
	end: number;
	formulas: string[] | null;
	queries: string[] | null;
	hidden: string[] | null;
	keys: string;
	tz: string;
	num_commits: number;
	request_type: RequestType;
}

export interface DataFrame {
	traceset: TraceSet;
	header: ColumnHeader[] | null;
	paramset: ParamSet;
	skip: number;
}

export interface FrameResponse {
	dataframe: DataFrame | null;
	skps: number[] | null;
	msg: string;
}

export interface TriageStatus {
	status: Status;
	message: string;
}

export interface Regression {
	low: ClusterSummary | null;
	high: ClusterSummary | null;
	frame: FrameResponse | null;
	low_status: TriageStatus;
	high_status: TriageStatus;
}

export interface RegressionRow {
	cid: CommitDetail | null;
	regression: Regression | null;
}

export interface DryRunStatus {
	finished: boolean;
	message: string;
	regressions: RegressionRow[] | null;
}

export interface UIDomain {
	begin: number;
	end: number;
	num_commits: number;
	request_type: RequestType;
}

export interface StartDryRunRequest {
	config: Alert;
	domain: UIDomain;
}

export interface StartDryRunResponse {
	id: string;
}

export interface ClusterStartResponse {
	id: string;
}

export interface ClusterSummaries {
	Clusters: ClusterSummary[] | null;
	StdDevThreshold: number;
	K: number;
}

export interface RegressionDetectionResponse {
	summary: ClusterSummaries | null;
	frame: FrameResponse | null;
}

export interface ClusterStatus {
	state: ProcessState;
	message: string;
	value: RegressionDetectionResponse | null;
}

export interface CommitDetailsRequest {
	cid: CommitID;
	traceid: string;
}

export interface CountHandlerRequest {
	q: string;
	begin: number;
	end: number;
}

export interface CountHandlerResponse {
	count: number;
	paramset: ParamSet;
}

export interface RangeRequest {
	offset: number;
	begin: number;
	end: number;
}

export interface RegressionRangeRequest {
	begin: number;
	end: number;
	subset: Subset;
	alert_filter: string;
}

export interface RegressionRow {
	cid: CommitDetail | null;
	columns: Regression[] | null;
}

export interface RegressionRangeResponse {
	header: Alert[] | null;
	table: RegressionRow[] | null;
	categories: string[] | null;
}

export interface SkPerfConfig {
	radius: number;
	key_order: string[] | null;
	num_shift: number;
	interesting: number;
	step_up_only: boolean;
	commit_range_url: string;
}

export interface TriageRequest {
	cid: CommitID | null;
	alert: Alert;
	triage: TriageStatus;
	cluster_type: string;
}

export interface TriageResponse {
	bug: string;
}

export interface TryBugRequest {
	bug_uri_template: string;
}

export interface TryBugResponse {
	url: string;
}

export interface Current {
	commit: CommitDetail | null;
	alert: Alert | null;
	message: string;
}

export interface FullSummary {
	summary: ClusterSummary;
	triage: TriageStatus;
	frame: FrameResponse;
}

export interface Domain {
	n: number;
	end: string;
	offset: number;
}

export interface RegressionDetectionRequest {
	alert: Alert | null;
	domain: Domain;
	query: string;
	step: number;
	total_queries: number;
}

export type RegressionDetectionGrouping = string;

export type StepDetection = "" | "absolute" | "percent" | "cohen";

export type ConfigState = "ACTIVE" | "DELETED";

export type Direction = "UP" | "DOWN" | "BOTH";

export type StepFitStatus = "Low" | "High" | "Uninteresting";

export type RequestType = 1 | 0;

export type Trace = number[];

export type TraceSet = { [key: string]: Trace };

export type ParamSet = { [key: string]: string[] };

export type Status = "" | "positive" | "negative" | "untriaged";

export type ProcessState = "Running" | "Success" | "Error";

export type Subset = "all" | "regressions" | "untriaged";

export type ClusterAlgo = "kmeans" | "stepfit";
