/*
 * Copyright (c) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See License.txt in the project root for
 * license information.
 * 
 * Code generated by Microsoft (R) AutoRest Code Generator.
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
// TODO: Include PageTemplateModels here too?? Probably
 */


/**
 * @class
 * Initializes a new instance of the FirewallRuleProperties class.
 * @constructor
 * Data Lake Store firewall rule properties information
 *
 * @member {string} [startIpAddress] the start IP address for the firewall
 * rule.
 * 
 * @member {string} [endIpAddress] the end IP address for the firewall rule.
 * 
 */
export interface FirewallRuleProperties {
    startIpAddress?: string;
    endIpAddress?: string;
}

/**
 * @class
 * Initializes a new instance of the FirewallRule class.
 * @constructor
 * Data Lake Store firewall rule information
 *
 * @member {string} [name] the firewall rule's name.
 * 
 * @member {string} [type] the namespace and type of the firewall Rule.
 * 
 * @member {string} [id] the firewall rule's subscription ID.
 * 
 * @member {string} [location] the firewall rule's regional location.
 * 
 * @member {object} [properties] the properties of the firewall rule.
 * 
 * @member {string} [properties.startIpAddress] the start IP address for the
 * firewall rule.
 * 
 * @member {string} [properties.endIpAddress] the end IP address for the
 * firewall rule.
 * 
 */
export interface FirewallRule {
    name?: string;
    type?: string;
    id?: string;
    location?: string;
    properties?: FirewallRuleProperties;
}

/**
 * @class
 * Initializes a new instance of the DataLakeStoreAccountProperties class.
 * @constructor
 * Data Lake Store account properties information
 *
 * @member {string} [provisioningState] the status of the Data Lake Store
 * account while being provisioned. Possible values include: 'Failed',
 * 'Creating', 'Running', 'Succeeded', 'Patching', 'Suspending', 'Resuming',
 * 'Deleting', 'Deleted'
 * 
 * @member {string} [state] the status of the Data Lake Store account after
 * provisioning has completed. Possible values include: 'active', 'suspended'
 * 
 * @member {date} [creationTime] the account creation time.
 * 
 * @member {date} [lastModifiedTime] the account last modified time.
 * 
 * @member {string} [endpoint] the gateway host.
 * 
 * @member {string} [defaultGroup] the default owner group for all new folders
 * and files created in the Data Lake Store account.
 * 
 */
export interface DataLakeStoreAccountProperties {
    provisioningState?: string;
    state?: string;
    creationTime?: Date;
    lastModifiedTime?: Date;
    endpoint?: string;
    defaultGroup?: string;
}

/**
 * @class
 * Initializes a new instance of the DataLakeStoreAccount class.
 * @constructor
 * Data Lake Store account information
 *
 * @member {string} [location] the account regional location.
 * 
 * @member {string} [name] the account name.
 * 
 * @member {string} [type] the namespace and type of the account.
 * 
 * @member {string} [id] the account subscription ID.
 * 
 * @member {object} [tags] the value of custom properties.
 * 
 * @member {object} [properties] the Data Lake Store account properties.
 * 
 * @member {string} [properties.provisioningState] the status of the Data Lake
 * Store account while being provisioned. Possible values include: 'Failed',
 * 'Creating', 'Running', 'Succeeded', 'Patching', 'Suspending', 'Resuming',
 * 'Deleting', 'Deleted'
 * 
 * @member {string} [properties.state] the status of the Data Lake Store
 * account after provisioning has completed. Possible values include:
 * 'active', 'suspended'
 * 
 * @member {date} [properties.creationTime] the account creation time.
 * 
 * @member {date} [properties.lastModifiedTime] the account last modified time.
 * 
 * @member {string} [properties.endpoint] the gateway host.
 * 
 * @member {string} [properties.defaultGroup] the default owner group for all
 * new folders and files created in the Data Lake Store account.
 * 
 */
export interface DataLakeStoreAccount {
    location?: string;
    name?: string;
    type?: string;
    id?: string;
    tags?: { [propertyName: string]: string };
    properties?: DataLakeStoreAccountProperties;
}

/**
 * @class
 * Initializes a new instance of the ErrorDetails class.
 * @constructor
 * Data Lake Store error details information
 *
 * @member {string} [code] the HTTP status code or error code associated with
 * this error
 * 
 * @member {string} [message] the error message localized based on
 * Accept-Language
 * 
 * @member {string} [target] the target of the particular error (for example,
 * the name of the property in error).
 * 
 */
export interface ErrorDetails {
    code?: string;
    message?: string;
    target?: string;
}

/**
 * @class
 * Initializes a new instance of the InnerError class.
 * @constructor
 * Data Lake Store inner error information
 *
 * @member {string} [trace] the stack trace for the error
 * 
 * @member {string} [context] the context for the error message
 * 
 */
export interface InnerError {
    trace?: string;
    context?: string;
}

/**
 * @class
 * Initializes a new instance of the ErrorModel class.
 * @constructor
 * Data Lake Store error information
 *
 * @member {string} [code] the HTTP status code or error code associated with
 * this error
 * 
 * @member {string} [message] the error message to display.
 * 
 * @member {string} [target] the target of the error.
 * 
 * @member {array} [details] the list of error details
 * 
 * @member {object} [innerError] the inner exceptions or errors, if any
 * 
 * @member {string} [innerError.trace] the stack trace for the error
 * 
 * @member {string} [innerError.context] the context for the error message
 * 
 */
export interface ErrorModel {
    code?: string;
    message?: string;
    target?: string;
    details?: ErrorDetails[];
    innerError?: InnerError;
}

/**
 * @class
 * Initializes a new instance of the AzureAsyncOperationResult class.
 * @constructor
 * The response body contains the status of the specified asynchronous
 * operation, indicating whether it has succeeded, is in progress, or has
 * failed. Note that this status is distinct from the HTTP status code
 * returned for the Get Operation Status operation itself. If the
 * asynchronous operation succeeded, the response body includes the HTTP
 * status code for the successful request. If the asynchronous operation
 * failed, the response body includes the HTTP status code for the failed
 * request and error information regarding the failure.
 *
 * @member {string} [status] the status of the AzureAsuncOperation. Possible
 * values include: 'InProgress', 'Succeeded', 'Failed'
 * 
 * @member {object} [error]
 * 
 * @member {string} [error.code] the HTTP status code or error code associated
 * with this error
 * 
 * @member {string} [error.message] the error message to display.
 * 
 * @member {string} [error.target] the target of the error.
 * 
 * @member {array} [error.details] the list of error details
 * 
 * @member {object} [error.innerError] the inner exceptions or errors, if any
 * 
 * @member {string} [error.innerError.trace] the stack trace for the error
 * 
 * @member {string} [error.innerError.context] the context for the error
 * message
 * 
 */
export interface AzureAsyncOperationResult {
    status?: string;
    error?: ErrorModel;
}
