import * as buildApi from "azure-devops-node-api/BuildApi";
import * as buildInterfaces from "azure-devops-node-api/interfaces/BuildInterfaces";
import * as testInterfaces from "azure-devops-node-api/interfaces/TestInterfaces";
import * as testApi from "azure-devops-node-api/TestApi";
import * as taskAgentApi from "azure-devops-node-api/TaskAgentApi";
import * as coreApi from "azure-devops-node-api/CoreApi";
import * as baseInterfaces from "azure-devops-node-api/interfaces/common/VsoBaseInterfaces";
import { IRequestHandler } from "typed-rest-client/Interfaces";
import common = require("./generalfunctions");
export declare const TeamFoundationCollectionUri: string;
export declare const TeamProject: string;
export declare const TeamProjectId: string;
export declare const RequestedForUsername: string;
export declare const RequestedForUserId: string;
export declare const ReleaseRequestedForUsername: string;
export declare const ReleaseRequestedForId: string;
export declare const SourceVersion: string;
export declare const SourceBranch: string;
export declare const CurrentBuildDefinition: string;
export declare const OAuthAccessToken: string;
export declare const RepositoryType: string;
export declare const TfsRepositoryType: string;
export declare const AuthenticationMethodOAuthToken: string;
export declare const AuthenticationMethodBasicAuthentication: string;
export declare const AuthenticationMethodPersonalAccessToken: string;
export interface ITfsRestService {
    initialize(authenticationMethod: string, username: string, password: string, tfsServer: string, teamProject: string, ignoreSslError: boolean): Promise<void>;
    getBuildsByStatus(buildDefinitionName: string, statusFilter?: buildInterfaces.BuildStatus): Promise<buildInterfaces.Build[]>;
    triggerBuild(buildDefinitionName: string, branch: string, requestedFor: string, sourceVersion: string, demands: string[], queueId: number, buildParameters: string, templateParameters: string): Promise<buildInterfaces.Build>;
    downloadArtifacts(buildId: number, downloadDirectory: string): Promise<void>;
    getQueueIdByName(buildQueue: string): Promise<number>;
    getBuildInfo(buildId: number): Promise<buildInterfaces.Build>;
    areBuildsFinished(triggeredBuilds: number[], failIfNotSuccessful: boolean, failIfPartiallySucceeded: boolean): Promise<boolean>;
    isBuildFinished(buildId: number): Promise<boolean>;
    wasBuildSuccessful(buildId: number): Promise<boolean>;
    getBuildDefinitionId(buildDefinitionName: string): Promise<number>;
    getTestRuns(testRunName: string, numberOfRunsToFetch: number): Promise<testInterfaces.TestRun[]>;
    getAssociatedChanges(build: buildInterfaces.Build): Promise<buildInterfaces.Change[]>;
    cancelBuild(buildId: number): Promise<void>;
}
export interface IAzureDevOpsWebApi {
    getBearerHandler(bearerToken: string): IRequestHandler;
    getBasicHandler(username: string, password: string): IRequestHandler;
    getHandlerFromToken(token: string): IRequestHandler;
    initializeConnection(tfsServer: string, authHandler: IRequestHandler, requestOptions: baseInterfaces.IRequestOptions): void;
    getBuildApi(): Promise<buildApi.IBuildApi>;
    getTestApi(): Promise<testApi.ITestApi>;
    getTaskAgentApi(): Promise<taskAgentApi.ITaskAgentApi>;
    getCoreApi(): Promise<coreApi.ICoreApi>;
}
export declare class TfsRestService implements ITfsRestService {
    vstsBuildApi: buildApi.IBuildApi;
    vstsTestApi: testApi.ITestApi;
    taskAgentApi: taskAgentApi.ITaskAgentApi;
    teamProjectId: string;
    azureDevOpsWebApi: IAzureDevOpsWebApi;
    genralFunctions: common.IGeneralFunctions;
    constructor(azureDevOpsWebApi?: IAzureDevOpsWebApi, generalFunctions?: common.IGeneralFunctions);
    initialize(authenticationMethod: string, username: string, password: string, tfsServer: string, teamProject: string, ignoreSslError: boolean): Promise<void>;
    getBuildsByStatus(buildDefinitionName: string, statusFilter?: buildInterfaces.BuildStatus): Promise<buildInterfaces.Build[]>;
    triggerBuild(buildDefinitionName: string, branch: string, requestedForUserID: string, sourceVersion: string, demands: string[], queueId: number, buildParameters: string, templateParameters: string): Promise<buildInterfaces.Build>;
    areBuildsFinished(triggeredBuilds: number[], failIfNotSuccessful: boolean, treatPartiallySucceededBuildAsSuccessful: boolean): Promise<boolean>;
    cancelBuild(buildId: number): Promise<void>;
    downloadArtifacts(buildId: number, downloadDirectory: string): Promise<void>;
    getTestRuns(testRunName: string, numberOfRunsToFetch: number): Promise<testInterfaces.TestRun[]>;
    getQueueIdByName(buildQueue: string): Promise<number>;
    isBuildFinished(buildId: number): Promise<boolean>;
    wasBuildSuccessful(buildId: number): Promise<boolean>;
    getBuildDefinitionId(buildDefinitionName: string): Promise<number>;
    getAssociatedChanges(build: buildInterfaces.Build): Promise<buildInterfaces.Change[]>;
    getBuildInfo(buildId: number): Promise<buildInterfaces.Build>;
    private parseParameterString;
    private createBuildParameterObject;
    private updateCurlyBracesStack;
    private cleanValue;
    private setTeamProjectId;
    private verifyAuthenticationMethod;
    private makeRequest;
}
