/*
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
*/

import { ServiceClientOptions, RequestOptions, ServiceCallback, HttpOperationResponse } from 'ms-rest';
import * as models from '../models';


/**
 * @class
 * Builds
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the BuildClient.
 */
export interface Builds {


    /**
     * Returns the list of Git branches for this application
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listBranchesWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BranchStatus[]>>;

    /**
     * Returns the list of Git branches for this application
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listBranches(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.BranchStatus[]>;
    listBranches(appName: string, ownerName: string, callback: ServiceCallback<models.BranchStatus[]>): void;
    listBranches(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BranchStatus[]>): void;


    /**
     * Returns the list of builds for the branch
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByBranchWithHttpOperationResponse(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Build[]>>;

    /**
     * Returns the list of builds for the branch
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listByBranch(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.Build[]>;
    listByBranch(appName: string, branch: string, ownerName: string, callback: ServiceCallback<models.Build[]>): void;
    listByBranch(appName: string, branch: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Build[]>): void;


    /**
     * Create a build
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.params] Parameters of the build
     *
     * @param {string} [options.params.sourceVersion] Version to build
     *
     * @param {boolean} [options.params.debug] Run build in debug mode
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Build>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(appName: string, branch: string, ownerName: string, options?: { params? : models.BuildParams, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Build>>;

    /**
     * Create a build
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.params] Parameters of the build
     *
     * @param {string} [options.params.sourceVersion] Version to build
     *
     * @param {boolean} [options.params.debug] Run build in debug mode
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Build} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Build} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Build} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    create(appName: string, branch: string, ownerName: string, options?: { params? : models.BuildParams, customHeaders? : { [headerName: string]: string; } }): Promise<models.Build>;
    create(appName: string, branch: string, ownerName: string, callback: ServiceCallback<models.Build>): void;
    create(appName: string, branch: string, ownerName: string, options: { params? : models.BuildParams, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Build>): void;


    /**
     * Returns the projects in the repository for the branch, for all toolsets
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} os The desired OS for the project scan; normally the same as
     * the app OS. Possible values include: 'iOS', 'Android', 'Windows', 'macOS'
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} platform The desired platform for the project scan. Possible
     * values include: 'Objective-C-Swift', 'React-Native', 'Xamarin', 'Java',
     * 'UWP'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<ToolsetProjects>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listToolsetProjectsWithHttpOperationResponse(appName: string, branch: string, os: string, ownerName: string, platform: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ToolsetProjects>>;

    /**
     * Returns the projects in the repository for the branch, for all toolsets
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} os The desired OS for the project scan; normally the same as
     * the app OS. Possible values include: 'iOS', 'Android', 'Windows', 'macOS'
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} platform The desired platform for the project scan. Possible
     * values include: 'Objective-C-Swift', 'React-Native', 'Xamarin', 'Java',
     * 'UWP'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {ToolsetProjects} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {ToolsetProjects} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ToolsetProjects} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listToolsetProjects(appName: string, branch: string, os: string, ownerName: string, platform: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ToolsetProjects>;
    listToolsetProjects(appName: string, branch: string, os: string, ownerName: string, platform: string, callback: ServiceCallback<models.ToolsetProjects>): void;
    listToolsetProjects(appName: string, branch: string, os: string, ownerName: string, platform: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ToolsetProjects>): void;


    /**
     * Application specific build service status
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<BuildServiceStatus>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getStatusByAppIdWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BuildServiceStatus>>;

    /**
     * Application specific build service status
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {BuildServiceStatus} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {BuildServiceStatus} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link BuildServiceStatus} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    getStatusByAppId(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.BuildServiceStatus>;
    getStatusByAppId(appName: string, ownerName: string, callback: ServiceCallback<models.BuildServiceStatus>): void;
    getStatusByAppId(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BuildServiceStatus>): void;


    /**
     * Returns the build detail for the given build ID
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Build>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(appName: string, buildId: number, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Build>>;

    /**
     * Returns the build detail for the given build ID
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Build} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Build} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Build} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    get(appName: string, buildId: number, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.Build>;
    get(appName: string, buildId: number, ownerName: string, callback: ServiceCallback<models.Build>): void;
    get(appName: string, buildId: number, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Build>): void;


    /**
     * Cancels a build
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} properties
     *
     * @param {string} [properties.status] The build status; used to cancel builds.
     * Possible values include: 'cancelling'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Build>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(appName: string, buildId: number, ownerName: string, properties: models.BuildPatch, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Build>>;

    /**
     * Cancels a build
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} properties
     *
     * @param {string} [properties.status] The build status; used to cancel builds.
     * Possible values include: 'cancelling'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Build} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Build} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Build} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(appName: string, buildId: number, ownerName: string, properties: models.BuildPatch, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.Build>;
    update(appName: string, buildId: number, ownerName: string, properties: models.BuildPatch, callback: ServiceCallback<models.Build>): void;
    update(appName: string, buildId: number, ownerName: string, properties: models.BuildPatch, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Build>): void;


    /**
     * Distribute a build
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {object} distributeInfo The distribution details
     *
     * @param {string} distributeInfo.distributionGroupId The distribution group ID
     *
     * @param {string} [distributeInfo.releaseNotes] The release notes
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DistributionResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    distributeWithHttpOperationResponse(appName: string, buildId: number, distributeInfo: models.DistributionRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionResponse>>;

    /**
     * Distribute a build
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {object} distributeInfo The distribution details
     *
     * @param {string} distributeInfo.distributionGroupId The distribution group ID
     *
     * @param {string} [distributeInfo.releaseNotes] The release notes
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DistributionResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DistributionResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DistributionResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    distribute(appName: string, buildId: number, distributeInfo: models.DistributionRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionResponse>;
    distribute(appName: string, buildId: number, distributeInfo: models.DistributionRequest, ownerName: string, callback: ServiceCallback<models.DistributionResponse>): void;
    distribute(appName: string, buildId: number, distributeInfo: models.DistributionRequest, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionResponse>): void;


    /**
     * Gets the download URI
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {string} downloadType The download type. Possible values include:
     * 'build', 'symbols', 'logs'
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<DownloadContainer>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getDownloadUriWithHttpOperationResponse(appName: string, buildId: number, downloadType: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DownloadContainer>>;

    /**
     * Gets the download URI
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {string} downloadType The download type. Possible values include:
     * 'build', 'symbols', 'logs'
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {DownloadContainer} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {DownloadContainer} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DownloadContainer} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    getDownloadUri(appName: string, buildId: number, downloadType: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DownloadContainer>;
    getDownloadUri(appName: string, buildId: number, downloadType: string, ownerName: string, callback: ServiceCallback<models.DownloadContainer>): void;
    getDownloadUri(appName: string, buildId: number, downloadType: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DownloadContainer>): void;


    /**
     * Get the build log
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<BuildLog>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getLogWithHttpOperationResponse(appName: string, buildId: number, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BuildLog>>;

    /**
     * Get the build log
     *
     * @param {string} appName The name of the application
     *
     * @param {number} buildId The build ID
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {BuildLog} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {BuildLog} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link BuildLog} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    getLog(appName: string, buildId: number, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.BuildLog>;
    getLog(appName: string, buildId: number, ownerName: string, callback: ServiceCallback<models.BuildLog>): void;
    getLog(appName: string, buildId: number, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BuildLog>): void;


    /**
     * Gets the Mono versions available to this app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listMonoVersionsWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.MonoVersion[]>>;

    /**
     * Gets the Mono versions available to this app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listMonoVersions(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.MonoVersion[]>;
    listMonoVersions(appName: string, ownerName: string, callback: ServiceCallback<models.MonoVersion[]>): void;
    listMonoVersions(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.MonoVersion[]>): void;


    /**
     * Gets the Xamarin SDK bundles available to this app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listXamarinSDKBundlesWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.XamarinSDKBundle[]>>;

    /**
     * Gets the Xamarin SDK bundles available to this app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listXamarinSDKBundles(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.XamarinSDKBundle[]>;
    listXamarinSDKBundles(appName: string, ownerName: string, callback: ServiceCallback<models.XamarinSDKBundle[]>): void;
    listXamarinSDKBundles(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.XamarinSDKBundle[]>): void;


    /**
     * Gets the Xcode versions available to this app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listXcodeVersionsWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.XcodeVersion[]>>;

    /**
     * Gets the Xcode versions available to this app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listXcodeVersions(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.XcodeVersion[]>;
    listXcodeVersions(appName: string, ownerName: string, callback: ServiceCallback<models.XcodeVersion[]>): void;
    listXcodeVersions(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.XcodeVersion[]>): void;
}

/**
 * @class
 * BranchConfigurations
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the BuildClient.
 */
export interface BranchConfigurations {


