/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

import { IExperimentationFilterProvider } from 'tas-client-umd';
export declare const ASSIGNMENT_STORAGE_KEY = 'VSCode.ABExp.FeatureData';
export declare const ASSIGNMENT_REFETCH_INTERVAL = 0;
export interface IAssignmentService {
	readonly _serviceBrand: undefined;
	getTreatment<T extends string | number | boolean>(name: string): Promise<T | undefined>;
}
export declare enum TargetPopulation {
	Team = 'team',
	Internal = 'internal',
	Insiders = 'insider',
	Public = 'public',
}
export declare enum Filters {
	/**
	 * The market in which the extension is distributed.
	 */
	Market = 'X-MSEdge-Market',
	/**
	 * The corporation network.
	 */
	CorpNet = 'X-FD-Corpnet',
	/**
	 * Version of the application which uses experimentation service.
	 */
	ApplicationVersion = 'X-VSCode-AppVersion',
	/**
	 * Insiders vs Stable.
	 */
	Build = 'X-VSCode-Build',
	/**
	 * Client Id which is used as primary unit for the experimentation.
	 */
	ClientId = 'X-MSEdge-ClientId',
	/**
	 * Extension header.
	 */
	ExtensionName = 'X-VSCode-ExtensionName',
	/**
	 * The version of the extension.
	 */
	ExtensionVersion = 'X-VSCode-ExtensionVersion',
	/**
	 * The language in use by VS Code
	 */
	Language = 'X-VSCode-Language',
	/**
	 * The target population.
	 * This is used to separate internal, early preview, GA, etc.
	 */
	TargetPopulation = 'X-VSCode-TargetPopulation',
}
export declare class AssignmentFilterProvider implements IExperimentationFilterProvider {
	private version;
	private appName;
	private machineId;
	private targetPopulation;
	constructor(version: string, appName: string, machineId: string, targetPopulation: TargetPopulation);
	getFilterValue(filter: string): string | null;
	getFilters(): Map<string, any>;
}
