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


    /**
     * Count of active devices by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<ActiveDeviceCounts>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    deviceCountsWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ActiveDeviceCounts>>;

    /**
     * Count of active devices by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {ActiveDeviceCounts} - 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.
     *
     *                      {ActiveDeviceCounts} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ActiveDeviceCounts} 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.
     */
    deviceCounts(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.ActiveDeviceCounts>;
    deviceCounts(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.ActiveDeviceCounts>): void;
    deviceCounts(appName: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ActiveDeviceCounts>): void;


    /**
     * Get list of audiences.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.includeDisabled] Include disabled audience
     * definitions
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AudienceListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listAudiencesWithHttpOperationResponse(appName: string, ownerName: string, options?: { includeDisabled? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AudienceListResult>>;

    /**
     * Get list of audiences.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {boolean} [options.includeDisabled] Include disabled audience
     * definitions
     *
     * @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 {AudienceListResult} - 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.
     *
     *                      {AudienceListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AudienceListResult} 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.
     */
    listAudiences(appName: string, ownerName: string, options?: { includeDisabled? : boolean, customHeaders? : { [headerName: string]: string; } }): Promise<models.AudienceListResult>;
    listAudiences(appName: string, ownerName: string, callback: ServiceCallback<models.AudienceListResult>): void;
    listAudiences(appName: string, ownerName: string, options: { includeDisabled? : boolean, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AudienceListResult>): void;


    /**
     * Tests audience definition.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} audience Audience definition
     *
     * @param {string} [audience.description] Audience description.
     *
     * @param {string} audience.definition Audience definition in OData format.
     *
     * @param {boolean} [audience.enabled]
     *
     * @param {object} [audience.customProperties] Custom properties used in the
     * definition.
     *
     * @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<AudienceTestResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    testAudienceWithHttpOperationResponse(appName: string, audience: models.AudienceDefinition, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AudienceTestResult>>;

    /**
     * Tests audience definition.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} audience Audience definition
     *
     * @param {string} [audience.description] Audience description.
     *
     * @param {string} audience.definition Audience definition in OData format.
     *
     * @param {boolean} [audience.enabled]
     *
     * @param {object} [audience.customProperties] Custom properties used in the
     * definition.
     *
     * @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 {AudienceTestResult} - 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.
     *
     *                      {AudienceTestResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AudienceTestResult} 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.
     */
    testAudience(appName: string, audience: models.AudienceDefinition, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AudienceTestResult>;
    testAudience(appName: string, audience: models.AudienceDefinition, ownerName: string, callback: ServiceCallback<models.AudienceTestResult>): void;
    testAudience(appName: string, audience: models.AudienceDefinition, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AudienceTestResult>): void;


    /**
     * Get list of custom properties.
     *
     * @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<AudienceDevicePropertiesListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listCustomPropertiesWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AudienceDevicePropertiesListResult>>;

    /**
     * Get list of custom properties.
     *
     * @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 {AudienceDevicePropertiesListResult} - 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.
     *
     *                      {AudienceDevicePropertiesListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AudienceDevicePropertiesListResult} 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.
     */
    listCustomProperties(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AudienceDevicePropertiesListResult>;
    listCustomProperties(appName: string, ownerName: string, callback: ServiceCallback<models.AudienceDevicePropertiesListResult>): void;
    listCustomProperties(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AudienceDevicePropertiesListResult>): void;


    /**
     * Get list of device properties.
     *
     * @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<AudienceDevicePropertiesListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listDevicePropertiesWithHttpOperationResponse(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AudienceDevicePropertiesListResult>>;

    /**
     * Get list of device properties.
     *
     * @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 {AudienceDevicePropertiesListResult} - 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.
     *
     *                      {AudienceDevicePropertiesListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AudienceDevicePropertiesListResult} 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.
     */
    listDeviceProperties(appName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.AudienceDevicePropertiesListResult>;
    listDeviceProperties(appName: string, ownerName: string, callback: ServiceCallback<models.AudienceDevicePropertiesListResult>): void;
    listDeviceProperties(appName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AudienceDevicePropertiesListResult>): void;


    /**
     * Get list of device property values.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} propertyName Device property
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.contains] Contains string
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AudienceDevicePropertyValuesListResult>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listDevicePropertyValuesWithHttpOperationResponse(appName: string, ownerName: string, propertyName: string, options?: { contains? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AudienceDevicePropertyValuesListResult>>;

    /**
     * Get list of device property values.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} propertyName Device property
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.contains] Contains string
     *
     * @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 {AudienceDevicePropertyValuesListResult} - 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.
     *
     *                      {AudienceDevicePropertyValuesListResult} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AudienceDevicePropertyValuesListResult} 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.
     */
    listDevicePropertyValues(appName: string, ownerName: string, propertyName: string, options?: { contains? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.AudienceDevicePropertyValuesListResult>;
    listDevicePropertyValues(appName: string, ownerName: string, propertyName: string, callback: ServiceCallback<models.AudienceDevicePropertyValuesListResult>): void;
    listDevicePropertyValues(appName: string, ownerName: string, propertyName: string, options: { contains? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AudienceDevicePropertyValuesListResult>): void;


    /**
     * Returns whether audience definition exists.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} audienceName The name of the audience
     *
     * @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.
     */
    audienceNameExistsWithHttpOperationResponse(appName: string, audienceName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Returns whether audience definition exists.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} audienceName The name of the audience
     *
     * @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.
     */
    audienceNameExists(appName: string, audienceName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    audienceNameExists(appName: string, audienceName: string, ownerName: string, callback: ServiceCallback<void>): void;
    audienceNameExists(appName: string, audienceName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Deletes audience definition.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} audienceName The name of the audience
     *
     * @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.
     */
    deleteAudienceWithHttpOperationResponse(appName: string, audienceName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Deletes audience definition.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} audienceName The name of the audience
     *
     * @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.
     */
    deleteAudience(appName: string, audienceName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    deleteAudience(appName: string, audienceName: string, ownerName: string, callback: ServiceCallback<void>): void;
    deleteAudience(appName: string, audienceName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Gets audience definition.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} audienceName The name of the audience
     *
     * @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<Audience>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    getAudienceWithHttpOperationResponse(appName: string, audienceName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Audience>>;

    /**
     * Gets audience definition.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} audienceName The name of the audience
     *
     * @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 {Audience} - 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.
     *
     *                      {Audience} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Audience} 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.
     */
    getAudience(appName: string, audienceName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.Audience>;
    getAudience(appName: string, audienceName: string, ownerName: string, callback: ServiceCallback<models.Audience>): void;
    getAudience(appName: string, audienceName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Audience>): void;


    /**
     * Creates or updates audience definition.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} audience Audience definition
     *
     * @param {string} [audience.description] Audience description.
     *
     * @param {string} audience.definition Audience definition in OData format.
     *
     * @param {boolean} [audience.enabled]
     *
     * @param {object} [audience.customProperties] Custom properties used in the
     * definition.
     *
     * @param {string} audienceName The name of the audience
     *
     * @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<Audience>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    createOrUpdateAudienceWithHttpOperationResponse(appName: string, audience: models.AudienceDefinition, audienceName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Audience>>;

    /**
     * Creates or updates audience definition.
     *
     * @param {string} appName The name of the application
     *
     * @param {object} audience Audience definition
     *
     * @param {string} [audience.description] Audience description.
     *
     * @param {string} audience.definition Audience definition in OData format.
     *
     * @param {boolean} [audience.enabled]
     *
     * @param {object} [audience.customProperties] Custom properties used in the
     * definition.
     *
     * @param {string} audienceName The name of the audience
     *
     * @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 {Audience} - 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.
     *
     *                      {Audience} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Audience} 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.
     */
    createOrUpdateAudience(appName: string, audience: models.AudienceDefinition, audienceName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.Audience>;
    createOrUpdateAudience(appName: string, audience: models.AudienceDefinition, audienceName: string, ownerName: string, callback: ServiceCallback<models.Audience>): void;
    createOrUpdateAudience(appName: string, audience: models.AudienceDefinition, audienceName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Audience>): void;


    /**
     * Count of crashes by day in the time range based the selected versions.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<CrashCounts>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    crashCountsMethodWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CrashCounts>>;

    /**
     * Count of crashes by day in the time range based the selected versions.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {CrashCounts} - 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.
     *
     *                      {CrashCounts} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link CrashCounts} 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.
     */
    crashCountsMethod(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.CrashCounts>;
    crashCountsMethod(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.CrashCounts>): void;
    crashCountsMethod(appName: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CrashCounts>): void;


    /**
     * Overall crashes and affected users count of the selected crash groups with
     * selected versions
     *
     * @param {string} appName The name of the application
     *
     * @param {object} crashGroups
     *
     * @param {array} crashGroups.crashGroups
     *
     * @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.
     */
    crashGroupsTotalsWithHttpOperationResponse(appName: string, crashGroups: models.CrashGroupContainer, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CrashesOverallItem[]>>;

    /**
     * Overall crashes and affected users count of the selected crash groups with
     * selected versions
     *
     * @param {string} appName The name of the application
     *
     * @param {object} crashGroups
     *
     * @param {array} crashGroups.crashGroups
     *
     * @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.
     */
    crashGroupsTotals(appName: string, crashGroups: models.CrashGroupContainer, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.CrashesOverallItem[]>;
    crashGroupsTotals(appName: string, crashGroups: models.CrashGroupContainer, ownerName: string, callback: ServiceCallback<models.CrashesOverallItem[]>): void;
    crashGroupsTotals(appName: string, crashGroups: models.CrashGroupContainer, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CrashesOverallItem[]>): void;


    /**
     * Count of crashes by day in the time range of the selected crash group with
     * selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashGroupId The id of the crash group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {string} version
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<CrashCounts>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    crashGroupCountsWithHttpOperationResponse(appName: string, crashGroupId: string, ownerName: string, start: Date|string, version: string, options?: { end? : Date, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CrashCounts>>;

    /**
     * Count of crashes by day in the time range of the selected crash group with
     * selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashGroupId The id of the crash group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {string} version
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @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 {CrashCounts} - 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.
     *
     *                      {CrashCounts} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link CrashCounts} 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.
     */
    crashGroupCounts(appName: string, crashGroupId: string, ownerName: string, start: Date|string, version: string, options?: { end? : Date, customHeaders? : { [headerName: string]: string; } }): Promise<models.CrashCounts>;
    crashGroupCounts(appName: string, crashGroupId: string, ownerName: string, start: Date|string, version: string, callback: ServiceCallback<models.CrashCounts>): void;
    crashGroupCounts(appName: string, crashGroupId: string, ownerName: string, start: Date|string, version: string, options: { end? : Date, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CrashCounts>): void;


    /**
     * top models of the selected crash group with selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashGroupId The id of the crash group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} version
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<CrashGroupModels>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    crashGroupModelCountsWithHttpOperationResponse(appName: string, crashGroupId: string, ownerName: string, version: string, options?: { top? : number, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CrashGroupModels>>;

    /**
     * top models of the selected crash group with selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashGroupId The id of the crash group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} version
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @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 {CrashGroupModels} - 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.
     *
     *                      {CrashGroupModels} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link CrashGroupModels} 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.
     */
    crashGroupModelCounts(appName: string, crashGroupId: string, ownerName: string, version: string, options?: { top? : number, customHeaders? : { [headerName: string]: string; } }): Promise<models.CrashGroupModels>;
    crashGroupModelCounts(appName: string, crashGroupId: string, ownerName: string, version: string, callback: ServiceCallback<models.CrashGroupModels>): void;
    crashGroupModelCounts(appName: string, crashGroupId: string, ownerName: string, version: string, options: { top? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CrashGroupModels>): void;


    /**
     * top OSes of the selected crash group with selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashGroupId The id of the crash group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} version
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<CrashGroupOperatingSystems>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    crashGroupOperatingSystemCountsWithHttpOperationResponse(appName: string, crashGroupId: string, ownerName: string, version: string, options?: { top? : number, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CrashGroupOperatingSystems>>;

    /**
     * top OSes of the selected crash group with selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashGroupId The id of the crash group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} version
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @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 {CrashGroupOperatingSystems} - 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.
     *
     *                      {CrashGroupOperatingSystems} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link CrashGroupOperatingSystems} 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.
     */
    crashGroupOperatingSystemCounts(appName: string, crashGroupId: string, ownerName: string, version: string, options?: { top? : number, customHeaders? : { [headerName: string]: string; } }): Promise<models.CrashGroupOperatingSystems>;
    crashGroupOperatingSystemCounts(appName: string, crashGroupId: string, ownerName: string, version: string, callback: ServiceCallback<models.CrashGroupOperatingSystems>): void;
    crashGroupOperatingSystemCounts(appName: string, crashGroupId: string, ownerName: string, version: string, options: { top? : number, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CrashGroupOperatingSystems>): void;


    /**
     * Overall crashes and affected users count of the selected crash group with
     * selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashGroupId The id of the crash group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} version
     *
     * @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<CrashOverall>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    crashGroupTotalsWithHttpOperationResponse(appName: string, crashGroupId: string, ownerName: string, version: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CrashOverall>>;

    /**
     * Overall crashes and affected users count of the selected crash group with
     * selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashGroupId The id of the crash group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {string} version
     *
     * @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 {CrashOverall} - 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.
     *
     *                      {CrashOverall} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link CrashOverall} 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.
     */
    crashGroupTotals(appName: string, crashGroupId: string, ownerName: string, version: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.CrashOverall>;
    crashGroupTotals(appName: string, crashGroupId: string, ownerName: string, version: string, callback: ServiceCallback<models.CrashOverall>): void;
    crashGroupTotals(appName: string, crashGroupId: string, ownerName: string, version: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CrashOverall>): void;


    /**
     * Percentage of crash-free device by day in the time range based on the
     * selected versions. Api will return -1 if crash devices is greater than
     * active devices
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<CrashFreeDevicePercentages>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    crashFreeDevicePercentagesMethodWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.CrashFreeDevicePercentages>>;

    /**
     * Percentage of crash-free device by day in the time range based on the
     * selected versions. Api will return -1 if crash devices is greater than
     * active devices
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {CrashFreeDevicePercentages} - 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.
     *
     *                      {CrashFreeDevicePercentages} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link CrashFreeDevicePercentages} 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.
     */
    crashFreeDevicePercentagesMethod(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.CrashFreeDevicePercentages>;
    crashFreeDevicePercentagesMethod(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.CrashFreeDevicePercentages>): void;
    crashFreeDevicePercentagesMethod(appName: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.CrashFreeDevicePercentages>): void;


    /**
     * Count of total downloads for the provided distribution releases.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} releases The releases to retrieve.
     *
     * @param {array} releases.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<ReleaseCounts>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    distributionReleaseCountsWithHttpOperationResponse(appName: string, ownerName: string, releases: models.GetReleasesContainer, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ReleaseCounts>>;

    /**
     * Count of total downloads for the provided distribution releases.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} releases The releases to retrieve.
     *
     * @param {array} releases.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 {ReleaseCounts} - 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.
     *
     *                      {ReleaseCounts} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ReleaseCounts} 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.
     */
    distributionReleaseCounts(appName: string, ownerName: string, releases: models.GetReleasesContainer, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ReleaseCounts>;
    distributionReleaseCounts(appName: string, ownerName: string, releases: models.GetReleasesContainer, callback: ServiceCallback<models.ReleaseCounts>): void;
    distributionReleaseCounts(appName: string, ownerName: string, releases: models.GetReleasesContainer, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ReleaseCounts>): void;


    /**
     * Delete the set of Events with the specified event names
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @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.
     */
    eventsDeleteLogsWithHttpOperationResponse(appName: string, eventName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Delete the set of Events with the specified event names
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @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.
     */
    eventsDeleteLogs(appName: string, eventName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    eventsDeleteLogs(appName: string, eventName: string, ownerName: string, callback: ServiceCallback<void>): void;
    eventsDeleteLogs(appName: string, eventName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Count of active events in the time range ordered by event.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.inlinecount] Controls whether or not to include a
     * count of all the items accross all pages. Possible values include:
     * 'allpages', 'none'
     *
     * @param {string} [options.orderby] controls the sorting order and sorting
     * based on which column
     *
     * @param {number} [options.skip] The offset (starting at 0) of the first
     * result to return. This parameter along with limit is used to perform
     * pagination.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.eventName] to select the specific events
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Events>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    eventsMethodWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { inlinecount? : string, orderby? : string, skip? : number, top? : number, end? : Date, eventName? : string[], versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Events>>;

    /**
     * Count of active events in the time range ordered by event.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.inlinecount] Controls whether or not to include a
     * count of all the items accross all pages. Possible values include:
     * 'allpages', 'none'
     *
     * @param {string} [options.orderby] controls the sorting order and sorting
     * based on which column
     *
     * @param {number} [options.skip] The offset (starting at 0) of the first
     * result to return. This parameter along with limit is used to perform
     * pagination.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.eventName] to select the specific events
     *
     * @param {array} [options.versions]
     *
     * @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 {Events} - 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.
     *
     *                      {Events} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Events} 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.
     */
    eventsMethod(appName: string, ownerName: string, start: Date|string, options?: { inlinecount? : string, orderby? : string, skip? : number, top? : number, end? : Date, eventName? : string[], versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.Events>;
    eventsMethod(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.Events>): void;
    eventsMethod(appName: string, ownerName: string, start: Date|string, options: { inlinecount? : string, orderby? : string, skip? : number, top? : number, end? : Date, eventName? : string[], versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Events>): void;


    /**
     * Delete the set of Events with the specified event names
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @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.
     */
    eventsDeleteWithHttpOperationResponse(appName: string, eventName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<void>>;

    /**
     * Delete the set of Events with the specified event names
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @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.
     */
    eventsDelete(appName: string, eventName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<void>;
    eventsDelete(appName: string, eventName: string, ownerName: string, callback: ServiceCallback<void>): void;
    eventsDelete(appName: string, eventName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;


    /**
     * Count of events per device by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<EventCountPerDevice>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    eventPerDeviceCountWithHttpOperationResponse(appName: string, eventName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.EventCountPerDevice>>;

    /**
     * Count of events per device by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {EventCountPerDevice} - 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.
     *
     *                      {EventCountPerDevice} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link EventCountPerDevice} 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.
     */
    eventPerDeviceCount(appName: string, eventName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.EventCountPerDevice>;
    eventPerDeviceCount(appName: string, eventName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.EventCountPerDevice>): void;
    eventPerDeviceCount(appName: string, eventName: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.EventCountPerDevice>): void;


    /**
     * Count of events per session by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<EventCountPerSession>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    eventPerSessionCountWithHttpOperationResponse(appName: string, eventName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.EventCountPerSession>>;

    /**
     * Count of events per session by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {EventCountPerSession} - 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.
     *
     *                      {EventCountPerSession} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link EventCountPerSession} 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.
     */
    eventPerSessionCount(appName: string, eventName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.EventCountPerSession>;
    eventPerSessionCount(appName: string, eventName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.EventCountPerSession>): void;
    eventPerSessionCount(appName: string, eventName: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.EventCountPerSession>): void;


    /**
     * Count of devices for an event by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<EventDeviceCount>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    eventDeviceCountMethodWithHttpOperationResponse(appName: string, eventName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.EventDeviceCount>>;

    /**
     * Count of devices for an event by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {EventDeviceCount} - 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.
     *
     *                      {EventDeviceCount} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link EventDeviceCount} 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.
     */
    eventDeviceCountMethod(appName: string, eventName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.EventDeviceCount>;
    eventDeviceCountMethod(appName: string, eventName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.EventDeviceCount>): void;
    eventDeviceCountMethod(appName: string, eventName: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.EventDeviceCount>): void;


    /**
     * Count of events by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<EventCount>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    eventCountMethodWithHttpOperationResponse(appName: string, eventName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.EventCount>>;

    /**
     * Count of events by interval in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {EventCount} - 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.
     *
     *                      {EventCount} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link EventCount} 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.
     */
    eventCountMethod(appName: string, eventName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.EventCount>;
    eventCountMethod(appName: string, eventName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.EventCount>): void;
    eventCountMethod(appName: string, eventName: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.EventCount>): void;


    /**
     * Event properties.  Up to the first 5 received properties.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @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<EventProperties>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    eventPropertiesMethodWithHttpOperationResponse(appName: string, eventName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.EventProperties>>;

    /**
     * Event properties.  Up to the first 5 received properties.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @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 {EventProperties} - 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.
     *
     *                      {EventProperties} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link EventProperties} 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.
     */
    eventPropertiesMethod(appName: string, eventName: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.EventProperties>;
    eventPropertiesMethod(appName: string, eventName: string, ownerName: string, callback: ServiceCallback<models.EventProperties>): void;
    eventPropertiesMethod(appName: string, eventName: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.EventProperties>): void;


    /**
     * Event properties value counts during the time range in descending order.
     * Limited up to 5 values.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} eventPropertyName The id of the event property
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.count] The number of property values to return
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<EventPropertyValues>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    eventPropertyCountsWithHttpOperationResponse(appName: string, eventName: string, eventPropertyName: string, ownerName: string, start: Date|string, options?: { count? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.EventPropertyValues>>;

    /**
     * Event properties value counts during the time range in descending order.
     * Limited up to 5 values.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} eventName The id of the event
     *
     * @param {string} eventPropertyName The id of the event property
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.count] The number of property values to return
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {EventPropertyValues} - 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.
     *
     *                      {EventPropertyValues} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link EventPropertyValues} 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.
     */
    eventPropertyCounts(appName: string, eventName: string, eventPropertyName: string, ownerName: string, start: Date|string, options?: { count? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.EventPropertyValues>;
    eventPropertyCounts(appName: string, eventName: string, eventPropertyName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.EventPropertyValues>): void;
    eventPropertyCounts(appName: string, eventName: string, eventPropertyName: string, ownerName: string, start: Date|string, options: { count? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.EventPropertyValues>): void;


    /**
     * Logs received between the specified start time and the current time. The API
     * will return a maximum of 100 logs per call.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.start] Start date time in data in ISO 8601 date time
     * format. It must be within the current day in the UTC timezone. The default
     * value is the start time of the current day in UTC timezone.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<LogFlowGenericLogContainer>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    genericLogFlowWithHttpOperationResponse(appName: string, ownerName: string, options?: { start? : Date, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.LogFlowGenericLogContainer>>;

    /**
     * Logs received between the specified start time and the current time. The API
     * will return a maximum of 100 logs per call.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.start] Start date time in data in ISO 8601 date time
     * format. It must be within the current day in the UTC timezone. The default
     * value is the start time of the current day in UTC timezone.
     *
     * @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 {LogFlowGenericLogContainer} - 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.
     *
     *                      {LogFlowGenericLogContainer} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link LogFlowGenericLogContainer} 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.
     */
    genericLogFlow(appName: string, ownerName: string, options?: { start? : Date, customHeaders? : { [headerName: string]: string; } }): Promise<models.LogFlowGenericLogContainer>;
    genericLogFlow(appName: string, ownerName: string, callback: ServiceCallback<models.LogFlowGenericLogContainer>): void;
    genericLogFlow(appName: string, ownerName: string, options: { start? : Date, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LogFlowGenericLogContainer>): void;


    /**
     * languages in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Languages>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    languageCountsWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Languages>>;

    /**
     * languages in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {Languages} - 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.
     *
     *                      {Languages} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Languages} 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.
     */
    languageCounts(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.Languages>;
    languageCounts(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.Languages>): void;
    languageCounts(appName: string, ownerName: string, start: Date|string, options: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Languages>): void;


    /**
     * Logs received between the specified start time and the current time. The API
     * will return a maximum of 100 logs per call.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.start] Start date time in data in ISO 8601 date time
     * format. It must be within the current day in the UTC timezone. The default
     * value is the start time of the current day in UTC timezone.
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<LogFlowLogContainer>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    logFlowWithHttpOperationResponse(appName: string, ownerName: string, options?: { start? : Date, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.LogFlowLogContainer>>;

    /**
     * Logs received between the specified start time and the current time. The API
     * will return a maximum of 100 logs per call.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.start] Start date time in data in ISO 8601 date time
     * format. It must be within the current day in the UTC timezone. The default
     * value is the start time of the current day in UTC timezone.
     *
     * @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 {LogFlowLogContainer} - 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.
     *
     *                      {LogFlowLogContainer} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link LogFlowLogContainer} 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.
     */
    logFlow(appName: string, ownerName: string, options?: { start? : Date, customHeaders? : { [headerName: string]: string; } }): Promise<models.LogFlowLogContainer>;
    logFlow(appName: string, ownerName: string, callback: ServiceCallback<models.LogFlowLogContainer>): void;
    logFlow(appName: string, ownerName: string, options: { start? : Date, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.LogFlowLogContainer>): void;


    /**
     * models in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<AnalyticsModels>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    modelCountsWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.AnalyticsModels>>;

    /**
     * models in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {AnalyticsModels} - 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.
     *
     *                      {AnalyticsModels} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link AnalyticsModels} 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.
     */
    modelCounts(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.AnalyticsModels>;
    modelCounts(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.AnalyticsModels>): void;
    modelCounts(appName: string, ownerName: string, start: Date|string, options: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.AnalyticsModels>): void;


    /**
     * OSes in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<OSes>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    operatingSystemCountsWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.OSes>>;

    /**
     * OSes in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {OSes} - 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.
     *
     *                      {OSes} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link OSes} 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.
     */
    operatingSystemCounts(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.OSes>;
    operatingSystemCounts(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.OSes>): void;
    operatingSystemCounts(appName: string, ownerName: string, start: Date|string, options: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.OSes>): void;


    /**
     * Places in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Places>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    placeCountsWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Places>>;

    /**
     * Places in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {Places} - 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.
     *
     *                      {Places} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Places} 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.
     */
    placeCounts(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.Places>;
    placeCounts(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.Places>): void;
    placeCounts(appName: string, ownerName: string, start: Date|string, options: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Places>): void;


    /**
     * Count of sessions in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} interval Size of interval in ISO 8601 duration format.
     * (PnYnMnDTnHnMnS|PnW|P<date>T<time>). The valid durations are 1 day (P1D), 1
     * week (P1W), and 30 days (P30D).
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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.
     */
    sessionCountsWithHttpOperationResponse(appName: string, interval: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.DateTimeCounts[]>>;

    /**
     * Count of sessions in the time range.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} interval Size of interval in ISO 8601 duration format.
     * (PnYnMnDTnHnMnS|PnW|P<date>T<time>). The valid durations are 1 day (P1D), 1
     * week (P1W), and 30 days (P30D).
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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.
     */
    sessionCounts(appName: string, interval: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.DateTimeCounts[]>;
    sessionCounts(appName: string, interval: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.DateTimeCounts[]>): void;
    sessionCounts(appName: string, interval: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.DateTimeCounts[]>): void;


    /**
     * Gets session duration .
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<SessionDurationsDistribution>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    sessionDurationsDistributionMethodWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.SessionDurationsDistribution>>;

    /**
     * Gets session duration .
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {SessionDurationsDistribution} - 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.
     *
     *                      {SessionDurationsDistribution} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link SessionDurationsDistribution} 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.
     */
    sessionDurationsDistributionMethod(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.SessionDurationsDistribution>;
    sessionDurationsDistributionMethod(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.SessionDurationsDistribution>): void;
    sessionDurationsDistributionMethod(appName: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SessionDurationsDistribution>): void;


    /**
     * Count of sessions per device in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} interval Size of interval in ISO 8601 duration format.
     * (PnYnMnDTnHnMnS|PnW|P<date>T<time>). The valid durations are 1 day (P1D), 1
     * week (P1W), and 30 days (P30D).
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<SessionsPerDevice>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    perDeviceCountsWithHttpOperationResponse(appName: string, interval: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.SessionsPerDevice>>;

    /**
     * Count of sessions per device in the time range
     *
     * @param {string} appName The name of the application
     *
     * @param {string} interval Size of interval in ISO 8601 duration format.
     * (PnYnMnDTnHnMnS|PnW|P<date>T<time>). The valid durations are 1 day (P1D), 1
     * week (P1W), and 30 days (P30D).
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {SessionsPerDevice} - 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.
     *
     *                      {SessionsPerDevice} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link SessionsPerDevice} 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.
     */
    perDeviceCounts(appName: string, interval: string, ownerName: string, start: Date|string, options?: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.SessionsPerDevice>;
    perDeviceCounts(appName: string, interval: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.SessionsPerDevice>): void;
    perDeviceCounts(appName: string, interval: string, ownerName: string, start: Date|string, options: { end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.SessionsPerDevice>): void;


    /**
     * Count of active versions in the time range ordered by version.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<Versions>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    versionsMethodWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.Versions>>;

    /**
     * Count of active versions in the time range ordered by version.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {array} [options.versions]
     *
     * @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 {Versions} - 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.
     *
     *                      {Versions} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link Versions} 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.
     */
    versionsMethod(appName: string, ownerName: string, start: Date|string, options?: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }): Promise<models.Versions>;
    versionsMethod(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.Versions>): void;
    versionsMethod(appName: string, ownerName: string, start: Date|string, options: { top? : number, end? : Date, versions? : string[], customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.Versions>): void;


    /**
     * List of error groups
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.orderby] controls the sorting order and sorting
     * based on which column
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {string} [options.groupStatus]
     *
     * @param {string} [options.version]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<ErrorGroups>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    errorGroupListWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { orderby? : string, top? : number, end? : Date, groupStatus? : string, version? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ErrorGroups>>;

    /**
     * List of error groups
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {string} [options.orderby] controls the sorting order and sorting
     * based on which column
     *
     * @param {number} [options.top] The maximum number of results to return. (0
     * will fetch all results)
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {string} [options.groupStatus]
     *
     * @param {string} [options.version]
     *
     * @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 {ErrorGroups} - 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.
     *
     *                      {ErrorGroups} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ErrorGroups} 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.
     */
    errorGroupList(appName: string, ownerName: string, start: Date|string, options?: { orderby? : string, top? : number, end? : Date, groupStatus? : string, version? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.ErrorGroups>;
    errorGroupList(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.ErrorGroups>): void;
    errorGroupList(appName: string, ownerName: string, start: Date|string, options: { orderby? : string, top? : number, end? : Date, groupStatus? : string, version? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ErrorGroups>): void;


    /**
     * Count of errors by day in the time range based the selected versions.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {string} [options.groupStatus]
     *
     * @param {string} [options.version]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<ErrorCounts>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    errorCountsPerDayWithHttpOperationResponse(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, groupStatus? : string, version? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ErrorCounts>>;

    /**
     * Count of errors by day in the time range based the selected versions.
     *
     * @param {string} appName The name of the application
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {string} [options.groupStatus]
     *
     * @param {string} [options.version]
     *
     * @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 {ErrorCounts} - 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.
     *
     *                      {ErrorCounts} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ErrorCounts} 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.
     */
    errorCountsPerDay(appName: string, ownerName: string, start: Date|string, options?: { end? : Date, groupStatus? : string, version? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.ErrorCounts>;
    errorCountsPerDay(appName: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.ErrorCounts>): void;
    errorCountsPerDay(appName: string, ownerName: string, start: Date|string, options: { end? : Date, groupStatus? : string, version? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ErrorCounts>): void;


    /**
     * Error group details
     *
     * @param {string} appName The name of the application
     *
     * @param {string} errorGroupId The id of the error group
     *
     * @param {string} model
     *
     * @param {string} os
     *
     * @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<ErrorGroup>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    errorGroupDetailsWithHttpOperationResponse(appName: string, errorGroupId: string, model: string, os: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ErrorGroup>>;

    /**
     * Error group details
     *
     * @param {string} appName The name of the application
     *
     * @param {string} errorGroupId The id of the error group
     *
     * @param {string} model
     *
     * @param {string} os
     *
     * @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 {ErrorGroup} - 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.
     *
     *                      {ErrorGroup} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ErrorGroup} 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.
     */
    errorGroupDetails(appName: string, errorGroupId: string, model: string, os: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.ErrorGroup>;
    errorGroupDetails(appName: string, errorGroupId: string, model: string, os: string, ownerName: string, callback: ServiceCallback<models.ErrorGroup>): void;
    errorGroupDetails(appName: string, errorGroupId: string, model: string, os: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ErrorGroup>): void;


    /**
     * Count of errors by day in the time range of the selected error group with
     * selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} errorGroupId The id of the error group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {string} [options.version]
     *
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     *
     * @returns {Promise} A promise is returned
     *
     * @resolve {HttpOperationResponse<ErrorCounts>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    errorGroupCountsPerDayWithHttpOperationResponse(appName: string, errorGroupId: string, ownerName: string, start: Date|string, options?: { end? : Date, version? : string, customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.ErrorCounts>>;

    /**
     * Count of errors by day in the time range of the selected error group with
     * selected version
     *
     * @param {string} appName The name of the application
     *
     * @param {string} errorGroupId The id of the error group
     *
     * @param {string} ownerName The name of the owner
     *
     * @param {date} start Start date time in data in ISO 8601 date time format
     *
     * @param {object} [options] Optional Parameters.
     *
     * @param {date} [options.end] Last date time in data in ISO 8601 date time
     * format
     *
     * @param {string} [options.version]
     *
     * @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 {ErrorCounts} - 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.
     *
     *                      {ErrorCounts} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link ErrorCounts} 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.
     */
    errorGroupCountsPerDay(appName: string, errorGroupId: string, ownerName: string, start: Date|string, options?: { end? : Date, version? : string, customHeaders? : { [headerName: string]: string; } }): Promise<models.ErrorCounts>;
    errorGroupCountsPerDay(appName: string, errorGroupId: string, ownerName: string, start: Date|string, callback: ServiceCallback<models.ErrorCounts>): void;
    errorGroupCountsPerDay(appName: string, errorGroupId: string, ownerName: string, start: Date|string, options: { end? : Date, version? : string, customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.ErrorCounts>): void;
}

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


    /**
     * Get session logs by crash ID
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashId The id of the a crash
     *
     * @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<GenericLogContainer>} - The deserialized result object.
     *
     * @reject {Error|ServiceError} - The error object.
     */
    listsessionlogsWithHttpOperationResponse(appName: string, crashId: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<HttpOperationResponse<models.GenericLogContainer>>;

    /**
     * Get session logs by crash ID
     *
     * @param {string} appName The name of the application
     *
     * @param {string} crashId The id of the a crash
     *
     * @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 {GenericLogContainer} - 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.
     *
     *                      {GenericLogContainer} [result]   - The deserialized result object if an error did not occur.
     *                      See {@link GenericLogContainer} 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.
     */
    listsessionlogs(appName: string, crashId: string, ownerName: string, options?: { customHeaders? : { [headerName: string]: string; } }): Promise<models.GenericLogContainer>;
    listsessionlogs(appName: string, crashId: string, ownerName: string, callback: ServiceCallback<models.GenericLogContainer>): void;
    listsessionlogs(appName: string, crashId: string, ownerName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.GenericLogContainer>): void;
}
