import ConnectionCode from "./ConnectionCode";
import WebSite from "./Website";
import Exploration from "./Exploration";
import Session from "./Session";
import AifexPluginInfo from "./AifexPluginInfo";
import ExplorationEvaluation from "./ExplorationEvaluation";

export default interface AifexService {
	getSession(webSiteId: string): Promise<Session> ;

	getWebSite(webSiteId: string): Promise<WebSite> ;

	getProbabilityMap(
		connectionCode: ConnectionCode,
		exploration: Exploration
	): Promise<Map<string, number>> ;

	addExploration(
		connectionCode: ConnectionCode,
		testerName: string,
		exploration: Exploration
	): Promise<any> ;

	getCommentList(connectionCode: ConnectionCode, exploration: Exploration): Promise<any> ;

	addScreenshotList(connectionCode: ConnectionCode, explorationNumber, list): Promise<any> ;
	
	addVideo(connectionCode: ConnectionCode, explorationNumber:number, video:Blob): Promise<any> ;
    
	getPluginInfo(): Promise<AifexPluginInfo> ;

	evaluateSequence(webSite: WebSite, exploration: Exploration): Promise<ExplorationEvaluation|null>;

	hasEvaluator(webSiteId : string) : Promise<boolean>;

}