    /**
     * Gets the branch configuration
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<BranchConfiguration>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BranchConfiguration>>;

    /**
     * Gets the branch configuration
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {BranchConfiguration} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {BranchConfiguration} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link BranchConfiguration} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    get(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.BranchConfiguration>;
    get(appName: string, branch: string, ownerName: string, callback: ServiceCallback<models.BranchConfiguration>): void;
    get(appName: string, branch: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BranchConfiguration>): void;


    /**
     * Configures the branch for build
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<BranchConfiguration>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BranchConfiguration>>;

    /**
     * Configures the branch for build
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {BranchConfiguration} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {BranchConfiguration} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link BranchConfiguration} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    create(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.BranchConfiguration>;
    create(appName: string, branch: string, ownerName: string, callback: ServiceCallback<models.BranchConfiguration>): void;
    create(appName: string, branch: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BranchConfiguration>): void;


    /**
     * Reconfigures the branch for build
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<BranchConfiguration>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BranchConfiguration>>;

    /**
     * Reconfigures the branch for build
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {BranchConfiguration} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {BranchConfiguration} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link BranchConfiguration} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    update(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.BranchConfiguration>;
    update(appName: string, branch: string, ownerName: string, callback: ServiceCallback<models.BranchConfiguration>): void;
    update(appName: string, branch: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BranchConfiguration>): void;


    /**
     * Deletes the branch build configuration
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<SuccessResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.SuccessResponse>>;

    /**
     * Deletes the branch build configuration
     *
     * @param {string} appName The name of the application
     *
     * @param {string} branch The branch name
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {SuccessResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {SuccessResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link SuccessResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(appName: string, branch: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.SuccessResponse>;
    deleteMethod(appName: string, branch: string, ownerName: string, callback: ServiceCallback<models.SuccessResponse>): void;
    deleteMethod(appName: string, branch: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SuccessResponse>): void;
}

/**
 * @class
 * Commits
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the BuildClient.
 */
export interface Commits {


