/*
 * 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
 * AppleMapping
 * __NOTE__: An instance of this class is automatically created for an
 * instance of the DistributeClient.
 */
export interface AppleMapping {


    /**
     * Get mapping of apple app to an existing app in apple store.
     *
     * @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<AppleMappingResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppleMappingResponse>>;

    /**
     * Get mapping of apple app to an existing app in apple store.
     *
     * @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 {AppleMappingResponse} - 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.
     *
     *                      {AppleMappingResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppleMappingResponse} 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, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppleMappingResponse>;
    get(appName: string, ownerName: string, callback: ServiceCallback<models.AppleMappingResponse>): void;
    get(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppleMappingResponse>): void;


    /**
     * Delete mapping of apple app to an existing app in apple store.
     *
     * @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<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Delete mapping of apple app to an existing app in apple store.
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    deleteMethod(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(appName: string, ownerName: string, callback: ServiceCallback<void>): void;
    deleteMethod(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Create a mapping for an existing app in apple store for the specified
     * application.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} body The apple app mapping object
     *
     * @param {string} body.serviceConnectionId Id for the shared service
     * connection. In case of Apple AppStore, this connection will be used to
     * create and connect to the Apple AppStore in Mobile Center.
     *
     * @param {string} [body.appleId] ID of the apple application in apple store,
     * takes precedence over bundle_identifier when both are provided
     *
     * @param {string} [body.bundleIdentifier] Bundle Identifier of the apple
     * package
     *
     * @param {string} body.teamIdentifier ID of the Team associated with the app
     * in apple store
     *
     * @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<AppleMappingResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(appName: string, body: models.AppleMappingRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppleMappingResponse>>;

    /**
     * Create a mapping for an existing app in apple store for the specified
     * application.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} body The apple app mapping object
     *
     * @param {string} body.serviceConnectionId Id for the shared service
     * connection. In case of Apple AppStore, this connection will be used to
     * create and connect to the Apple AppStore in Mobile Center.
     *
     * @param {string} [body.appleId] ID of the apple application in apple store,
     * takes precedence over bundle_identifier when both are provided
     *
     * @param {string} [body.bundleIdentifier] Bundle Identifier of the apple
     * package
     *
     * @param {string} body.teamIdentifier ID of the Team associated with the app
     * in apple store
     *
     * @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 {AppleMappingResponse} - 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.
     *
     *                      {AppleMappingResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AppleMappingResponse} 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, body: models.AppleMappingRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppleMappingResponse>;
    create(appName: string, body: models.AppleMappingRequest, ownerName: string, callback: ServiceCallback<models.AppleMappingResponse>): void;
    create(appName: string, body: models.AppleMappingRequest, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppleMappingResponse>): void;


    /**
     * Fetch all apple test flight groups
     *
     * @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.
     */
    testFlightGroupsWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AppleTestFlightGroupsResponse[]>>;

    /**
     * Fetch all apple test flight groups
     *
     * @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.
     */
    testFlightGroups(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AppleTestFlightGroupsResponse[]>;
    testFlightGroups(appName: string, ownerName: string, callback: ServiceCallback<models.AppleTestFlightGroupsResponse[]>): void;
    testFlightGroups(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AppleTestFlightGroupsResponse[]>): void;
}

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


