import * as coreAuth from '@azure/core-auth';
import * as coreClient from '@azure/core-client';
import { PagedAsyncIterableIterator } from '@azure/core-paging';
import { PollerLike } from '@azure/core-lro';
import { PollOperationState } from '@azure/core-lro';

/** Storage Profile properties of a server */
export declare interface Backup {
    /** Backup retention days for the server. */
    backupRetentionDays?: number;
    /** Whether or not geo redundant backup is enabled. */
    geoRedundantBackup?: EnableStatusEnum;
    /**
     * Earliest restore point creation time (ISO8601 format)
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly earliestRestoreDate?: Date;
}

/** Interface representing a Backups. */
export declare interface Backups {
    /**
     * List all the backups for a given server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    listByServer(resourceGroupName: string, serverName: string, options?: BackupsListByServerOptionalParams): PagedAsyncIterableIterator<ServerBackup>;
    /**
     * List all the backups for a given server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param backupName The name of the backup.
     * @param options The options parameters.
     */
    get(resourceGroupName: string, serverName: string, backupName: string, options?: BackupsGetOptionalParams): Promise<BackupsGetResponse>;
}

/** Optional parameters. */
export declare interface BackupsGetOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the get operation. */
export declare type BackupsGetResponse = ServerBackup;

/** Optional parameters. */
export declare interface BackupsListByServerNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServerNext operation. */
export declare type BackupsListByServerNextResponse = ServerBackupListResult;

/** Optional parameters. */
export declare interface BackupsListByServerOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServer operation. */
export declare type BackupsListByServerResponse = ServerBackupListResult;

/** location capability */
export declare interface CapabilitiesListResult {
    /**
     * A list of supported capabilities.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly value?: CapabilityProperties[];
    /**
     * Link to retrieve next page of results.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly nextLink?: string;
}

/** Location capabilities. */
export declare interface CapabilityProperties {
    /**
     * zone name
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly zone?: string;
    /**
     * Supported high availability mode
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly supportedHAMode?: string[];
    /**
     * supported geo backup regions
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly supportedGeoBackupRegions?: string[];
    /**
     * A list of supported flexible server editions.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly supportedFlexibleServerEditions?: ServerEditionCapability[];
}

/** Interface representing a CheckNameAvailability. */
export declare interface CheckNameAvailability {
    /**
     * Check the availability of name for server
     * @param locationName The name of the location.
     * @param nameAvailabilityRequest The required parameters for checking if server name is available.
     * @param options The options parameters.
     */
    execute(locationName: string, nameAvailabilityRequest: NameAvailabilityRequest, options?: CheckNameAvailabilityExecuteOptionalParams): Promise<CheckNameAvailabilityExecuteResponse>;
}

/** Optional parameters. */
export declare interface CheckNameAvailabilityExecuteOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the execute operation. */
export declare type CheckNameAvailabilityExecuteResponse = NameAvailability;

/** Interface representing a CheckVirtualNetworkSubnetUsage. */
export declare interface CheckVirtualNetworkSubnetUsage {
    /**
     * Get virtual network subnet usage for a given vNet resource id.
     * @param locationName The name of the location.
     * @param parameters The required parameters for creating or updating a server.
     * @param options The options parameters.
     */
    execute(locationName: string, parameters: VirtualNetworkSubnetUsageParameter, options?: CheckVirtualNetworkSubnetUsageExecuteOptionalParams): Promise<CheckVirtualNetworkSubnetUsageExecuteResponse>;
}

/** Optional parameters. */
export declare interface CheckVirtualNetworkSubnetUsageExecuteOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the execute operation. */
export declare type CheckVirtualNetworkSubnetUsageExecuteResponse = VirtualNetworkSubnetUsageResult;

/** An error response from the Batch service. */
export declare interface CloudError {
    /** The resource management error response. */
    error?: ErrorResponse;
}

/** Represents a Configuration. */
export declare interface Configuration extends ProxyResource {
    /**
     * The system metadata relating to this resource.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly systemData?: SystemData;
    /** Value of the configuration. */
    value?: string;
    /**
     * Description of the configuration.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly description?: string;
    /**
     * Default value of the configuration.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly defaultValue?: string;
    /**
     * Data type of the configuration.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly dataType?: string;
    /**
     * Allowed values of the configuration.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly allowedValues?: string;
    /** Source of the configuration. */
    source?: ConfigurationSource;
    /**
     * If is the configuration read only.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly isReadOnly?: IsReadOnly;
    /**
     * If is the configuration pending restart or not.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly isConfigPendingRestart?: IsConfigPendingRestart;
    /**
     * If is the configuration dynamic.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly isDynamicConfig?: IsDynamicConfig;
}

/** Represents a Configuration. */
export declare interface ConfigurationForBatchUpdate {
    /** Name of the configuration. */
    name?: string;
    /** Value of the configuration. */
    value?: string;
    /** Source of the configuration. */
    source?: string;
}

/** A list of server configurations to update. */
export declare interface ConfigurationListForBatchUpdate {
    /** The list of server configurations. */
    value?: ConfigurationForBatchUpdate[];
}

/** A list of server configurations. */
export declare interface ConfigurationListResult {
    /** The list of server configurations. */
    value?: Configuration[];
    /** The link used to get the next page of operations. */
    nextLink?: string;
}

/** Interface representing a Configurations. */
export declare interface Configurations {
    /**
     * List all the configurations in a given server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    listByServer(resourceGroupName: string, serverName: string, options?: ConfigurationsListByServerOptionalParams): PagedAsyncIterableIterator<Configuration>;
    /**
     * Updates a configuration of a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param configurationName The name of the server configuration.
     * @param parameters The required parameters for updating a server configuration.
     * @param options The options parameters.
     */
    beginUpdate(resourceGroupName: string, serverName: string, configurationName: string, parameters: Configuration, options?: ConfigurationsUpdateOptionalParams): Promise<PollerLike<PollOperationState<ConfigurationsUpdateResponse>, ConfigurationsUpdateResponse>>;
    /**
     * Updates a configuration of a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param configurationName The name of the server configuration.
     * @param parameters The required parameters for updating a server configuration.
     * @param options The options parameters.
     */
    beginUpdateAndWait(resourceGroupName: string, serverName: string, configurationName: string, parameters: Configuration, options?: ConfigurationsUpdateOptionalParams): Promise<ConfigurationsUpdateResponse>;
    /**
     * Gets information about a configuration of server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param configurationName The name of the server configuration.
     * @param options The options parameters.
     */
    get(resourceGroupName: string, serverName: string, configurationName: string, options?: ConfigurationsGetOptionalParams): Promise<ConfigurationsGetResponse>;
    /**
     * Update a list of configurations in a given server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param parameters The parameters for updating a list of server configuration.
     * @param options The options parameters.
     */
    beginBatchUpdate(resourceGroupName: string, serverName: string, parameters: ConfigurationListForBatchUpdate, options?: ConfigurationsBatchUpdateOptionalParams): Promise<PollerLike<PollOperationState<ConfigurationsBatchUpdateResponse>, ConfigurationsBatchUpdateResponse>>;
    /**
     * Update a list of configurations in a given server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param parameters The parameters for updating a list of server configuration.
     * @param options The options parameters.
     */
    beginBatchUpdateAndWait(resourceGroupName: string, serverName: string, parameters: ConfigurationListForBatchUpdate, options?: ConfigurationsBatchUpdateOptionalParams): Promise<ConfigurationsBatchUpdateResponse>;
}

/** Optional parameters. */
export declare interface ConfigurationsBatchUpdateOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Contains response data for the batchUpdate operation. */
export declare type ConfigurationsBatchUpdateResponse = ConfigurationListResult;

/** Optional parameters. */
export declare interface ConfigurationsGetOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the get operation. */
export declare type ConfigurationsGetResponse = Configuration;

/** Optional parameters. */
export declare interface ConfigurationsListByServerNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServerNext operation. */
export declare type ConfigurationsListByServerNextResponse = ConfigurationListResult;

/** Optional parameters. */
export declare interface ConfigurationsListByServerOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServer operation. */
export declare type ConfigurationsListByServerResponse = ConfigurationListResult;

/**
 * Defines values for ConfigurationSource. \
 * {@link KnownConfigurationSource} can be used interchangeably with ConfigurationSource,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **system-default** \
 * **user-override**
 */
export declare type ConfigurationSource = string;

/** Optional parameters. */
export declare interface ConfigurationsUpdateOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Contains response data for the update operation. */
export declare type ConfigurationsUpdateResponse = Configuration;

/**
 * Defines values for CreatedByType. \
 * {@link KnownCreatedByType} can be used interchangeably with CreatedByType,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **User** \
 * **Application** \
 * **ManagedIdentity** \
 * **Key**
 */
export declare type CreatedByType = string;

/**
 * Defines values for CreateMode. \
 * {@link KnownCreateMode} can be used interchangeably with CreateMode,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Default** \
 * **PointInTimeRestore** \
 * **Replica** \
 * **GeoRestore**
 */
export declare type CreateMode = string;

/** Represents a Database. */
export declare interface Database extends ProxyResource {
    /**
     * The system metadata relating to this resource.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly systemData?: SystemData;
    /** The charset of the database. */
    charset?: string;
    /** The collation of the database. */
    collation?: string;
}

/** A List of databases. */
export declare interface DatabaseListResult {
    /** The list of databases housed in a server */
    value?: Database[];
    /** The link used to get the next page of operations. */
    nextLink?: string;
}

/** Interface representing a Databases. */
export declare interface Databases {
    /**
     * List all the databases in a given server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    listByServer(resourceGroupName: string, serverName: string, options?: DatabasesListByServerOptionalParams): PagedAsyncIterableIterator<Database>;
    /**
     * Creates a new database or updates an existing database.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param databaseName The name of the database.
     * @param parameters The required parameters for creating or updating a database.
     * @param options The options parameters.
     */
    beginCreateOrUpdate(resourceGroupName: string, serverName: string, databaseName: string, parameters: Database, options?: DatabasesCreateOrUpdateOptionalParams): Promise<PollerLike<PollOperationState<DatabasesCreateOrUpdateResponse>, DatabasesCreateOrUpdateResponse>>;
    /**
     * Creates a new database or updates an existing database.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param databaseName The name of the database.
     * @param parameters The required parameters for creating or updating a database.
     * @param options The options parameters.
     */
    beginCreateOrUpdateAndWait(resourceGroupName: string, serverName: string, databaseName: string, parameters: Database, options?: DatabasesCreateOrUpdateOptionalParams): Promise<DatabasesCreateOrUpdateResponse>;
    /**
     * Deletes a database.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param databaseName The name of the database.
     * @param options The options parameters.
     */
    beginDelete(resourceGroupName: string, serverName: string, databaseName: string, options?: DatabasesDeleteOptionalParams): Promise<PollerLike<PollOperationState<void>, void>>;
    /**
     * Deletes a database.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param databaseName The name of the database.
     * @param options The options parameters.
     */
    beginDeleteAndWait(resourceGroupName: string, serverName: string, databaseName: string, options?: DatabasesDeleteOptionalParams): Promise<void>;
    /**
     * Gets information about a database.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param databaseName The name of the database.
     * @param options The options parameters.
     */
    get(resourceGroupName: string, serverName: string, databaseName: string, options?: DatabasesGetOptionalParams): Promise<DatabasesGetResponse>;
}

/** Optional parameters. */
export declare interface DatabasesCreateOrUpdateOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Contains response data for the createOrUpdate operation. */
export declare type DatabasesCreateOrUpdateResponse = Database;

/** Optional parameters. */
export declare interface DatabasesDeleteOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Optional parameters. */
export declare interface DatabasesGetOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the get operation. */
export declare type DatabasesGetResponse = Database;

/** Optional parameters. */
export declare interface DatabasesListByServerNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServerNext operation. */
export declare type DatabasesListByServerNextResponse = DatabaseListResult;

/** Optional parameters. */
export declare interface DatabasesListByServerOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServer operation. */
export declare type DatabasesListByServerResponse = DatabaseListResult;

/** Delegated subnet usage data. */
export declare interface DelegatedSubnetUsage {
    /**
     * name of the subnet
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly subnetName?: string;
    /**
     * Number of used delegated subnets
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly usage?: number;
}

/**
 * Defines values for EnableStatusEnum. \
 * {@link KnownEnableStatusEnum} can be used interchangeably with EnableStatusEnum,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Enabled** \
 * **Disabled**
 */
export declare type EnableStatusEnum = string;

/** The resource management error additional info. */
export declare interface ErrorAdditionalInfo {
    /**
     * The additional info type.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly type?: string;
    /**
     * The additional info.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly info?: Record<string, unknown>;
}

/** Common error response for all Azure Resource Manager APIs to return error details for failed operations. (This also follows the OData error response format.) */
export declare interface ErrorResponse {
    /**
     * The error code.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly code?: string;
    /**
     * The error message.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly message?: string;
    /**
     * The error target.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly target?: string;
    /**
     * The error details.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly details?: ErrorResponse[];
    /**
     * The error additional info.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly additionalInfo?: ErrorAdditionalInfo[];
}

/** Represents a server firewall rule. */
export declare interface FirewallRule extends ProxyResource {
    /**
     * The system metadata relating to this resource.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly systemData?: SystemData;
    /** The start IP address of the server firewall rule. Must be IPv4 format. */
    startIpAddress: string;
    /** The end IP address of the server firewall rule. Must be IPv4 format. */
    endIpAddress: string;
}

/** A list of firewall rules. */
export declare interface FirewallRuleListResult {
    /** The list of firewall rules in a server. */
    value?: FirewallRule[];
    /** The link used to get the next page of operations. */
    nextLink?: string;
}

/** Interface representing a FirewallRules. */
export declare interface FirewallRules {
    /**
     * List all the firewall rules in a given server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    listByServer(resourceGroupName: string, serverName: string, options?: FirewallRulesListByServerOptionalParams): PagedAsyncIterableIterator<FirewallRule>;
    /**
     * Creates a new firewall rule or updates an existing firewall rule.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param firewallRuleName The name of the server firewall rule.
     * @param parameters The required parameters for creating or updating a firewall rule.
     * @param options The options parameters.
     */
    beginCreateOrUpdate(resourceGroupName: string, serverName: string, firewallRuleName: string, parameters: FirewallRule, options?: FirewallRulesCreateOrUpdateOptionalParams): Promise<PollerLike<PollOperationState<FirewallRulesCreateOrUpdateResponse>, FirewallRulesCreateOrUpdateResponse>>;
    /**
     * Creates a new firewall rule or updates an existing firewall rule.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param firewallRuleName The name of the server firewall rule.
     * @param parameters The required parameters for creating or updating a firewall rule.
     * @param options The options parameters.
     */
    beginCreateOrUpdateAndWait(resourceGroupName: string, serverName: string, firewallRuleName: string, parameters: FirewallRule, options?: FirewallRulesCreateOrUpdateOptionalParams): Promise<FirewallRulesCreateOrUpdateResponse>;
    /**
     * Deletes a firewall rule.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param firewallRuleName The name of the server firewall rule.
     * @param options The options parameters.
     */
    beginDelete(resourceGroupName: string, serverName: string, firewallRuleName: string, options?: FirewallRulesDeleteOptionalParams): Promise<PollerLike<PollOperationState<void>, void>>;
    /**
     * Deletes a firewall rule.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param firewallRuleName The name of the server firewall rule.
     * @param options The options parameters.
     */
    beginDeleteAndWait(resourceGroupName: string, serverName: string, firewallRuleName: string, options?: FirewallRulesDeleteOptionalParams): Promise<void>;
    /**
     * Gets information about a server firewall rule.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param firewallRuleName The name of the server firewall rule.
     * @param options The options parameters.
     */
    get(resourceGroupName: string, serverName: string, firewallRuleName: string, options?: FirewallRulesGetOptionalParams): Promise<FirewallRulesGetResponse>;
}

/** Optional parameters. */
export declare interface FirewallRulesCreateOrUpdateOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Contains response data for the createOrUpdate operation. */
export declare type FirewallRulesCreateOrUpdateResponse = FirewallRule;

/** Optional parameters. */
export declare interface FirewallRulesDeleteOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Optional parameters. */
export declare interface FirewallRulesGetOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the get operation. */
export declare type FirewallRulesGetResponse = FirewallRule;

/** Optional parameters. */
export declare interface FirewallRulesListByServerNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServerNext operation. */
export declare type FirewallRulesListByServerNextResponse = FirewallRuleListResult;

/** Optional parameters. */
export declare interface FirewallRulesListByServerOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServer operation. */
export declare type FirewallRulesListByServerResponse = FirewallRuleListResult;

/**
 * Given the last `.value` produced by the `byPage` iterator,
 * returns a continuation token that can be used to begin paging from
 * that point later.
 * @param page An object from accessing `value` on the IteratorResult from a `byPage` iterator.
 * @returns The continuation token that can be passed into byPage() during future calls.
 */
export declare function getContinuationToken(page: unknown): string | undefined;

/** Interface representing a GetPrivateDnsZoneSuffix. */
export declare interface GetPrivateDnsZoneSuffix {
    /**
     * Get private DNS zone suffix in the cloud.
     * @param options The options parameters.
     */
    execute(options?: GetPrivateDnsZoneSuffixExecuteOptionalParams): Promise<GetPrivateDnsZoneSuffixExecuteResponse>;
}

/** Optional parameters. */
export declare interface GetPrivateDnsZoneSuffixExecuteOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the execute operation. */
export declare type GetPrivateDnsZoneSuffixExecuteResponse = GetPrivateDnsZoneSuffixResponse;

/** The response of get private dns zone suffix. */
export declare interface GetPrivateDnsZoneSuffixResponse {
    /** Represents the private DNS zone suffix. */
    privateDnsZoneSuffix?: string;
}

/** Network related properties of a server */
export declare interface HighAvailability {
    /** High availability mode for a server. */
    mode?: HighAvailabilityMode;
    /**
     * The state of server high availability.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly state?: HighAvailabilityState;
    /** Availability zone of the standby server. */
    standbyAvailabilityZone?: string;
}

/**
 * Defines values for HighAvailabilityMode. \
 * {@link KnownHighAvailabilityMode} can be used interchangeably with HighAvailabilityMode,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Disabled** \
 * **ZoneRedundant** \
 * **SameZone**
 */
export declare type HighAvailabilityMode = string;

/**
 * Defines values for HighAvailabilityState. \
 * {@link KnownHighAvailabilityState} can be used interchangeably with HighAvailabilityState,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **NotEnabled** \
 * **CreatingStandby** \
 * **Healthy** \
 * **FailingOver** \
 * **RemovingStandby**
 */
export declare type HighAvailabilityState = string;

/**
 * Defines values for IsConfigPendingRestart. \
 * {@link KnownIsConfigPendingRestart} can be used interchangeably with IsConfigPendingRestart,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **True** \
 * **False**
 */
export declare type IsConfigPendingRestart = string;

/**
 * Defines values for IsDynamicConfig. \
 * {@link KnownIsDynamicConfig} can be used interchangeably with IsDynamicConfig,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **True** \
 * **False**
 */
export declare type IsDynamicConfig = string;

/**
 * Defines values for IsReadOnly. \
 * {@link KnownIsReadOnly} can be used interchangeably with IsReadOnly,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **True** \
 * **False**
 */
export declare type IsReadOnly = string;

/** Known values of {@link ConfigurationSource} that the service accepts. */
export declare enum KnownConfigurationSource {
    /** SystemDefault */
    SystemDefault = "system-default",
    /** UserOverride */
    UserOverride = "user-override"
}

/** Known values of {@link CreatedByType} that the service accepts. */
export declare enum KnownCreatedByType {
    /** User */
    User = "User",
    /** Application */
    Application = "Application",
    /** ManagedIdentity */
    ManagedIdentity = "ManagedIdentity",
    /** Key */
    Key = "Key"
}

/** Known values of {@link CreateMode} that the service accepts. */
export declare enum KnownCreateMode {
    /** Default */
    Default = "Default",
    /** PointInTimeRestore */
    PointInTimeRestore = "PointInTimeRestore",
    /** Replica */
    Replica = "Replica",
    /** GeoRestore */
    GeoRestore = "GeoRestore"
}

/** Known values of {@link EnableStatusEnum} that the service accepts. */
export declare enum KnownEnableStatusEnum {
    /** Enabled */
    Enabled = "Enabled",
    /** Disabled */
    Disabled = "Disabled"
}

/** Known values of {@link HighAvailabilityMode} that the service accepts. */
export declare enum KnownHighAvailabilityMode {
    /** Disabled */
    Disabled = "Disabled",
    /** ZoneRedundant */
    ZoneRedundant = "ZoneRedundant",
    /** SameZone */
    SameZone = "SameZone"
}

/** Known values of {@link HighAvailabilityState} that the service accepts. */
export declare enum KnownHighAvailabilityState {
    /** NotEnabled */
    NotEnabled = "NotEnabled",
    /** CreatingStandby */
    CreatingStandby = "CreatingStandby",
    /** Healthy */
    Healthy = "Healthy",
    /** FailingOver */
    FailingOver = "FailingOver",
    /** RemovingStandby */
    RemovingStandby = "RemovingStandby"
}

/** Known values of {@link IsConfigPendingRestart} that the service accepts. */
export declare enum KnownIsConfigPendingRestart {
    /** True */
    True = "True",
    /** False */
    False = "False"
}

/** Known values of {@link IsDynamicConfig} that the service accepts. */
export declare enum KnownIsDynamicConfig {
    /** True */
    True = "True",
    /** False */
    False = "False"
}

/** Known values of {@link IsReadOnly} that the service accepts. */
export declare enum KnownIsReadOnly {
    /** True */
    True = "True",
    /** False */
    False = "False"
}

/** Known values of {@link ReplicationRole} that the service accepts. */
export declare enum KnownReplicationRole {
    /** None */
    None = "None",
    /** Source */
    Source = "Source",
    /** Replica */
    Replica = "Replica"
}

/** Known values of {@link ServerState} that the service accepts. */
export declare enum KnownServerState {
    /** Ready */
    Ready = "Ready",
    /** Dropping */
    Dropping = "Dropping",
    /** Disabled */
    Disabled = "Disabled",
    /** Starting */
    Starting = "Starting",
    /** Stopping */
    Stopping = "Stopping",
    /** Stopped */
    Stopped = "Stopped",
    /** Updating */
    Updating = "Updating"
}

/** Known values of {@link ServerVersion} that the service accepts. */
export declare enum KnownServerVersion {
    /** Five7 */
    Five7 = "5.7",
    /** Eight021 */
    Eight021 = "8.0.21"
}

/** Known values of {@link SkuTier} that the service accepts. */
export declare enum KnownSkuTier {
    /** Burstable */
    Burstable = "Burstable",
    /** GeneralPurpose */
    GeneralPurpose = "GeneralPurpose",
    /** MemoryOptimized */
    MemoryOptimized = "MemoryOptimized"
}

/** Interface representing a LocationBasedCapabilities. */
export declare interface LocationBasedCapabilities {
    /**
     * Get capabilities at specified location in a given subscription.
     * @param locationName The name of the location.
     * @param options The options parameters.
     */
    list(locationName: string, options?: LocationBasedCapabilitiesListOptionalParams): PagedAsyncIterableIterator<CapabilityProperties>;
}

/** Optional parameters. */
export declare interface LocationBasedCapabilitiesListNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listNext operation. */
export declare type LocationBasedCapabilitiesListNextResponse = CapabilitiesListResult;

/** Optional parameters. */
export declare interface LocationBasedCapabilitiesListOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the list operation. */
export declare type LocationBasedCapabilitiesListResponse = CapabilitiesListResult;

/** Maintenance window of a server. */
export declare interface MaintenanceWindow {
    /** indicates whether custom window is enabled or disabled */
    customWindow?: string;
    /** start hour for maintenance window */
    startHour?: number;
    /** start minute for maintenance window */
    startMinute?: number;
    /** day of week for maintenance window */
    dayOfWeek?: number;
}

export declare class MySQLManagementFlexibleServerClient extends coreClient.ServiceClient {
    $host: string;
    apiVersion: string;
    subscriptionId: string;
    /**
     * Initializes a new instance of the MySQLManagementFlexibleServerClient class.
     * @param credentials Subscription credentials which uniquely identify client subscription.
     * @param subscriptionId The ID of the target subscription.
     * @param options The parameter options
     */
    constructor(credentials: coreAuth.TokenCredential, subscriptionId: string, options?: MySQLManagementFlexibleServerClientOptionalParams);
    /** A function that adds a policy that sets the api-version (or equivalent) to reflect the library version. */
    private addCustomApiVersionPolicy;
    servers: Servers;
    replicas: Replicas;
    backups: Backups;
    firewallRules: FirewallRules;
    databases: Databases;
    configurations: Configurations;
    locationBasedCapabilities: LocationBasedCapabilities;
    checkVirtualNetworkSubnetUsage: CheckVirtualNetworkSubnetUsage;
    checkNameAvailability: CheckNameAvailability;
    getPrivateDnsZoneSuffix: GetPrivateDnsZoneSuffix;
    operations: Operations;
}

/** Optional parameters. */
export declare interface MySQLManagementFlexibleServerClientOptionalParams extends coreClient.ServiceClientOptions {
    /** server parameter */
    $host?: string;
    /** Api Version */
    apiVersion?: string;
    /** Overrides client endpoint. */
    endpoint?: string;
}

/** Represents a resource name availability. */
export declare interface NameAvailability {
    /** Error Message. */
    message?: string;
    /** Indicates whether the resource name is available. */
    nameAvailable?: boolean;
    /** Reason for name being unavailable. */
    reason?: string;
}

/** Request from client to check resource name availability. */
export declare interface NameAvailabilityRequest {
    /** Resource name to verify. */
    name: string;
    /** Resource type used for verification. */
    type?: string;
}

/** Network related properties of a server */
export declare interface Network {
    /**
     * Whether or not public network access is allowed for this server. Value is 'Disabled' when server has VNet integration.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly publicNetworkAccess?: EnableStatusEnum;
    /** Delegated subnet resource id used to setup vnet for a server. */
    delegatedSubnetResourceId?: string;
    /** Private DNS zone resource id. */
    privateDnsZoneResourceId?: string;
}

/** REST API operation definition. */
export declare interface Operation {
    /** The name of the operation being performed on this particular object. */
    name?: string;
    /** The localized display information for this particular operation or action. */
    display?: OperationDisplay;
    /** The intended executor of the operation. */
    origin?: string;
    /** Additional descriptions for the operation. */
    properties?: {
        [propertyName: string]: Record<string, unknown>;
    };
}

/** Display metadata associated with the operation. */
export declare interface OperationDisplay {
    /** Operation resource provider name. */
    provider?: string;
    /** Resource on which the operation is performed. */
    resource?: string;
    /** Localized friendly name for the operation. */
    operation?: string;
    /** Operation description. */
    description?: string;
}

/** A list of resource provider operations. */
export declare interface OperationListResult {
    /** Collection of available operation details */
    value?: Operation[];
    /** URL client should use to fetch the next page (per server side paging). */
    nextLink?: string;
}

/** Interface representing a Operations. */
export declare interface Operations {
    /**
     * Lists all of the available REST API operations.
     * @param options The options parameters.
     */
    list(options?: OperationsListOptionalParams): PagedAsyncIterableIterator<Operation>;
}

/** Optional parameters. */
export declare interface OperationsListNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listNext operation. */
export declare type OperationsListNextResponse = OperationListResult;

/** Optional parameters. */
export declare interface OperationsListOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the list operation. */
export declare type OperationsListResponse = OperationListResult;

/** The resource model definition for a Azure Resource Manager proxy resource. It will not have tags and a location */
export declare interface ProxyResource extends Resource {
}

/** Interface representing a Replicas. */
export declare interface Replicas {
    /**
     * List all the replicas for a given server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    listByServer(resourceGroupName: string, serverName: string, options?: ReplicasListByServerOptionalParams): PagedAsyncIterableIterator<Server>;
}

/** Optional parameters. */
export declare interface ReplicasListByServerNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServerNext operation. */
export declare type ReplicasListByServerNextResponse = ServerListResult;

/** Optional parameters. */
export declare interface ReplicasListByServerOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByServer operation. */
export declare type ReplicasListByServerResponse = ServerListResult;

/**
 * Defines values for ReplicationRole. \
 * {@link KnownReplicationRole} can be used interchangeably with ReplicationRole,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **None** \
 * **Source** \
 * **Replica**
 */
export declare type ReplicationRole = string;

/** Common fields that are returned in the response for all Azure Resource Manager resources */
export declare interface Resource {
    /**
     * Fully qualified resource ID for the resource. Ex - /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly id?: string;
    /**
     * The name of the resource
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly name?: string;
    /**
     * The type of the resource. E.g. "Microsoft.Compute/virtualMachines" or "Microsoft.Storage/storageAccounts"
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly type?: string;
}

/** Represents a server. */
export declare interface Server extends TrackedResource {
    /** The SKU (pricing tier) of the server. */
    sku?: Sku;
    /**
     * The system metadata relating to this resource.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly systemData?: SystemData;
    /** The administrator's login name of a server. Can only be specified when the server is being created (and is required for creation). */
    administratorLogin?: string;
    /**
     * The password of the administrator login (required for server creation).
     * This value contains a credential. Consider obscuring before showing to users
     */
    administratorLoginPassword?: string;
    /** Server version. */
    version?: ServerVersion;
    /** availability Zone information of the server. */
    availabilityZone?: string;
    /** The mode to create a new MySQL server. */
    createMode?: CreateMode;
    /** The source MySQL server id. */
    sourceServerResourceId?: string;
    /** Restore point creation time (ISO8601 format), specifying the time to restore from. */
    restorePointInTime?: Date;
    /** The replication role. */
    replicationRole?: ReplicationRole;
    /**
     * The maximum number of replicas that a primary server can have.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly replicaCapacity?: number;
    /**
     * The state of a server.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly state?: ServerState;
    /**
     * The fully qualified domain name of a server.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly fullyQualifiedDomainName?: string;
    /** Storage related properties of a server. */
    storage?: Storage_2;
    /** Backup related properties of a server. */
    backup?: Backup;
    /** High availability related properties of a server. */
    highAvailability?: HighAvailability;
    /** Network related properties of a server. */
    network?: Network;
    /** Maintenance window of a server. */
    maintenanceWindow?: MaintenanceWindow;
}

/** Server backup properties */
export declare interface ServerBackup extends ProxyResource {
    /**
     * The system metadata relating to this resource.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly systemData?: SystemData;
    /** Backup type. */
    backupType?: string;
    /** Backup completed time (ISO8601 format). */
    completedTime?: Date;
    /** Backup source */
    source?: string;
}

/** A list of server backups. */
export declare interface ServerBackupListResult {
    /** The list of backups of a server. */
    value?: ServerBackup[];
    /** The link used to get the next page of operations. */
    nextLink?: string;
}

/** Server edition capabilities. */
export declare interface ServerEditionCapability {
    /**
     * Server edition name
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly name?: string;
    /**
     * A list of supported storage editions
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly supportedStorageEditions?: StorageEditionCapability[];
    /**
     * A list of supported server versions.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly supportedServerVersions?: ServerVersionCapability[];
}

/** Parameters allowed to update for a server. */
export declare interface ServerForUpdate {
    /** The SKU (pricing tier) of the server. */
    sku?: Sku;
    /** Application-specific metadata in the form of key-value pairs. */
    tags?: {
        [propertyName: string]: string;
    };
    /**
     * The password of the administrator login.
     * This value contains a credential. Consider obscuring before showing to users
     */
    administratorLoginPassword?: string;
    /** Storage related properties of a server. */
    storage?: Storage_2;
    /** Backup related properties of a server. */
    backup?: Backup;
    /** High availability related properties of a server. */
    highAvailability?: HighAvailability;
    /** Maintenance window of a server. */
    maintenanceWindow?: MaintenanceWindow;
    /** The replication role of the server. */
    replicationRole?: ReplicationRole;
}

/** A list of servers. */
export declare interface ServerListResult {
    /** The list of servers */
    value?: Server[];
    /** The link used to get the next page of operations. */
    nextLink?: string;
}

/** Server restart parameters. */
export declare interface ServerRestartParameter {
    /** Whether or not failover to standby server when restarting a server with high availability enabled. */
    restartWithFailover?: EnableStatusEnum;
    /** The maximum allowed failover time in seconds. */
    maxFailoverSeconds?: number;
}

/** Interface representing a Servers. */
export declare interface Servers {
    /**
     * List all the servers in a given resource group.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param options The options parameters.
     */
    listByResourceGroup(resourceGroupName: string, options?: ServersListByResourceGroupOptionalParams): PagedAsyncIterableIterator<Server>;
    /**
     * List all the servers in a given subscription.
     * @param options The options parameters.
     */
    list(options?: ServersListOptionalParams): PagedAsyncIterableIterator<Server>;
    /**
     * Creates a new server or updates an existing server. The update action will overwrite the existing
     * server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param parameters The required parameters for creating or updating a server.
     * @param options The options parameters.
     */
    beginCreate(resourceGroupName: string, serverName: string, parameters: Server, options?: ServersCreateOptionalParams): Promise<PollerLike<PollOperationState<ServersCreateResponse>, ServersCreateResponse>>;
    /**
     * Creates a new server or updates an existing server. The update action will overwrite the existing
     * server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param parameters The required parameters for creating or updating a server.
     * @param options The options parameters.
     */
    beginCreateAndWait(resourceGroupName: string, serverName: string, parameters: Server, options?: ServersCreateOptionalParams): Promise<ServersCreateResponse>;
    /**
     * Updates an existing server. The request body can contain one to many of the properties present in
     * the normal server definition.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param parameters The required parameters for updating a server.
     * @param options The options parameters.
     */
    beginUpdate(resourceGroupName: string, serverName: string, parameters: ServerForUpdate, options?: ServersUpdateOptionalParams): Promise<PollerLike<PollOperationState<ServersUpdateResponse>, ServersUpdateResponse>>;
    /**
     * Updates an existing server. The request body can contain one to many of the properties present in
     * the normal server definition.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param parameters The required parameters for updating a server.
     * @param options The options parameters.
     */
    beginUpdateAndWait(resourceGroupName: string, serverName: string, parameters: ServerForUpdate, options?: ServersUpdateOptionalParams): Promise<ServersUpdateResponse>;
    /**
     * Deletes a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    beginDelete(resourceGroupName: string, serverName: string, options?: ServersDeleteOptionalParams): Promise<PollerLike<PollOperationState<void>, void>>;
    /**
     * Deletes a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    beginDeleteAndWait(resourceGroupName: string, serverName: string, options?: ServersDeleteOptionalParams): Promise<void>;
    /**
     * Gets information about a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    get(resourceGroupName: string, serverName: string, options?: ServersGetOptionalParams): Promise<ServersGetResponse>;
    /**
     * Manual failover a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    beginFailover(resourceGroupName: string, serverName: string, options?: ServersFailoverOptionalParams): Promise<PollerLike<PollOperationState<void>, void>>;
    /**
     * Manual failover a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    beginFailoverAndWait(resourceGroupName: string, serverName: string, options?: ServersFailoverOptionalParams): Promise<void>;
    /**
     * Restarts a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param parameters The required parameters for restarting a server.
     * @param options The options parameters.
     */
    beginRestart(resourceGroupName: string, serverName: string, parameters: ServerRestartParameter, options?: ServersRestartOptionalParams): Promise<PollerLike<PollOperationState<void>, void>>;
    /**
     * Restarts a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param parameters The required parameters for restarting a server.
     * @param options The options parameters.
     */
    beginRestartAndWait(resourceGroupName: string, serverName: string, parameters: ServerRestartParameter, options?: ServersRestartOptionalParams): Promise<void>;
    /**
     * Starts a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    beginStart(resourceGroupName: string, serverName: string, options?: ServersStartOptionalParams): Promise<PollerLike<PollOperationState<void>, void>>;
    /**
     * Starts a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    beginStartAndWait(resourceGroupName: string, serverName: string, options?: ServersStartOptionalParams): Promise<void>;
    /**
     * Stops a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    beginStop(resourceGroupName: string, serverName: string, options?: ServersStopOptionalParams): Promise<PollerLike<PollOperationState<void>, void>>;
    /**
     * Stops a server.
     * @param resourceGroupName The name of the resource group. The name is case insensitive.
     * @param serverName The name of the server.
     * @param options The options parameters.
     */
    beginStopAndWait(resourceGroupName: string, serverName: string, options?: ServersStopOptionalParams): Promise<void>;
}

/** Optional parameters. */
export declare interface ServersCreateOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Contains response data for the create operation. */
export declare type ServersCreateResponse = Server;

/** Optional parameters. */
export declare interface ServersDeleteOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Optional parameters. */
export declare interface ServersFailoverOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Optional parameters. */
export declare interface ServersGetOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the get operation. */
export declare type ServersGetResponse = Server;

/** Optional parameters. */
export declare interface ServersListByResourceGroupNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByResourceGroupNext operation. */
export declare type ServersListByResourceGroupNextResponse = ServerListResult;

/** Optional parameters. */
export declare interface ServersListByResourceGroupOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listByResourceGroup operation. */
export declare type ServersListByResourceGroupResponse = ServerListResult;

/** Optional parameters. */
export declare interface ServersListNextOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the listNext operation. */
export declare type ServersListNextResponse = ServerListResult;

/** Optional parameters. */
export declare interface ServersListOptionalParams extends coreClient.OperationOptions {
}

/** Contains response data for the list operation. */
export declare type ServersListResponse = ServerListResult;

/** Optional parameters. */
export declare interface ServersRestartOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Optional parameters. */
export declare interface ServersStartOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Optional parameters. */
export declare interface ServersStopOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/**
 * Defines values for ServerState. \
 * {@link KnownServerState} can be used interchangeably with ServerState,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Ready** \
 * **Dropping** \
 * **Disabled** \
 * **Starting** \
 * **Stopping** \
 * **Stopped** \
 * **Updating**
 */
export declare type ServerState = string;

/** Optional parameters. */
export declare interface ServersUpdateOptionalParams extends coreClient.OperationOptions {
    /** Delay to wait until next poll, in milliseconds. */
    updateIntervalInMs?: number;
    /** A serialized poller which can be used to resume an existing paused Long-Running-Operation. */
    resumeFrom?: string;
}

/** Contains response data for the update operation. */
export declare type ServersUpdateResponse = Server;

/**
 * Defines values for ServerVersion. \
 * {@link KnownServerVersion} can be used interchangeably with ServerVersion,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **5.7** \
 * **8.0.21**
 */
export declare type ServerVersion = string;

/** Server version capabilities. */
export declare interface ServerVersionCapability {
    /**
     * server version
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly name?: string;
    /**
     * A list of supported Skus
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly supportedSkus?: SkuCapability[];
}

/** Billing information related properties of a server. */
export declare interface Sku {
    /** The name of the sku, e.g. Standard_D32s_v3. */
    name: string;
    /** The tier of the particular SKU, e.g. GeneralPurpose. */
    tier: SkuTier;
}

/** Sku capability */
export declare interface SkuCapability {
    /**
     * vCore name
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly name?: string;
    /**
     * supported vCores
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly vCores?: number;
    /**
     * supported IOPS
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly supportedIops?: number;
    /**
     * supported memory per vCore in MB
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly supportedMemoryPerVCoreMB?: number;
}

/**
 * Defines values for SkuTier. \
 * {@link KnownSkuTier} can be used interchangeably with SkuTier,
 *  this enum contains the known values that the service supports.
 * ### Known values supported by the service
 * **Burstable** \
 * **GeneralPurpose** \
 * **MemoryOptimized**
 */
export declare type SkuTier = string;

/** Storage Profile properties of a server */
declare interface Storage_2 {
    /** Max storage size allowed for a server. */
    storageSizeGB?: number;
    /** Storage IOPS for a server. */
    iops?: number;
    /** Enable Storage Auto Grow or not. */
    autoGrow?: EnableStatusEnum;
    /**
     * The sku name of the server storage.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly storageSku?: string;
}
export { Storage_2 as Storage }

/** storage edition capability */
export declare interface StorageEditionCapability {
    /**
     * storage edition name
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly name?: string;
    /**
     * The minimal supported storage size.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly minStorageSize?: number;
    /**
     * The maximum supported storage size.
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly maxStorageSize?: number;
    /**
     * Minimal backup retention days
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly minBackupRetentionDays?: number;
    /**
     * Maximum backup retention days
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly maxBackupRetentionDays?: number;
}

/** Metadata pertaining to creation and last modification of the resource. */
export declare interface SystemData {
    /** The identity that created the resource. */
    createdBy?: string;
    /** The type of identity that created the resource. */
    createdByType?: CreatedByType;
    /** The timestamp of resource creation (UTC). */
    createdAt?: Date;
    /** The identity that last modified the resource. */
    lastModifiedBy?: string;
    /** The type of identity that last modified the resource. */
    lastModifiedByType?: CreatedByType;
    /** The timestamp of resource last modification (UTC) */
    lastModifiedAt?: Date;
}

/** The resource model definition for an Azure Resource Manager tracked top level resource which has 'tags' and a 'location' */
export declare interface TrackedResource extends Resource {
    /** Resource tags. */
    tags?: {
        [propertyName: string]: string;
    };
    /** The geo-location where the resource lives */
    location: string;
}

/** Virtual network subnet usage parameter */
export declare interface VirtualNetworkSubnetUsageParameter {
    /** Virtual network resource id. */
    virtualNetworkResourceId?: string;
}

/** Virtual network subnet usage data. */
export declare interface VirtualNetworkSubnetUsageResult {
    /**
     * A list of delegated subnet usage
     * NOTE: This property will not be serialized. It can only be populated by the server.
     */
    readonly delegatedSubnetsUsage?: DelegatedSubnetUsage[];
}

export { }
