export interface Validator {
    /** AppConfig supports validators of type JSON_SCHEMA and LAMBDA */
    Type: 'JSON_SCHEMA' | 'LAMBDA';
    /** Either the JSON Schema content or the Amazon Resource Name (ARN) of an Lambda function. */
    Content: string;
}
export interface Monitor {
    /** Amazon Resource Name (ARN) of the Amazon CloudWatch alarm. */
    AlarmArn: string;
    /** ARN of an Identity and Access Management (IAM) role for AppConfig to monitor AlarmArn. */
    AlarmRoleArn?: string;
}
export interface Parameter {
    /** Information about the parameter. */
    Description?: string;
    /** A parameter value must be specified in the extension association. */
    Required?: boolean;
    /** Indicates whether this parameter's value can be supplied at the extension's action point instead of during extension association. Dynamic parameters can't be marked Required. */
    Dynamic?: boolean;
}
export interface DeletionProtectionSettings {
    /** A parameter that indicates if deletion protection is enabled or not. */
    Enabled?: boolean;
    /** The time interval during which AppConfig monitors for calls to GetLatestConfiguration or for a configuration profile or from an environment. AppConfig returns an error if a user calls or for the desig */
    ProtectionPeriodInMinutes?: number;
}
export interface CreateApplicationInput {
    /** A name for the application. */
    Name: string;
    /** A description of the application. */
    Description?: string;
    /** Metadata to assign to the application. Tags help organize and categorize your AppConfig resources. Each tag consists of a key and an optional value, both of which you define. */
    Tags?: Record<string, string>;
}
export interface CreateConfigurationProfileInput {
    /** The application ID. */
    ApplicationId: string;
    /** A URI to locate the configuration. You can specify the following: For the AppConfig hosted configuration store and for feature flags, specify hosted. For an Amazon Web Services Systems Manager Paramet */
    LocationUri: string;
    /** A name for the configuration profile. */
    Name: string;
    /** A description of the configuration profile. */
    Description?: string;
    /** The identifier for an Key Management Service key to encrypt new configuration data versions in the AppConfig hosted configuration store. This attribute is only used for hosted configuration types. The */
    KmsKeyIdentifier?: string;
    /** The ARN of an IAM role with permission to access the configuration at the specified LocationUri. A retrieval role ARN is not required for configurations stored in CodePipeline or the AppConfig hosted  */
    RetrievalRoleArn?: string;
    /** Metadata to assign to the configuration profile. Tags help organize and categorize your AppConfig resources. Each tag consists of a key and an optional value, both of which you define. */
    Tags?: Record<string, string>;
    /** The type of configurations contained in the profile. AppConfig supports feature flags and freeform configurations. We recommend you create feature flag configurations to enable or disable new features */
    Type?: string;
    /** A list of methods for validating the configuration. */
    Validators?: Validator[];
}
export interface CreateDeploymentStrategyInput {
    /** Total amount of time for a deployment to last. */
    DeploymentDurationInMinutes: number;
    /** The percentage of targets to receive a deployed configuration during each interval. */
    GrowthFactor: number;
    /** A name for the deployment strategy. */
    Name: string;
    /** A description of the deployment strategy. */
    Description?: string;
    /** Specifies the amount of time AppConfig monitors for Amazon CloudWatch alarms after the configuration has been deployed to 100% of its targets, before considering the deployment to be complete. If an a */
    FinalBakeTimeInMinutes?: number;
    /** The algorithm used to define how percentage grows over time. AppConfig supports the following growth types: Linear: For this type, AppConfig processes the deployment by dividing the total number of ta */
    GrowthType?: 'LINEAR' | 'EXPONENTIAL';
    /** Save the deployment strategy to a Systems Manager (SSM) document. */
    ReplicateTo?: 'NONE' | 'SSM_DOCUMENT';
    /** Metadata to assign to the deployment strategy. Tags help organize and categorize your AppConfig resources. Each tag consists of a key and an optional value, both of which you define. */
    Tags?: Record<string, string>;
}
export interface CreateEnvironmentInput {
    /** The application ID. */
    ApplicationId: string;
    /** A name for the environment. */
    Name: string;
    /** A description of the environment. */
    Description?: string;
    /** Amazon CloudWatch alarms to monitor during the deployment process. */
    Monitors?: Monitor[];
    /** Metadata to assign to the environment. Tags help organize and categorize your AppConfig resources. Each tag consists of a key and an optional value, both of which you define. */
    Tags?: Record<string, string>;
}
export interface CreateExtensionInput {
    /** The actions defined in the extension. */
    Actions: Record<string, any[]>;
    /** A name for the extension. Each extension name in your account must be unique. Extension versions use the same name. */
    Name: string;
    /** Information about the extension. */
    Description?: string;
    /** You can omit this field when you create an extension. When you create a new version, specify the most recent current version number. For example, you create version 3, enter 2 for this field. */
    LatestVersionNumber?: number;
    /** The parameters accepted by the extension. You specify parameter values when you associate the extension to an AppConfig resource by using the CreateExtensionAssociation API action. For Lambda extensio */
    Parameters?: Record<string, Parameter>;
    /** Adds one or more tags for the specified extension. Tags are metadata that help you categorize resources in different ways, for example, by purpose, owner, or environment. Each tag consists of a key an */
    Tags?: Record<string, string>;
}
export interface CreateExtensionAssociationInput {
    /** The name, the ID, or the Amazon Resource Name (ARN) of the extension. */
    ExtensionIdentifier: string;
    /** The ARN of an application, configuration profile, or environment. */
    ResourceIdentifier: string;
    /** The version number of the extension. If not specified, AppConfig uses the maximum version of the extension. */
    ExtensionVersionNumber?: number;
    /** The parameter names and values defined in the extensions. Extension parameters marked Required must be entered for this field. */
    Parameters?: Record<string, string>;
    /** Adds one or more tags for the specified extension association. Tags are metadata that help you categorize resources in different ways, for example, by purpose, owner, or environment. Each tag consists */
    Tags?: Record<string, string>;
}
export interface CreateHostedConfigurationVersionInput {
    /** The application ID. */
    ApplicationId: string;
    /** The configuration profile ID. */
    ConfigurationProfileId: string;
    /** The configuration data, as bytes. AppConfig accepts any type of data, including text formats like JSON or TOML, or binary formats like protocol buffers or compressed data. */
    Content: string;
    /** A standard MIME type describing the format of the configuration content. For more information, see Content-Type. */
    ContentType: string;
    /** A description of the configuration. */
    Description?: string;
    /** An optional locking token used to prevent race conditions from overwriting configuration updates when creating a new version. To ensure your data is not overwritten when creating multiple hosted confi */
    LatestVersionNumber?: number;
    /** An optional, user-defined label for the AppConfig hosted configuration version. This value must contain at least one non-numeric character. For example, "v2.2.0". */
    VersionLabel?: string;
}
export interface DeleteApplicationInput {
    /** The ID of the application to delete. */
    ApplicationId: string;
}
export interface DeleteConfigurationProfileInput {
    /** The application ID that includes the configuration profile you want to delete. */
    ApplicationId: string;
    /** The ID of the configuration profile you want to delete. */
    ConfigurationProfileId: string;
    /** A parameter to configure deletion protection. Deletion protection prevents a user from deleting a configuration profile if your application has called either GetLatestConfiguration or for the configur */
    DeletionProtectionCheck?: 'ACCOUNT_DEFAULT' | 'APPLY' | 'BYPASS';
}
export interface DeleteDeploymentStrategyInput {
    /** The ID of the deployment strategy you want to delete. */
    DeploymentStrategyId: string;
}
export interface DeleteEnvironmentInput {
    /** The application ID that includes the environment that you want to delete. */
    ApplicationId: string;
    /** The ID of the environment that you want to delete. */
    EnvironmentId: string;
    /** A parameter to configure deletion protection. Deletion protection prevents a user from deleting an environment if your application called either GetLatestConfiguration or in the environment during the */
    DeletionProtectionCheck?: 'ACCOUNT_DEFAULT' | 'APPLY' | 'BYPASS';
}
export interface DeleteExtensionInput {
    /** The name, ID, or Amazon Resource Name (ARN) of the extension you want to delete. */
    ExtensionIdentifier: string;
    /** A specific version of an extension to delete. If omitted, the highest version is deleted. */
    VersionNumber?: number;
}
export interface DeleteExtensionAssociationInput {
    /** The ID of the extension association to delete. */
    ExtensionAssociationId: string;
}
export interface DeleteHostedConfigurationVersionInput {
    /** The application ID. */
    ApplicationId: string;
    /** The configuration profile ID. */
    ConfigurationProfileId: string;
    /** The versions number to delete. */
    VersionNumber: number;
}
export interface GetApplicationInput {
    /** The ID of the application you want to get. */
    ApplicationId: string;
}
export interface GetConfigurationInput {
    /** The application to get. Specify either the application name or the application ID. */
    Application: string;
    /** The clientId parameter in the following command is a unique, user-specified ID to identify the client for the configuration. This ID enables AppConfig to deploy the configuration in intervals, as defi */
    ClientId: string;
    /** The configuration to get. Specify either the configuration name or the configuration ID. */
    Configuration: string;
    /** The environment to get. Specify either the environment name or the environment ID. */
    Environment: string;
    /** The configuration version returned in the most recent GetConfiguration response. AppConfig uses the value of the ClientConfigurationVersion parameter to identify the configuration version on your clie */
    ClientConfigurationVersion?: string;
}
export interface GetConfigurationProfileInput {
    /** The ID of the application that includes the configuration profile you want to get. */
    ApplicationId: string;
    /** The ID of the configuration profile that you want to get. */
    ConfigurationProfileId: string;
}
export interface GetDeploymentInput {
    /** The ID of the application that includes the deployment you want to get. */
    ApplicationId: string;
    /** The sequence number of the deployment. */
    DeploymentNumber: number;
    /** The ID of the environment that includes the deployment you want to get. */
    EnvironmentId: string;
}
export interface GetDeploymentStrategyInput {
    /** The ID of the deployment strategy to get. */
    DeploymentStrategyId: string;
}
export interface GetEnvironmentInput {
    /** The ID of the application that includes the environment you want to get. */
    ApplicationId: string;
    /** The ID of the environment that you want to get. */
    EnvironmentId: string;
}
export interface GetExtensionInput {
    /** The name, the ID, or the Amazon Resource Name (ARN) of the extension. */
    ExtensionIdentifier: string;
    /** The extension version number. If no version number was defined, AppConfig uses the highest version. */
    VersionNumber?: number;
}
export interface GetExtensionAssociationInput {
    /** The extension association ID to get. */
    ExtensionAssociationId: string;
}
export interface GetHostedConfigurationVersionInput {
    /** The application ID. */
    ApplicationId: string;
    /** The configuration profile ID. */
    ConfigurationProfileId: string;
    /** The version. */
    VersionNumber: number;
}
export interface ListApplicationsInput {
    /** The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. */
    MaxResults?: number;
    /** A token to start the list. Next token is a pagination token generated by AppConfig to describe what page the previous List call ended on. For the first List request, the nextToken should not be set. O */
    NextToken?: string;
}
export interface ListConfigurationProfilesInput {
    /** The application ID. */
    ApplicationId: string;
    /** The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. */
    MaxResults?: number;
    /** A token to start the list. Use this token to get the next set of results. */
    NextToken?: string;
    /** A filter based on the type of configurations that the configuration profile contains. A configuration can be a feature flag or a freeform configuration. */
    Type?: string;
}
export interface ListDeploymentsInput {
    /** The application ID. */
    ApplicationId: string;
    /** The environment ID. */
    EnvironmentId: string;
    /** The maximum number of items that may be returned for this call. If there are items that have not yet been returned, the response will include a non-null NextToken that you can provide in a subsequent  */
    MaxResults?: number;
    /** The token returned by a prior call to this operation indicating the next set of results to be returned. If not specified, the operation will return the first set of results. */
    NextToken?: string;
}
export interface ListDeploymentStrategiesInput {
    /** The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. */
    MaxResults?: number;
    /** A token to start the list. Use this token to get the next set of results. */
    NextToken?: string;
}
export interface ListEnvironmentsInput {
    /** The application ID. */
    ApplicationId: string;
    /** The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. */
    MaxResults?: number;
    /** A token to start the list. Use this token to get the next set of results. */
    NextToken?: string;
}
export interface ListExtensionAssociationsInput {
    /** The name, the ID, or the Amazon Resource Name (ARN) of the extension. */
    ExtensionIdentifier?: string;
    /** The version number for the extension defined in the association. */
    ExtensionVersionNumber?: number;
    /** The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. */
    MaxResults?: number;
    /** A token to start the list. Use this token to get the next set of results or pass null to get the first set of results. */
    NextToken?: string;
    /** The ARN of an application, configuration profile, or environment. */
    ResourceIdentifier?: string;
}
export interface ListExtensionsInput {
    /** The maximum number of items to return for this call. The call also returns a token that you can specify in a subsequent call to get the next set of results. */
    MaxResults?: number;
    /** The extension name. */
    Name?: string;
    /** A token to start the list. Use this token to get the next set of results. */
    NextToken?: string;
}
export interface ListHostedConfigurationVersionsInput {
    /** The application ID. */
    ApplicationId: string;
    /** The configuration profile ID. */
    ConfigurationProfileId: string;
    /** The maximum number of items to return for this call. If MaxResults is not provided in the call, AppConfig returns the maximum of 50. The call also returns a token that you can specify in a subsequent  */
    MaxResults?: number;
    /** A token to start the list. Use this token to get the next set of results. */
    NextToken?: string;
    /** An optional filter that can be used to specify the version label of an AppConfig hosted configuration version. This parameter supports filtering by prefix using a wildcard, for example "v2*". If you d */
    VersionLabel?: string;
}
export interface ListTagsForResourceInput {
    /** The resource ARN. */
    ResourceArn: string;
}
export interface StartDeploymentInput {
    /** The application ID. */
    ApplicationId: string;
    /** The configuration profile ID. */
    ConfigurationProfileId: string;
    /** The configuration version to deploy. If deploying an AppConfig hosted configuration version, you can specify either the version number or version label. For all other configurations, you must specify  */
    ConfigurationVersion: string;
    /** The deployment strategy ID. */
    DeploymentStrategyId: string;
    /** The environment ID. */
    EnvironmentId: string;
    /** A description of the deployment. */
    Description?: string;
    /** A map of dynamic extension parameter names to values to pass to associated extensions with PRE_START_DEPLOYMENT actions. */
    DynamicExtensionParameters?: Record<string, string>;
    /** The KMS key identifier (key ID, key alias, or key ARN). AppConfig uses this ID to encrypt the configuration data using a customer managed key. */
    KmsKeyIdentifier?: string;
    /** Metadata to assign to the deployment. Tags help organize and categorize your AppConfig resources. Each tag consists of a key and an optional value, both of which you define. */
    Tags?: Record<string, string>;
}
export interface StopDeploymentInput {
    /** The application ID. */
    ApplicationId: string;
    /** The sequence number of the deployment. */
    DeploymentNumber: number;
    /** The environment ID. */
    EnvironmentId: string;
    /** A Boolean that enables AppConfig to rollback a COMPLETED deployment to the previous configuration version. This action moves the deployment to a status of REVERTED. */
    AllowRevert?: boolean;
}
export interface TagResourceInput {
    /** The ARN of the resource for which to retrieve tags. */
    ResourceArn: string;
    /** The key-value string map. The valid character set is [a-zA-Z+-=._:/]. The tag key can be up to 128 characters and must not start with aws:. The tag value can be up to 256 characters. */
    Tags: Record<string, string>;
}
export interface UntagResourceInput {
    /** The ARN of the resource for which to remove tags. */
    ResourceArn: string;
    /** The tag keys to delete. */
    TagKeys: string[];
}
export interface UpdateAccountSettingsInput {
    /** A parameter to configure deletion protection. Deletion protection prevents a user from deleting a configuration profile or an environment if AppConfig has called either GetLatestConfiguration or for t */
    DeletionProtection?: DeletionProtectionSettings;
}
export interface UpdateApplicationInput {
    /** The application ID. */
    ApplicationId: string;
    /** A description of the application. */
    Description?: string;
    /** The name of the application. */
    Name?: string;
}
export interface UpdateConfigurationProfileInput {
    /** The application ID. */
    ApplicationId: string;
    /** The ID of the configuration profile. */
    ConfigurationProfileId: string;
    /** A description of the configuration profile. */
    Description?: string;
    /** The identifier for a Key Management Service key to encrypt new configuration data versions in the AppConfig hosted configuration store. This attribute is only used for hosted configuration types. The  */
    KmsKeyIdentifier?: string;
    /** The name of the configuration profile. */
    Name?: string;
    /** The ARN of an IAM role with permission to access the configuration at the specified LocationUri. A retrieval role ARN is not required for configurations stored in CodePipeline or the AppConfig hosted  */
    RetrievalRoleArn?: string;
    /** A list of methods for validating the configuration. */
    Validators?: Validator[];
}
export interface UpdateDeploymentStrategyInput {
    /** The deployment strategy ID. */
    DeploymentStrategyId: string;
    /** Total amount of time for a deployment to last. */
    DeploymentDurationInMinutes?: number;
    /** A description of the deployment strategy. */
    Description?: string;
    /** The amount of time that AppConfig monitors for alarms before considering the deployment to be complete and no longer eligible for automatic rollback. */
    FinalBakeTimeInMinutes?: number;
    /** The percentage of targets to receive a deployed configuration during each interval. */
    GrowthFactor?: number;
    /** The algorithm used to define how percentage grows over time. AppConfig supports the following growth types: Linear: For this type, AppConfig processes the deployment by increments of the growth factor */
    GrowthType?: 'LINEAR' | 'EXPONENTIAL';
}
export interface UpdateEnvironmentInput {
    /** The application ID. */
    ApplicationId: string;
    /** The environment ID. */
    EnvironmentId: string;
    /** A description of the environment. */
    Description?: string;
    /** Amazon CloudWatch alarms to monitor during the deployment process. */
    Monitors?: Monitor[];
    /** The name of the environment. */
    Name?: string;
}
export interface UpdateExtensionInput {
    /** The name, the ID, or the Amazon Resource Name (ARN) of the extension. */
    ExtensionIdentifier: string;
    /** The actions defined in the extension. */
    Actions?: Record<string, any[]>;
    /** Information about the extension. */
    Description?: string;
    /** One or more parameters for the actions called by the extension. */
    Parameters?: Record<string, Parameter>;
    /** The extension version number. */
    VersionNumber?: number;
}
export interface UpdateExtensionAssociationInput {
    /** The system-generated ID for the association. */
    ExtensionAssociationId: string;
    /** The parameter names and values defined in the extension. */
    Parameters?: Record<string, string>;
}
export interface ValidateConfigurationInput {
    /** The application ID. */
    ApplicationId: string;
    /** The configuration profile ID. */
    ConfigurationProfileId: string;
    /** The version of the configuration to validate. */
    ConfigurationVersion: string;
}
/** AppConfig service binding for Step Functions SDK integrations. */
export declare class AppConfig {
    constructor();
    createApplication<T>(params: CreateApplicationInput): Promise<T>;
    createConfigurationProfile<T>(params: CreateConfigurationProfileInput): Promise<T>;
    createDeploymentStrategy<T>(params: CreateDeploymentStrategyInput): Promise<T>;
    createEnvironment<T>(params: CreateEnvironmentInput): Promise<T>;
    createExtension<T>(params: CreateExtensionInput): Promise<T>;
    createExtensionAssociation<T>(params: CreateExtensionAssociationInput): Promise<T>;
    createHostedConfigurationVersion<T>(params: CreateHostedConfigurationVersionInput): Promise<T>;
    deleteApplication<T>(params: DeleteApplicationInput): Promise<T>;
    deleteConfigurationProfile<T>(params: DeleteConfigurationProfileInput): Promise<T>;
    deleteDeploymentStrategy<T>(params: DeleteDeploymentStrategyInput): Promise<T>;
    deleteEnvironment<T>(params: DeleteEnvironmentInput): Promise<T>;
    deleteExtension<T>(params: DeleteExtensionInput): Promise<T>;
    deleteExtensionAssociation<T>(params: DeleteExtensionAssociationInput): Promise<T>;
    deleteHostedConfigurationVersion<T>(params: DeleteHostedConfigurationVersionInput): Promise<T>;
    getAccountSettings<T>(): Promise<T>;
    getApplication<T>(params: GetApplicationInput): Promise<T>;
    getConfiguration<T>(params: GetConfigurationInput): Promise<T>;
    getConfigurationProfile<T>(params: GetConfigurationProfileInput): Promise<T>;
    getDeployment<T>(params: GetDeploymentInput): Promise<T>;
    getDeploymentStrategy<T>(params: GetDeploymentStrategyInput): Promise<T>;
    getEnvironment<T>(params: GetEnvironmentInput): Promise<T>;
    getExtension<T>(params: GetExtensionInput): Promise<T>;
    getExtensionAssociation<T>(params: GetExtensionAssociationInput): Promise<T>;
    getHostedConfigurationVersion<T>(params: GetHostedConfigurationVersionInput): Promise<T>;
    listApplications<T>(params: ListApplicationsInput): Promise<T>;
    listConfigurationProfiles<T>(params: ListConfigurationProfilesInput): Promise<T>;
    listDeployments<T>(params: ListDeploymentsInput): Promise<T>;
    listDeploymentStrategies<T>(params: ListDeploymentStrategiesInput): Promise<T>;
    listEnvironments<T>(params: ListEnvironmentsInput): Promise<T>;
    listExtensionAssociations<T>(params: ListExtensionAssociationsInput): Promise<T>;
    listExtensions<T>(params: ListExtensionsInput): Promise<T>;
    listHostedConfigurationVersions<T>(params: ListHostedConfigurationVersionsInput): Promise<T>;
    listTagsForResource<T>(params: ListTagsForResourceInput): Promise<T>;
    startDeployment<T>(params: StartDeploymentInput): Promise<T>;
    stopDeployment<T>(params: StopDeploymentInput): Promise<T>;
    tagResource<T>(params: TagResourceInput): Promise<T>;
    untagResource<T>(params: UntagResourceInput): Promise<T>;
    updateAccountSettings<T>(params: UpdateAccountSettingsInput): Promise<T>;
    updateApplication<T>(params: UpdateApplicationInput): Promise<T>;
    updateConfigurationProfile<T>(params: UpdateConfigurationProfileInput): Promise<T>;
    updateDeploymentStrategy<T>(params: UpdateDeploymentStrategyInput): Promise<T>;
    updateEnvironment<T>(params: UpdateEnvironmentInput): Promise<T>;
    updateExtension<T>(params: UpdateExtensionInput): Promise<T>;
    updateExtensionAssociation<T>(params: UpdateExtensionAssociationInput): Promise<T>;
    validateConfiguration<T>(params: ValidateConfigurationInput): Promise<T>;
}
//# sourceMappingURL=AppConfig.d.ts.map