    /**
     * Returns all devices associated with the given distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.releaseId] when provided, gets the provisioning
     * state of the devices owned by users of this distribution group when compared
     * to the provided release.
     *
     * @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, distributionGroupName: string, ownerName: string, options?: { releaseId? : number, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DeviceInfoResponse[]>>;

    /**
     * Returns all devices associated with the given distribution group
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.releaseId] when provided, gets the provisioning
     * state of the devices owned by users of this distribution group when compared
     * to the provided release.
     *
     * @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, distributionGroupName: string, ownerName: string, options?: { releaseId? : number, customHeaders? : { [headerName: string]: string; } }): Promise<models.DeviceInfoResponse[]>;
    list(appName: string, distributionGroupName: string, ownerName: string, callback: ServiceCallback<models.DeviceInfoResponse[]>): void;
    list(appName: string, distributionGroupName: string, ownerName: string, options: { releaseId? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeviceInfoResponse[]>): void;


    /**
     * Returns all devices associated with the given distribution group.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {array} [options.udids] multiple UDIDs which should be part of the
     * resulting CSV.
     *
     * @param {boolean} [options.unprovisionedOnly] when true, filters out
     * provisioned devices
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listCsvFormatWithHttpOperationResponse(appName: string, distributionGroupName: string, ownerName: string, options?: { udids? : string[], unprovisionedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Returns all devices associated with the given distribution group.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {array} [options.udids] multiple UDIDs which should be part of the
     * resulting CSV.
     *
     * @param {boolean} [options.unprovisionedOnly] when true, filters out
     * provisioned devices
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    listCsvFormat(appName: string, distributionGroupName: string, ownerName: string, options?: { udids? : string[], unprovisionedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    listCsvFormat(appName: string, distributionGroupName: string, ownerName: string, callback: ServiceCallback<void>): void;
    listCsvFormat(appName: string, distributionGroupName: string, ownerName: string, options: { udids? : string[], unprovisionedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Returns the resign status to the caller
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} resignId The ID of the resign operation
     *
     * @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<ResignStatus>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getUpdateDevicesStatusWithHttpOperationResponse(appName: string, distributionGroupName: string, ownerName: string, resignId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ResignStatus>>;

    /**
     * Returns the resign status to the caller
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} resignId The ID of the resign operation
     *
     * @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 {ResignStatus} - 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.
     *
     *                      {ResignStatus} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ResignStatus} 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.
     */
    getUpdateDevicesStatus(appName: string, distributionGroupName: string, ownerName: string, resignId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ResignStatus>;
    getUpdateDevicesStatus(appName: string, distributionGroupName: string, ownerName: string, resignId: string, callback: ServiceCallback<models.ResignStatus>): void;
    getUpdateDevicesStatus(appName: string, distributionGroupName: string, ownerName: string, resignId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResignStatus>): void;


    /**
     * Returns the resign status to the caller
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} releaseId The ID of the release.
     *
     * @param {string} resignId The ID of the resign operation.
     *
     * @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<ResignStatus>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getUpdateDevicesStatus1WithHttpOperationResponse(appName: string, ownerName: string, releaseId: string, resignId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ResignStatus>>;

    /**
     * Returns the resign status to the caller
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} releaseId The ID of the release.
     *
     * @param {string} resignId The ID of the resign operation.
     *
     * @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 {ResignStatus} - 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.
     *
     *                      {ResignStatus} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ResignStatus} 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.
     */
    getUpdateDevicesStatus1(appName: string, ownerName: string, releaseId: string, resignId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ResignStatus>;
    getUpdateDevicesStatus1(appName: string, ownerName: string, releaseId: string, resignId: string, callback: ServiceCallback<models.ResignStatus>): void;
    getUpdateDevicesStatus1(appName: string, ownerName: string, releaseId: string, resignId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ResignStatus>): void;


    /**
     * Returns all devices associated with the given user.
     *
     * @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.
     */
    userDevicesListWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DeviceInfoResponse[]>>;

    /**
     * Returns all devices associated with the given user.
     *
     * @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.
     */
    userDevicesList(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DeviceInfoResponse[]>;
    userDevicesList(callback: ServiceCallback<models.DeviceInfoResponse[]>): void;
    userDevicesList(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeviceInfoResponse[]>): void;


    /**
     * Returns the device details.
     *
     * @param {string} deviceUdid The UDID of the device
     *
     * @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<DeviceInfoResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deviceDetailsWithHttpOperationResponse(deviceUdid: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DeviceInfoResponse>>;

    /**
     * Returns the device details.
     *
     * @param {string} deviceUdid The UDID of the device
     *
     * @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 {DeviceInfoResponse} - 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.
     *
     *                      {DeviceInfoResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DeviceInfoResponse} 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.
     */
    deviceDetails(deviceUdid: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DeviceInfoResponse>;
    deviceDetails(deviceUdid: string, callback: ServiceCallback<models.DeviceInfoResponse>): void;
    deviceDetails(deviceUdid: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeviceInfoResponse>): void;


    /**
     * Removes an existing device from a user
     *
     * @param {string} deviceUdid The UDID of the device
     *
     * @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<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    removeUserDeviceWithHttpOperationResponse(deviceUdid: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Removes an existing device from a user
     *
     * @param {string} deviceUdid The UDID of the device
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    removeUserDevice(deviceUdid: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    removeUserDevice(deviceUdid: string, callback: ServiceCallback<void>): void;
    removeUserDevice(deviceUdid: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Registers a user for an existing device
     *
     * @param {object} body The device info.
     *
     * @param {string} body.udid The Unique Device IDentifier of the device
     *
     * @param {string} body.model The model identifier of the device, in the format
     * iDeviceM,N
     *
     * @param {string} [body.osBuild] The build number of the last known OS version
     * running on the device
     *
     * @param {string} [body.osVersion] The last known OS version running on the
     * device
     *
     * @param {string} [body.serial] The device's serial number. Always empty or
     * undefined at present.
     *
     * @param {string} [body.imei] The device's International Mobile Equipment
     * Identity number. Always empty or undefined at present.
     *
     * @param {string} [body.ownerId] The user ID of the device owner.
     *
     * @param {string} userId The ID of the user
     *
     * @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<DeviceInfoResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    registerUserForDeviceWithHttpOperationResponse(body: models.DeviceInfoRequest, userId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DeviceInfoResponse>>;

    /**
     * Registers a user for an existing device
     *
     * @param {object} body The device info.
     *
     * @param {string} body.udid The Unique Device IDentifier of the device
     *
     * @param {string} body.model The model identifier of the device, in the format
     * iDeviceM,N
     *
     * @param {string} [body.osBuild] The build number of the last known OS version
     * running on the device
     *
     * @param {string} [body.osVersion] The last known OS version running on the
     * device
     *
     * @param {string} [body.serial] The device's serial number. Always empty or
     * undefined at present.
     *
     * @param {string} [body.imei] The device's International Mobile Equipment
     * Identity number. Always empty or undefined at present.
     *
     * @param {string} [body.ownerId] The user ID of the device owner.
     *
     * @param {string} userId The ID of the user
     *
     * @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 {DeviceInfoResponse} - 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.
     *
     *                      {DeviceInfoResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link DeviceInfoResponse} 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.
     */
    registerUserForDevice(body: models.DeviceInfoRequest, userId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DeviceInfoResponse>;
    registerUserForDevice(body: models.DeviceInfoRequest, userId: string, callback: ServiceCallback<models.DeviceInfoResponse>): void;
    registerUserForDevice(body: models.DeviceInfoRequest, userId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DeviceInfoResponse>): void;
}

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


    /**
     * Return basic information about distributed releases in a given distribution
     * group.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @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.
     */
    listByDistributionGroupWithHttpOperationResponse(appName: string, distributionGroupName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DistributionGroupRelease[]>>;

    /**
     * Return basic information about distributed releases in a given distribution
     * group.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @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.
     */
    listByDistributionGroup(appName: string, distributionGroupName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.DistributionGroupRelease[]>;
    listByDistributionGroup(appName: string, distributionGroupName: string, ownerName: string, callback: ServiceCallback<models.DistributionGroupRelease[]>): void;
    listByDistributionGroup(appName: string, distributionGroupName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DistributionGroupRelease[]>): void;


    /**
     * Return detailed information about a distributed release in a given
     * distribution group.
     *
     * @param {string} appName The name of the app
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the app owner
     *
     * @param {string} releaseId Only supports the constant `latest`, specific IDs
     * are not supported. `latest` will return the latest release in the
     * distribution group.
     *
     * @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<ReleaseDetailsResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getLatestByDistributionGroupWithHttpOperationResponse(appName: string, distributionGroupName: string, ownerName: string, releaseId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleaseDetailsResponse>>;

    /**
     * Return detailed information about a distributed release in a given
     * distribution group.
     *
     * @param {string} appName The name of the app
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the app owner
     *
     * @param {string} releaseId Only supports the constant `latest`, specific IDs
     * are not supported. `latest` will return the latest release in the
     * distribution group.
     *
     * @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 {ReleaseDetailsResponse} - 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.
     *
     *                      {ReleaseDetailsResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleaseDetailsResponse} 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.
     */
    getLatestByDistributionGroup(appName: string, distributionGroupName: string, ownerName: string, releaseId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ReleaseDetailsResponse>;
    getLatestByDistributionGroup(appName: string, distributionGroupName: string, ownerName: string, releaseId: string, callback: ServiceCallback<models.ReleaseDetailsResponse>): void;
    getLatestByDistributionGroup(appName: string, distributionGroupName: string, ownerName: string, releaseId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleaseDetailsResponse>): void;


    /**
     * Deletes a release with id 'release_id' in a given distribution group.
     *
     * @param {string} appName The name of the app
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the app owner
     *
     * @param {number} releaseId The ID identifying the unique release.
     *
     * @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<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteWithDistributionGroupIdWithHttpOperationResponse(appName: string, distributionGroupName: string, ownerName: string, releaseId: number, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes a release with id 'release_id' in a given distribution group.
     *
     * @param {string} appName The name of the app
     *
     * @param {string} distributionGroupName The name of the distribution group.
     *
     * @param {string} ownerName The name of the app owner
     *
     * @param {number} releaseId The ID identifying the unique release.
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    deleteWithDistributionGroupId(appName: string, distributionGroupName: string, ownerName: string, releaseId: number, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteWithDistributionGroupId(appName: string, distributionGroupName: string, ownerName: string, releaseId: number, callback: ServiceCallback<void>): void;
    deleteWithDistributionGroupId(appName: string, distributionGroupName: string, ownerName: string, releaseId: number, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Get the latest release from every distribution group associated with an
     * 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.
     */
    listLatestWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BasicReleaseDetailsResponse[]>>;

    /**
     * Get the latest release from every distribution group associated with an
     * 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.
     */
    listLatest(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.BasicReleaseDetailsResponse[]>;
    listLatest(appName: string, ownerName: string, callback: ServiceCallback<models.BasicReleaseDetailsResponse[]>): void;
    listLatest(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BasicReleaseDetailsResponse[]>): void;


    /**
     * Return basic information about releases.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.publishedOnly] when *true*, filters out releases
     * that were uploaded but were never distributed. Releases that under deleted
     * distribution groups will not be filtered out.
     *
     * @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?: { publishedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BasicReleaseDetailsResponse[]>>;

    /**
     * Return basic information about releases.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.publishedOnly] when *true*, filters out releases
     * that were uploaded but were never distributed. Releases that under deleted
     * distribution groups will not be filtered out.
     *
     * @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?: { publishedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<models.BasicReleaseDetailsResponse[]>;
    list(appName: string, ownerName: string, callback: ServiceCallback<models.BasicReleaseDetailsResponse[]>): void;
    list(appName: string, ownerName: string, options: { publishedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BasicReleaseDetailsResponse[]>): void;


    /**
     * Return detailed information about releases avaiable to a tester.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.publishedOnly] when *true*, filters out releases
     * that were uploaded but were never distributed. Releases that under deleted
     * distribution groups will not be filtered out.
     *
     * @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.
     */
    availableToTesterWithHttpOperationResponse(appName: string, ownerName: string, options?: { publishedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.BasicReleaseDetailsResponse[]>>;

    /**
     * Return detailed information about releases avaiable to a tester.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.publishedOnly] when *true*, filters out releases
     * that were uploaded but were never distributed. Releases that under deleted
     * distribution groups will not be filtered out.
     *
     * @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.
     */
    availableToTester(appName: string, ownerName: string, options?: { publishedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<models.BasicReleaseDetailsResponse[]>;
    availableToTester(appName: string, ownerName: string, callback: ServiceCallback<models.BasicReleaseDetailsResponse[]>): void;
    availableToTester(appName: string, ownerName: string, options: { publishedOnly? : boolean, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.BasicReleaseDetailsResponse[]>): void;


    /**
     * Get a release with id `release_id`. If `release_id` is `latest`, return the
     * latest release that was distributed to the current user (from all the
     * distribution groups).
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} releaseId The ID of the release, or `latest` to get the
     * latest release from all the distribution groups assigned to the current
     * user.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.udid] when supplied, this call will also check if
     * the given UDID is provisioned. Will be ignored for non-iOS platforms. The
     * value will be returned in the property is_udid_provisioned.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<ReleaseDetailsResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getLatestByUserWithHttpOperationResponse(appName: string, ownerName: string, releaseId: string, options?: { udid? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleaseDetailsResponse>>;

    /**
     * Get a release with id `release_id`. If `release_id` is `latest`, return the
     * latest release that was distributed to the current user (from all the
     * distribution groups).
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} releaseId The ID of the release, or `latest` to get the
     * latest release from all the distribution groups assigned to the current
     * user.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.udid] when supplied, this call will also check if
     * the given UDID is provisioned. Will be ignored for non-iOS platforms. The
     * value will be returned in the property is_udid_provisioned.
     *
     * @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 {ReleaseDetailsResponse} - 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.
     *
     *                      {ReleaseDetailsResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleaseDetailsResponse} 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.
     */
    getLatestByUser(appName: string, ownerName: string, releaseId: string, options?: { udid? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.ReleaseDetailsResponse>;
    getLatestByUser(appName: string, ownerName: string, releaseId: string, callback: ServiceCallback<models.ReleaseDetailsResponse>): void;
    getLatestByUser(appName: string, ownerName: string, releaseId: string, options: { udid? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleaseDetailsResponse>): void;


    /**
     * Updates a release.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} body The release information.
     *
     * @param {string} [body.distributionGroupName] OBSOLETE. Will be removed in
     * future releases - use destinations instead. Name of a distribution group.
     * The release will be associated with this distribution group. If the
     * distribution group doesn't exist a 400 is returned. If both distribution
     * group name and id are passed, the id is taking precedence.
     *
     *
     * @param {string} [body.distributionGroupId] OBSOLETE. Will be removed in
     * future releases - use destinations instead. Id of a distribution group. The
     * release will be associated with this distribution group. If the distribution
     * group doesn't exist a 400 is returned. If both distribution group name and
     * id are passed, the id is taking precedence.
     *
     *
     * @param {string} [body.destinationName] OBSOLETE. Will be removed in future
     * releases - use destinations instead. Name of a destination. The release will
     * be associated with this destination. If the destination doesn't exist a 400
     * is returned. If both distribution group name and id are passed, the id is
     * taking precedence.
     *
     *
     * @param {string} [body.destinationId] OBSOLETE. Will be removed in future
     * releases - use destinations instead. Id of a destination. The release will
     * be associated with this destination. If the destination doesn't exist a 400
     * is returned. If both destination name and id are passed, the id is taking
     * precedence.
     *
     *
     * @param {string} [body.destinationType] Not used anymore.
     *
     * @param {string} [body.releaseNotes] Release notes for this release.
     *
     * @param {boolean} [body.mandatoryUpdate] A boolean which determines whether
     * this version should be a mandatory update or not.
     *
     * @param {array} [body.destinations] Distribute this release under the
     * following list of destinations (store groups or distribution groups).
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {number} releaseId The ID of the release
     *
     * @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<ReleaseUpdateResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    updateWithHttpOperationResponse(appName: string, body: models.ReleaseUpdateRequest, ownerName: string, releaseId: number, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleaseUpdateResponse>>;

    /**
     * Updates a release.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} body The release information.
     *
     * @param {string} [body.distributionGroupName] OBSOLETE. Will be removed in
     * future releases - use destinations instead. Name of a distribution group.
     * The release will be associated with this distribution group. If the
     * distribution group doesn't exist a 400 is returned. If both distribution
     * group name and id are passed, the id is taking precedence.
     *
     *
     * @param {string} [body.distributionGroupId] OBSOLETE. Will be removed in
     * future releases - use destinations instead. Id of a distribution group. The
     * release will be associated with this distribution group. If the distribution
     * group doesn't exist a 400 is returned. If both distribution group name and
     * id are passed, the id is taking precedence.
     *
     *
     * @param {string} [body.destinationName] OBSOLETE. Will be removed in future
     * releases - use destinations instead. Name of a destination. The release will
     * be associated with this destination. If the destination doesn't exist a 400
     * is returned. If both distribution group name and id are passed, the id is
     * taking precedence.
     *
     *
     * @param {string} [body.destinationId] OBSOLETE. Will be removed in future
     * releases - use destinations instead. Id of a destination. The release will
     * be associated with this destination. If the destination doesn't exist a 400
     * is returned. If both destination name and id are passed, the id is taking
     * precedence.
     *
     *
     * @param {string} [body.destinationType] Not used anymore.
     *
     * @param {string} [body.releaseNotes] Release notes for this release.
     *
     * @param {boolean} [body.mandatoryUpdate] A boolean which determines whether
     * this version should be a mandatory update or not.
     *
     * @param {array} [body.destinations] Distribute this release under the
     * following list of destinations (store groups or distribution groups).
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {number} releaseId The ID of the release
     *
     * @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 {ReleaseUpdateResponse} - 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.
     *
     *                      {ReleaseUpdateResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleaseUpdateResponse} 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, body: models.ReleaseUpdateRequest, ownerName: string, releaseId: number, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ReleaseUpdateResponse>;
    update(appName: string, body: models.ReleaseUpdateRequest, ownerName: string, releaseId: number, callback: ServiceCallback<models.ReleaseUpdateResponse>): void;
    update(appName: string, body: models.ReleaseUpdateRequest, ownerName: string, releaseId: number, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleaseUpdateResponse>): void;


    /**
     * Deletes a release.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {number} releaseId The ID of the release
     *
     * @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<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, ownerName: string, releaseId: number, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes a release.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {number} releaseId The ID of the release
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    deleteMethod(appName: string, ownerName: string, releaseId: number, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(appName: string, ownerName: string, releaseId: number, callback: ServiceCallback<void>): void;
    deleteMethod(appName: string, ownerName: string, releaseId: number, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Returns the manifest.plist in XML format for installing the release on a
     * device. Only available for iOS.
     *
     * @param {string} appId The ID of the application
     *
     * @param {number} releaseId The release_id
     *
     * @param {string} token A hash that authorizes the download if it matches the
     * release info.
     *
     * @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<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getIosManifestWithHttpOperationResponse(appId: string, releaseId: number, token: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Returns the manifest.plist in XML format for installing the release on a
     * device. Only available for iOS.
     *
     * @param {string} appId The ID of the application
     *
     * @param {number} releaseId The release_id
     *
     * @param {string} token A hash that authorizes the download if it matches the
     * release info.
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    getIosManifest(appId: string, releaseId: number, token: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    getIosManifest(appId: string, releaseId: number, token: string, callback: ServiceCallback<void>): void;
    getIosManifest(appId: string, releaseId: number, token: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Get a release with 'latest' for the given public group.
     *
     * @param {string} appSecret The secret of the target application
     *
     * @param {string} distributionGroupId the id for destination
     *
     * @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<ReleaseDetailsResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getLatestByPublicDistributionGroupWithHttpOperationResponse(appSecret: string, distributionGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleaseDetailsResponse>>;

    /**
     * Get a release with 'latest' for the given public group.
     *
     * @param {string} appSecret The secret of the target application
     *
     * @param {string} distributionGroupId the id for destination
     *
     * @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 {ReleaseDetailsResponse} - 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.
     *
     *                      {ReleaseDetailsResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleaseDetailsResponse} 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.
     */
    getLatestByPublicDistributionGroup(appSecret: string, distributionGroupId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ReleaseDetailsResponse>;
    getLatestByPublicDistributionGroup(appSecret: string, distributionGroupId: string, callback: ServiceCallback<models.ReleaseDetailsResponse>): void;
    getLatestByPublicDistributionGroup(appSecret: string, distributionGroupId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleaseDetailsResponse>): void;


    /**
     * Get a release with hash 'release_hash' or the 'latest' from all the
     * distribution groups assigned to the current user.
     *
     * @param {string} appSecret The secret of the target application
     *
     * @param {string} releaseHash The hash of the release or 'latest' to get the
     * latest release from all the distribution groups assigned to the current
     * user.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.udid] When passing `udid` in the query string, a
     * provisioning check for the given device ID will be done. Will be ignored for
     * non-iOS platforms.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<ReleaseDetailsResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getLatestByHashWithHttpOperationResponse(appSecret: string, releaseHash: string, options?: { udid? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleaseDetailsResponse>>;

    /**
     * Get a release with hash 'release_hash' or the 'latest' from all the
     * distribution groups assigned to the current user.
     *
     * @param {string} appSecret The secret of the target application
     *
     * @param {string} releaseHash The hash of the release or 'latest' to get the
     * latest release from all the distribution groups assigned to the current
     * user.
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.udid] When passing `udid` in the query string, a
     * provisioning check for the given device ID will be done. Will be ignored for
     * non-iOS platforms.
     *
     * @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 {ReleaseDetailsResponse} - 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.
     *
     *                      {ReleaseDetailsResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleaseDetailsResponse} 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.
     */
    getLatestByHash(appSecret: string, releaseHash: string, options?: { udid? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.ReleaseDetailsResponse>;
    getLatestByHash(appSecret: string, releaseHash: string, callback: ServiceCallback<models.ReleaseDetailsResponse>): void;
    getLatestByHash(appSecret: string, releaseHash: string, options: { udid? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleaseDetailsResponse>): void;
}

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


    /**
     * Create a new external store for the specified application.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} body The store request
     *
     * @param {string} [body.type] store Type. Possible values include:
     * 'googleplay', 'intune', 'windows', 'apple'
     *
     * @param {string} [body.name] name of the store. In case of googleplay,
     * windows and Apple store this is fixed to Production.
     *
     * @param {string} [body.track] track of the store. Can be production, alpha &
     * beta for googleplay. Can be production, testflight-internal &
     * testflight-external for Apple Store. Can be production for Windows Store.
     * Possible values include: 'production', 'alpha', 'beta',
     * 'testflight-internal', 'testflight-external'
     *
     * @param {object} [body.intuneDetails]
     *
     * @param {object} [body.intuneDetails.secretJson]
     *
     * @param {string} [body.intuneDetails.secretJson.idToken] the id token of user
     *
     * @param {string} [body.intuneDetails.secretJson.refreshToken] the refresh
     * token for user
     *
     * @param {string} [body.intuneDetails.secretJson.refreshTokenExpiry] the
     * expiry of refresh token
     *
     * @param {object} [body.intuneDetails.targetAudience]
     *
     * @param {string} [body.intuneDetails.targetAudience.name] display name for
     * the target audience/group
     *
     * @param {object} [body.intuneDetails.appCategory]
     *
     * @param {string} [body.intuneDetails.appCategory.name] display name for the
     * app category
     *
     * @param {string} [body.intuneDetails.tenantId] tenant id of the intune store
     *
     * @param {object} [body.windowsDetails]
     *
     * @param {object} [body.windowsDetails.secretJson]
     *
     * @param {string} [body.windowsDetails.secretJson.idToken] the id token of
     * user
     *
     * @param {string} [body.windowsDetails.secretJson.refreshToken] the refresh
     * token for user
     *
     * @param {string} [body.windowsDetails.secretJson.refreshTokenExpiry] the
     * expiry of refresh token
     *
     * @param {string} [body.windowsDetails.tenantId] tenant id the user account
     * belongs to
     *
     * @param {string} [body.serviceConnectionId] Id for the shared service
     * connection. In case of Apple AppStore, this connection will be used to
     * create and connect to the Apple AppStore in Mobile Center.
     *
     * @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<ExternalStoreResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(appName: string, body: models.ExternalStoreRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ExternalStoreResponse>>;

    /**
     * Create a new external store for the specified application.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} body The store request
     *
     * @param {string} [body.type] store Type. Possible values include:
     * 'googleplay', 'intune', 'windows', 'apple'
     *
     * @param {string} [body.name] name of the store. In case of googleplay,
     * windows and Apple store this is fixed to Production.
     *
     * @param {string} [body.track] track of the store. Can be production, alpha &
     * beta for googleplay. Can be production, testflight-internal &
     * testflight-external for Apple Store. Can be production for Windows Store.
     * Possible values include: 'production', 'alpha', 'beta',
     * 'testflight-internal', 'testflight-external'
     *
     * @param {object} [body.intuneDetails]
     *
     * @param {object} [body.intuneDetails.secretJson]
     *
     * @param {string} [body.intuneDetails.secretJson.idToken] the id token of user
     *
     * @param {string} [body.intuneDetails.secretJson.refreshToken] the refresh
     * token for user
     *
     * @param {string} [body.intuneDetails.secretJson.refreshTokenExpiry] the
     * expiry of refresh token
     *
     * @param {object} [body.intuneDetails.targetAudience]
     *
     * @param {string} [body.intuneDetails.targetAudience.name] display name for
     * the target audience/group
     *
     * @param {object} [body.intuneDetails.appCategory]
     *
     * @param {string} [body.intuneDetails.appCategory.name] display name for the
     * app category
     *
     * @param {string} [body.intuneDetails.tenantId] tenant id of the intune store
     *
     * @param {object} [body.windowsDetails]
     *
     * @param {object} [body.windowsDetails.secretJson]
     *
     * @param {string} [body.windowsDetails.secretJson.idToken] the id token of
     * user
     *
     * @param {string} [body.windowsDetails.secretJson.refreshToken] the refresh
     * token for user
     *
     * @param {string} [body.windowsDetails.secretJson.refreshTokenExpiry] the
     * expiry of refresh token
     *
     * @param {string} [body.windowsDetails.tenantId] tenant id the user account
     * belongs to
     *
     * @param {string} [body.serviceConnectionId] Id for the shared service
     * connection. In case of Apple AppStore, this connection will be used to
     * create and connect to the Apple AppStore in Mobile Center.
     *
     * @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 {ExternalStoreResponse} - 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.
     *
     *                      {ExternalStoreResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ExternalStoreResponse} 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, body: models.ExternalStoreRequest, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ExternalStoreResponse>;
    create(appName: string, body: models.ExternalStoreRequest, ownerName: string, callback: ServiceCallback<models.ExternalStoreResponse>): void;
    create(appName: string, body: models.ExternalStoreRequest, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExternalStoreResponse>): void;


    /**
     * Get all the store details from Storage store table for a particular
     * 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.
     */
    listWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ExternalStoreResponse[]>>;

    /**
     * Get all the store details from Storage store table for a particular
     * 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.
     */
    list(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ExternalStoreResponse[]>;
    list(appName: string, ownerName: string, callback: ServiceCallback<models.ExternalStoreResponse[]>): void;
    list(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExternalStoreResponse[]>): void;


    /**
     * Return the store details for specified store name.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} storeName The id of the store
     *
     * @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<ExternalStoreResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(appName: string, ownerName: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ExternalStoreResponse>>;

    /**
     * Return the store details for specified store name.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} storeName The id of the store
     *
     * @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 {ExternalStoreResponse} - 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.
     *
     *                      {ExternalStoreResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ExternalStoreResponse} 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, ownerName: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ExternalStoreResponse>;
    get(appName: string, ownerName: string, storeName: string, callback: ServiceCallback<models.ExternalStoreResponse>): void;
    get(appName: string, ownerName: string, storeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ExternalStoreResponse>): void;


    /**
     * delete the store based on specific store name.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} storeName The name of the store
     *
     * @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<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, ownerName: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * delete the store based on specific store name.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} storeName The name of the store
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    deleteMethod(appName: string, ownerName: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(appName: string, ownerName: string, storeName: string, callback: ServiceCallback<void>): void;
    deleteMethod(appName: string, ownerName: string, storeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}

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


    /**
     * Returns the latest release published in a store.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} storeName The name of the store
     *
     * @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<Object>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getLatestWithHttpOperationResponse(appName: string, ownerName: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<any>>;

    /**
     * Returns the latest release published in a store.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} storeName The name of the store
     *
     * @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 {Object} - 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.
     *
     *                      {Object} [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.
     */
    getLatest(appName: string, ownerName: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<any>;
    getLatest(appName: string, ownerName: string, storeName: string, callback: ServiceCallback<any>): void;
    getLatest(appName: string, ownerName: string, storeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<any>): void;


    /**
     * Return all releases published  in a store
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} storeName The name of the store
     *
     * @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.
     */
    listWithHttpOperationResponse(appName: string, ownerName: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.StoresBasicReleaseDetails[]>>;

    /**
     * Return all releases published  in a store
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} storeName The name of the store
     *
     * @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.
     */
    list(appName: string, ownerName: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.StoresBasicReleaseDetails[]>;
    list(appName: string, ownerName: string, storeName: string, callback: ServiceCallback<models.StoresBasicReleaseDetails[]>): void;
    list(appName: string, ownerName: string, storeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.StoresBasicReleaseDetails[]>): void;


    /**
     * Return releases published in a store for releaseId and storeId
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} releaseId The name of the store
     *
     * @param {string} storeName The name of the store
     *
     * @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<Object>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getWithHttpOperationResponse(appName: string, ownerName: string, releaseId: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<any>>;

    /**
     * Return releases published in a store for releaseId and storeId
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} releaseId The name of the store
     *
     * @param {string} storeName The name of the store
     *
     * @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 {Object} - 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.
     *
     *                      {Object} [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.
     */
    get(appName: string, ownerName: string, releaseId: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<any>;
    get(appName: string, ownerName: string, releaseId: string, storeName: string, callback: ServiceCallback<any>): void;
    get(appName: string, ownerName: string, releaseId: string, storeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<any>): void;


    /**
     * delete the release with release Id
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} releaseId The id of the release
     *
     * @param {string} storeName The name of the store
     *
     * @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<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deleteMethodWithHttpOperationResponse(appName: string, ownerName: string, releaseId: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * delete the release with release Id
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} releaseId The id of the release
     *
     * @param {string} storeName The name of the store
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    deleteMethod(appName: string, ownerName: string, releaseId: string, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteMethod(appName: string, ownerName: string, releaseId: string, storeName: string, callback: ServiceCallback<void>): void;
    deleteMethod(appName: string, ownerName: string, releaseId: string, storeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Return the Error Details of release which failed in publishing.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {number} releaseId The id of the release
     *
     * @param {string} storeName The name of the store
     *
     * @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<ReleasePublishErrorResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getPublishErrorWithHttpOperationResponse(appName: string, ownerName: string, releaseId: number, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleasePublishErrorResponse>>;

    /**
     * Return the Error Details of release which failed in publishing.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {number} releaseId The id of the release
     *
     * @param {string} storeName The name of the store
     *
     * @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 {ReleasePublishErrorResponse} - 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.
     *
     *                      {ReleasePublishErrorResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleasePublishErrorResponse} 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.
     */
    getPublishError(appName: string, ownerName: string, releaseId: number, storeName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ReleasePublishErrorResponse>;
    getPublishError(appName: string, ownerName: string, releaseId: number, storeName: string, callback: ServiceCallback<models.ReleasePublishErrorResponse>): void;
    getPublishError(appName: string, ownerName: string, releaseId: number, storeName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleasePublishErrorResponse>): void;
}

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


    /**
     * Begins the upload process for a new release for the specified 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<ReleaseUploadBeginResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleaseUploadBeginResponse>>;

    /**
     * Begins the upload process for a new release for the specified 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 {ReleaseUploadBeginResponse} - 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.
     *
     *                      {ReleaseUploadBeginResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleaseUploadBeginResponse} 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.ReleaseUploadBeginResponse>;
    create(appName: string, ownerName: string, callback: ServiceCallback<models.ReleaseUploadBeginResponse>): void;
    create(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleaseUploadBeginResponse>): void;


    /**
     * Commits or aborts the upload process for a release for the specified
     * application
     *
     * @param {string} appName The name of the application
     *
     * @param {object} body The release information
     *
     * @param {string} body.status The desired operation for the upload. Possible
     * values include: 'committed', 'aborted'
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} uploadId The ID of the upload
     *
     * @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<ReleaseUploadEndResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    completeWithHttpOperationResponse(appName: string, body: models.ReleaseUploadEndRequest, ownerName: string, uploadId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleaseUploadEndResponse>>;

    /**
     * Commits or aborts the upload process for a release for the specified
     * application
     *
     * @param {string} appName The name of the application
     *
     * @param {object} body The release information
     *
     * @param {string} body.status The desired operation for the upload. Possible
     * values include: 'committed', 'aborted'
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} uploadId The ID of the upload
     *
     * @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 {ReleaseUploadEndResponse} - 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.
     *
     *                      {ReleaseUploadEndResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleaseUploadEndResponse} 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.
     */
    complete(appName: string, body: models.ReleaseUploadEndRequest, ownerName: string, uploadId: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ReleaseUploadEndResponse>;
    complete(appName: string, body: models.ReleaseUploadEndRequest, ownerName: string, uploadId: string, callback: ServiceCallback<models.ReleaseUploadEndResponse>): void;
    complete(appName: string, body: models.ReleaseUploadEndRequest, ownerName: string, uploadId: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleaseUploadEndResponse>): void;
}

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


    /**
     * Return information about the provisioning profile. Only available for iOS.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {number} releaseId The release_id
     *
     * @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<ProvisioningProfileResponse>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    profileWithHttpOperationResponse(appName: string, ownerName: string, releaseId: number, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ProvisioningProfileResponse>>;

    /**
     * Return information about the provisioning profile. Only available for iOS.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {number} releaseId The release_id
     *
     * @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 {ProvisioningProfileResponse} - 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.
     *
     *                      {ProvisioningProfileResponse} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ProvisioningProfileResponse} 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.
     */
    profile(appName: string, ownerName: string, releaseId: number, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ProvisioningProfileResponse>;
    profile(appName: string, ownerName: string, releaseId: number, callback: ServiceCallback<models.ProvisioningProfileResponse>): void;
    profile(appName: string, ownerName: string, releaseId: number, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ProvisioningProfileResponse>): void;
}

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


    /**
     * Notify download(s) for the provided distribution release(s).
     *
     * @param {string} appId The id of the app
     *
     * @param {object} body The install analytics request payload
     *
     * @param {array} [body.releases]
     *
     * @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<null>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    postWithHttpOperationResponse(appId: string, body: models.AnalyticsReleasesResponse, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Notify download(s) for the provided distribution release(s).
     *
     * @param {string} appId The id of the app
     *
     * @param {object} body The install analytics request payload
     *
     * @param {array} [body.releases]
     *
     * @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 {null} - 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.
     *
     *                      {null} [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.
     */
    post(appId: string, body: models.AnalyticsReleasesResponse, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    post(appId: string, body: models.AnalyticsReleasesResponse, callback: ServiceCallback<void>): void;
    post(appId: string, body: models.AnalyticsReleasesResponse, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
}

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


    /**
     * Return a list of applications that the user has tester permission to with
     * the latest release for each.
     *
     * @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.
     */
    latestreleasesWithHttpOperationResponse(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TesterAppWithReleaseResponse[]>>;

    /**
     * Return a list of applications that the user has tester permission to with
     * the latest release for each.
     *
     * @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.
     */
    latestreleases(options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.TesterAppWithReleaseResponse[]>;
    latestreleases(callback: ServiceCallback<models.TesterAppWithReleaseResponse[]>): void;
    latestreleases(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TesterAppWithReleaseResponse[]>): void;


    /**
     * Return a list of releases for a app a tester has access to.
     *
     * @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.
     */
    testerappreleasesWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.TesterAppRelease[]>>;

    /**
     * Return a list of releases for a app a tester has access to.
     *
     * @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.
     */
    testerappreleases(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.TesterAppRelease[]>;
    testerappreleases(appName: string, ownerName: string, callback: ServiceCallback<models.TesterAppRelease[]>): void;
    testerappreleases(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.TesterAppRelease[]>): void;
}