    /**
     * Returns commit information for a batch of shas
     *
     * @param {string} appName The name of the application
     *
     * @param {array} hashes A collection of commit SHAs comma-delimited
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listByShaListWithHttpOperationResponse(appName: string, hashes: string[], ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CommitDetails[]>>;

    /**
     * Returns commit information for a batch of shas
     *
     * @param {string} appName The name of the application
     *
     * @param {array} hashes A collection of commit SHAs comma-delimited
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    listByShaList(appName: string, hashes: string[], ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.CommitDetails[]>;
    listByShaList(appName: string, hashes: string[], ownerName: string, callback: ServiceCallback<models.CommitDetails[]>): void;
    listByShaList(appName: string, hashes: string[], ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CommitDetails[]>): void;
}

/**
 * @class
 * FileAssets
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the BuildClient.
 */
export interface FileAssets {


    /**
     * Create a new asset to upload a file
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<FileAsset>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.FileAsset>>;

    /**
     * Create a new asset to upload a file
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {FileAsset} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {FileAsset} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link FileAsset} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    create(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.FileAsset>;
    create(appName: string, ownerName: string, callback: ServiceCallback<models.FileAsset>): void;
    create(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.FileAsset>): void;
}

/**
 * @class
 * RepositoryConfigurations
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the BuildClient.
 */
export interface RepositoryConfigurations {


