import basem = require('./ClientApiBases');
import VsoBaseInterfaces = require('./interfaces/common/VsoBaseInterfaces');
import ManagementInterfaces = require("./interfaces/ManagementInterfaces");
export interface IManagementApi extends basem.ClientApiBase {
constructor(organizationId: string): Promise<void>;
constructor(organizationId: string): Promise<void>;
constructor(organizationId: string): Promise<ManagementInterfaces.BillingInfo>;
constructor(billingInfo: ManagementInterfaces.BillingInfo, organizationId: string): Promise<void>;
constructor(billingDate?: Date): Promise<ManagementInterfaces.BillableCommitterDetails[]>;
constructor(): Promise<ManagementInterfaces.MeterUsage>;
constructor(billingDate?: Date): Promise<ManagementInterfaces.MeterUsage>;
constructor(meterUsage: ManagementInterfaces.MeterUsage): Promise<void>;
constructor(includeAllProperties?: boolean): Promise<ManagementInterfaces.AdvSecEnablementSettings>;
constructor(savedAdvSecEnablementStatus: ManagementInterfaces.AdvSecEnablementSettingsUpdate): Promise<void>;
constructor(): Promise<string[]>;
constructor(project: string, includeAllProperties?: boolean): Promise<ManagementInterfaces.AdvSecEnablementSettings>;
constructor(savedAdvSecEnablementStatus: ManagementInterfaces.AdvSecEnablementSettingsUpdate, project: string): Promise<void>;
constructor(project: string): Promise<string[]>;
constructor(project: string, repository: string, includeAllProperties?: boolean): Promise<ManagementInterfaces.AdvSecEnablementStatus>;
constructor(savedAdvSecEnablementStatus: ManagementInterfaces.AdvSecEnablementStatusUpdate, project: string, repository: string): Promise<void>;
constructor(project: string, repository: string): Promise<string[]>;
}
export declare class ManagementApi extends basem.ClientApiBase implements IManagementApi {
constructor(baseUrl: string, handlers: VsoBaseInterfaces.IRequestHandler[], options?: VsoBaseInterfaces.IRequestOptions);
    /**
     * Delete the billing info for an organization.
     *
     * @param {string} organizationId
     */
constructor(organizationId: string): Promise<void>;
    /**
     * Delete the meter usage history from Primary SU for an organization.
     *
     * @param {string} organizationId
     */
constructor(organizationId: string): Promise<void>;
    /**
     * Get the billing info for an organization.
     *
     * @param {string} organizationId - Organization ID to get billing info for.
     */
constructor(organizationId: string): Promise<ManagementInterfaces.BillingInfo>;
    /**
     * Save the billing info for an organization.
     *
     * @param {ManagementInterfaces.BillingInfo} billingInfo
     * @param {string} organizationId
     */
constructor(billingInfo: ManagementInterfaces.BillingInfo, organizationId: string): Promise<void>;
    /**
     * Get all billable committers details, including those not matched with a VSID.
     *
     * @param {Date} billingDate - The date to query, or if not provided, today
     */
constructor(billingDate?: Date): Promise<ManagementInterfaces.BillableCommitterDetails[]>;
    /**
     */
constructor(): Promise<ManagementInterfaces.MeterUsage>;
    /**
     * Get commiters used when calculating billing information.
     *
     * @param {Date} billingDate - The date to query, or if not provided, today
     */
constructor(billingDate?: Date): Promise<ManagementInterfaces.MeterUsage>;
    /**
     * @param {ManagementInterfaces.MeterUsage} meterUsage
     */
constructor(meterUsage: ManagementInterfaces.MeterUsage): Promise<void>;
    /**
     * Get the current status of Advanced Security for the organization
     *
     * @param {boolean} includeAllProperties - When true, also determine if pushes are blocked if they contain secrets
     */
constructor(includeAllProperties?: boolean): Promise<ManagementInterfaces.AdvSecEnablementSettings>;
    /**
     * Update the status of Advanced Security for the organization
     *
     * @param {ManagementInterfaces.AdvSecEnablementSettingsUpdate} savedAdvSecEnablementStatus - The new status
     */
constructor(savedAdvSecEnablementStatus: ManagementInterfaces.AdvSecEnablementSettingsUpdate): Promise<void>;
    /**
     * Estimate the committers that would be added to the customer's usage if Advanced Security was enabled for this organization.
     *
     */
constructor(): Promise<string[]>;
    /**
     * Get the current status of Advanced Security for a project
     *
     * @param {string} project - Project ID or project name
     * @param {boolean} includeAllProperties - When true, also determine if pushes are blocked if they contain secrets
     */
constructor(project: string, includeAllProperties?: boolean): Promise<ManagementInterfaces.AdvSecEnablementSettings>;
    /**
     * Update the status of Advanced Security for the project
     *
     * @param {ManagementInterfaces.AdvSecEnablementSettingsUpdate} savedAdvSecEnablementStatus - The new status
     * @param {string} project - Project ID or project name
     */
constructor(savedAdvSecEnablementStatus: ManagementInterfaces.AdvSecEnablementSettingsUpdate, project: string): Promise<void>;
    /**
     * Estimate the number of committers that would be added to the customer's usage if Advanced Security was enabled for this project.
     *
     * @param {string} project - Project ID or project name
     */
constructor(project: string): Promise<string[]>;
    /**
     * Determine if Advanced Security is enabled for a repository
     *
     * @param {string} project - Project ID or project name
     * @param {string} repository - The name or ID of the repository
     * @param {boolean} includeAllProperties - When true, will also determine if pushes are blocked when secrets are detected
     */
constructor(project: string, repository: string, includeAllProperties?: boolean): Promise<ManagementInterfaces.AdvSecEnablementStatus>;
    /**
     * Update the enablement of Advanced Security for a repository
     *
     * @param {ManagementInterfaces.AdvSecEnablementStatusUpdate} savedAdvSecEnablementStatus - new status
     * @param {string} project - Project ID or project name
     * @param {string} repository - Name or ID of the repository
     */
constructor(savedAdvSecEnablementStatus: ManagementInterfaces.AdvSecEnablementStatusUpdate, project: string, repository: string): Promise<void>;
    /**
     * Estimate the committers that would be added to the customer's usage if Advanced Security was enabled for this repository.
     *
     * @param {string} project - Project ID or project name
     * @param {string} repository - The name or ID of the repository
     */
constructor(project: string, repository: string): Promise<string[]>;
}
