import { WebApi } from 'azure-devops-node-api';
import { ICoreApi } from 'azure-devops-node-api/CoreApi';
import { IGitApi } from 'azure-devops-node-api/GitApi';
import { IWorkItemTrackingApi } from 'azure-devops-node-api/WorkItemTrackingApi';
import { IBuildApi } from 'azure-devops-node-api/BuildApi';
import { ITestApi } from 'azure-devops-node-api/TestApi';
import { IReleaseApi } from 'azure-devops-node-api/ReleaseApi';
import { ITaskAgentApi } from 'azure-devops-node-api/TaskAgentApi';
import { ITaskApi } from 'azure-devops-node-api/TaskApi';
import { IProfileApi } from 'azure-devops-node-api/ProfileApi';
import { AuthConfig } from './auth-factory';
/**
 * Azure DevOps Client
 *
 * Provides access to Azure DevOps APIs using the configured authentication method
 */
export declare class AzureDevOpsClient {
    private config;
    private clientPromise;
    /**
     * Creates a new Azure DevOps client
     *
     * @param config Authentication configuration
     */
    constructor(config: AuthConfig);
    /**
     * Get the authenticated Azure DevOps client
     *
     * @returns The authenticated WebApi client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    private getClient;
    /**
     * Get the underlying WebApi client
     *
     * @returns The authenticated WebApi client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getWebApiClient(): Promise<WebApi>;
    /**
     * Check if the client is authenticated
     *
     * @returns True if the client is authenticated
     */
    isAuthenticated(): Promise<boolean>;
    /**
     * Get the Core API
     *
     * @returns The Core API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getCoreApi(): Promise<ICoreApi>;
    /**
     * Get the Git API
     *
     * @returns The Git API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getGitApi(): Promise<IGitApi>;
    /**
     * Get the Work Item Tracking API
     *
     * @returns The Work Item Tracking API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getWorkItemTrackingApi(): Promise<IWorkItemTrackingApi>;
    /**
     * Get the Build API
     *
     * @returns The Build API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getBuildApi(): Promise<IBuildApi>;
    /**
     * Get the Test API
     *
     * @returns The Test API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getTestApi(): Promise<ITestApi>;
    /**
     * Get the Release API
     *
     * @returns The Release API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getReleaseApi(): Promise<IReleaseApi>;
    /**
     * Get the Task Agent API
     *
     * @returns The Task Agent API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getTaskAgentApi(): Promise<ITaskAgentApi>;
    /**
     * Get the Task API
     *
     * @returns The Task API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getTaskApi(): Promise<ITaskApi>;
    /**
     * Get the Profile API
     *
     * @returns The Profile API client
     * @throws {AzureDevOpsAuthenticationError} If authentication fails
     */
    getProfileApi(): Promise<IProfileApi>;
}