    /**
     * Returns the repository build configuration status of the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.includeInactive] Include inactive configurations
     * if none are active
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(appName: string, ownerName: string, options?: { includeInactive? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.RepoConfig[]>>;

    /**
     * Returns the repository build configuration status of the app
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.includeInactive] Include inactive configurations
     * if none are active
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(appName: string, ownerName: string, options?: { includeInactive? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<models.RepoConfig[]>;
    list(appName: string, ownerName: string, callback: ServiceCallback<models.RepoConfig[]>): void;
    list(appName: string, ownerName: string, options: { includeInactive? : boolean, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RepoConfig[]>): void;


    /**
     * Configures the repository for build
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} repo The repository information
     *
     * @param {string} repo.repoUrl The repository url
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<SuccessResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateWithHttpOperationResponse(appName: string, ownerName: string, repo: models.RepoInfo, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.SuccessResponse>>;

    /**
     * Configures the repository for build
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} repo The repository information
     *
     * @param {string} repo.repoUrl The repository url
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {SuccessResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {SuccessResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link SuccessResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    createOrUpdate(appName: string, ownerName: string, repo: models.RepoInfo, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.SuccessResponse>;
    createOrUpdate(appName: string, ownerName: string, repo: models.RepoInfo, callback: ServiceCallback<models.SuccessResponse>): void;
    createOrUpdate(appName: string, ownerName: string, repo: models.RepoInfo, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SuccessResponse>): void;


    /**
     * Removes the configuration for the respository
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<SuccessResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.SuccessResponse>>;

    /**
     * Removes the configuration for the respository
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {SuccessResponse} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {SuccessResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link SuccessResponse} for more information.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    deleteMethod(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.SuccessResponse>;
    deleteMethod(appName: string, ownerName: string, callback: ServiceCallback<models.SuccessResponse>): void;
    deleteMethod(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SuccessResponse>): void;
}

/**
 * @class
 * Repositories
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the BuildClient.
 */
export interface Repositories {


    /**
     * Gets the repositories available from the source code host
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} sourceHost The source host. Possible values include:
     * 'github', 'bitbucket', 'vsts'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.form] The selected form of the object. Possible
     * values include: 'lite', 'full'
     *
     * @param {string} [options.vstsAccountName] Filter repositories only for
     * specified account and project, "vstsProjectId" is required
     *
     * @param {string} [options.vstsProjectId] Filter repositories only for
     * specified account and project, "vstsAccountName" is required
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Array>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listWithHttpOperationResponse(appName: string, ownerName: string, sourceHost: string, options?: { form? : string, vstsAccountName? : string, vstsProjectId? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.SourceRepository[]>>;

    /**
     * Gets the repositories available from the source code host
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} sourceHost The source host. Possible values include:
     * 'github', 'bitbucket', 'vsts'
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.form] The selected form of the object. Possible
     * values include: 'lite', 'full'
     *
     * @param {string} [options.vstsAccountName] Filter repositories only for
     * specified account and project, "vstsProjectId" is required
     *
     * @param {string} [options.vstsProjectId] Filter repositories only for
     * specified account and project, "vstsAccountName" is required
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @param {ServiceCallback} [optionalCallback] - The optional callback.
     *
     * @returns {ServiceCallback|Promise} If a callback was passed as the last
     * parameter then it returns the callback else returns a Promise.
     *
     * {Promise} A promise is returned.
     *
     *                      @resolve {Array} - The deserialized result object.
     *
     *                      @reject {Error|ServiceError} - The error object.
     *
     * {ServiceCallback} optionalCallback(err, result, request, response)
     *
     *                      {Error|ServiceError}  err        - The Error object if an error occurred, null otherwise.
     *
     *                      {Array} [result]   - The deserialized result object if an error did not occur.
     *
     *                      {WebResource} [request]  - The HTTP Request object if an error did not occur.
     *
     *                      {http.IncomingMessage} [response] - The HTTP Response stream if an error did not occur.
     */
    list(appName: string, ownerName: string, sourceHost: string, options?: { form? : string, vstsAccountName? : string, vstsProjectId? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.SourceRepository[]>;
    list(appName: string, ownerName: string, sourceHost: string, callback: ServiceCallback<models.SourceRepository[]>): void;
    list(appName: string, ownerName: string, sourceHost: string, options: { form? : string, vstsAccountName? : string, vstsProjectId? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SourceRepository[]>): void;
}
