/*
 * 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 0.15.0.0
 * Changes may cause incorrect behavior and will be lost if the code is
 * regenerated.
*/

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


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

    /**
     * Create a redis cache, or replace (overwrite/recreate, with potential
     * downtime) an existing cache
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the redis cache.
     * 
     * @param {object} parameters Parameters supplied to the CreateOrUpdate redis
     * operation.
     * 
     * @param {string} [parameters.redisVersion] RedisVersion parameter has been
     * deprecated. As such, it is no longer necessary to provide this parameter
     * and any value specified is ignored.
     * 
     * @param {object} [parameters.sku] What sku of redis cache to deploy.
     * 
     * @param {string} [parameters.sku.name] What type of redis cache to deploy.
     * Valid values: (Basic, Standard, Premium). Possible values include:
     * 'Basic', 'Standard', 'Premium'
     * 
     * @param {string} [parameters.sku.family] Which family to use. Valid values:
     * (C, P). Possible values include: 'C', 'P'
     * 
     * @param {number} [parameters.sku.capacity] What size of redis cache to
     * deploy. Valid values: for C family (0, 1, 2, 3, 4, 5, 6), for P family (1,
     * 2, 3, 4)
     * 
     * @param {object} [parameters.redisConfiguration] All Redis Settings. Few
     * possible keys:
     * <para>rdb-backup-enabled</para><para>rdb-storage-connection-string</para><para>rdb-backup-frequency</para><para>maxmemory-delta</para><para>maxmemory-policy</para><para>notify-keyspace-events</para><para>maxmemory-samples</para><para>slowlog-log-slower-than</para><para>slowlog-max-len</para><para>list-max-ziplist-entries</para><para>list-max-ziplist-value</para><para>hash-max-ziplist-entries</para><para>hash-max-ziplist-value</para><para>set-max-intset-entries</para><para>zset-max-ziplist-entries</para><para>zset-max-ziplist-value
     * etc.</para>
     * 
     * @param {boolean} [parameters.enableNonSslPort] If the value is true, then
     * the non-ssl redis server port (6379) will be enabled.
     * 
     * @param {object} [parameters.tenantSettings] tenantSettings
     * 
     * @param {number} [parameters.shardCount] The number of shards to be created
     * on a Premium Cluster Cache.
     * 
     * @param {string} [parameters.virtualNetwork] The exact ARM resource ID of
     * the virtual network to deploy the redis cache in. Example format:
     * /subscriptions/{subid}/resourceGroups/{resourceGroupName}/Microsoft.ClassicNetwork/VirtualNetworks/vnet1
     * 
     * @param {string} [parameters.subnet] Required when deploying a redis cache
     * inside an existing Azure Virtual Network.
     * 
     * @param {string} [parameters.staticIP] Required when deploying a redis cache
     * inside an existing Azure Virtual Network.
     * 
     * @param {string} [parameters.location] Resource location
     * 
     * @param {object} [parameters.tags] Resource tags
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    createOrUpdate(resourceGroupName: string, name: string, parameters: models.RedisCreateOrUpdateParameters, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RedisResourceWithAccessKey>): void;
    createOrUpdate(resourceGroupName: string, name: string, parameters: models.RedisCreateOrUpdateParameters, callback: ServiceCallback<models.RedisResourceWithAccessKey>): void;

    /**
     * Deletes a redis cache. This operation takes a while to complete.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the redis cache.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    deleteMethod(resourceGroupName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<void>): void;
    deleteMethod(resourceGroupName: string, name: string, callback: ServiceCallback<void>): void;

    /**
     * Gets a redis cache (resource description).
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the redis cache.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    get(resourceGroupName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RedisResource>): void;
    get(resourceGroupName: string, name: string, callback: ServiceCallback<models.RedisResource>): void;

    /**
     * Gets all redis caches in a resource group.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listByResourceGroup(resourceGroupName: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RedisListResult>): void;
    listByResourceGroup(resourceGroupName: string, callback: ServiceCallback<models.RedisListResult>): void;

    /**
     * Gets all redis caches in the specified subscription.
     *
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    list(options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RedisListResult>): void;
    list(callback: ServiceCallback<models.RedisListResult>): void;

    /**
     * Retrieve a redis cache's access keys. This operation requires write
     * permission to the cache resource.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the redis cache.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listKeys(resourceGroupName: string, name: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RedisListKeysResult>): void;
    listKeys(resourceGroupName: string, name: string, callback: ServiceCallback<models.RedisListKeysResult>): void;

    /**
     * Regenerate redis cache's access keys. This operation requires write
     * permission to the cache resource.
     *
     * @param {string} resourceGroupName The name of the resource group.
     * 
     * @param {string} name The name of the redis cache.
     * 
     * @param {string} keyType Which redis access key to reset. Possible values
     * include: 'Primary', 'Secondary'
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    regenerateKey(resourceGroupName: string, name: string, keyType: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RedisListKeysResult>): void;
    regenerateKey(resourceGroupName: string, name: string, keyType: string, callback: ServiceCallback<models.RedisListKeysResult>): void;

    /**
     * Gets all redis caches in a resource group.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listByResourceGroupNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RedisListResult>): void;
    listByResourceGroupNext(nextPageLink: string, callback: ServiceCallback<models.RedisListResult>): void;

    /**
     * Gets all redis caches in the specified subscription.
     *
     * @param {string} nextPageLink The NextLink from the previous successful call
     * to List operation.
     * 
     * @param {object} [options] Optional Parameters.
     * 
     * @param {object} [options.customHeaders] Headers that will be added to the
     * request
     * 
     * @param {ServiceCallback} [callback] callback function; see ServiceCallback
     * doc in ms-rest index.d.ts for details
     */
    listNext(nextPageLink: string, options: { customHeaders? : { [headerName: string]: string; } }, callback: ServiceCallback<models.RedisListResult>): void;
    listNext(nextPageLink: string, callback: ServiceCallback<models.RedisListResult>): void;
}
