export interface OrganizationConfiguration {
    /** Specifies when organization rules should be applied relative to account rules. */
    ruleApplyOrder?: 'BeforeAccountRules' | 'AfterAccountRules';
    /** List of specific Amazon Web Services account IDs where the organization rule should be applied. */
    accountIds?: string[];
}
export interface Criteria {
    /** Filter criteria for Amazon Web Services regions where resources must be located. */
    region?: any[];
    /** Filter criteria for specific resource ARNs to include or exclude. */
    resourceArn?: any[];
    /** Filter criteria for EBS volume types, such as gp2, gp3, io1, io2, st1, or sc1. */
    ebsVolumeType?: any[];
    /** Filter criteria for EBS volume sizes in gibibytes (GiB). */
    ebsVolumeSizeInGib?: any[];
    /** Filter criteria for estimated monthly cost savings from the recommended action. */
    estimatedMonthlySavings?: any[];
    /** Filter criteria for resource tags, allowing filtering by tag key and value combinations. */
    resourceTag?: any[];
    /** Filter criteria for the lookback period in days used to analyze resource utilization. */
    lookBackPeriodInDays?: any[];
    /** Filter criteria indicating whether the recommended action requires a resource restart. */
    restartNeeded?: any[];
}
export interface Schedule {
    /** The expression that defines when the schedule runs. cron expression is supported. A cron expression consists of six fields separated by white spaces: (minutes hours day_of_month month day_of_week year */
    scheduleExpression?: string;
    /** The timezone to use when interpreting the schedule expression. */
    scheduleExpressionTimezone?: string;
    /** The time window in minutes during which the automation rule can start implementing recommended actions. */
    executionWindowInMinutes?: number;
}
export interface Tag {
    /** The tag key, which can be up to 128 characters long. */
    key: string;
    /** The tag value, which can be up to 256 characters long. */
    value: string;
}
export interface AutomationEventFilter {
    /** The name of the filter to apply. */
    name: 'AccountId' | 'ResourceType' | 'EventType' | 'EventStatus';
    /** The values to use for the specified filter. */
    values: any[];
}
export interface OrganizationScope {
    /** List of Amazon Web Services account IDs to include in the organization scope. */
    accountIds?: string[];
}
export interface Filter {
    /** The name of the filter field to apply. */
    name: 'Name' | 'RecommendedActionType' | 'Status' | 'RuleType' | 'OrganizationConfigurationRuleApplyOrder' | 'AccountId';
    /** The list of values to filter by for the specified filter field. */
    values: any[];
}
export interface RecommendedActionFilter {
    /** The name of the filter field to apply. */
    name: 'ResourceType' | 'RecommendedActionType' | 'ResourceId' | 'LookBackPeriodInDays' | 'CurrentResourceDetailsEbsVolumeType' | 'ResourceTagsKey' | 'ResourceTagsValue' | 'AccountId' | 'RestartNeeded';
    /** List of filter values to match against the specified filter name. Used to narrow down recommended actions based on specific criteria. */
    values: any[];
}
export interface AssociateAccountsInput {
    /** The IDs of the member accounts to associate. You can specify up to 50 account IDs. */
    accountIds: string[];
    /** A unique identifier to ensure idempotency of the request. Valid for 24 hours after creation. */
    clientToken?: string;
}
export interface CreateAutomationRuleInput {
    /** The name of the automation rule. */
    name: string;
    /** The types of recommended actions this rule will automate. */
    recommendedActionTypes: 'SnapshotAndDeleteUnattachedEbsVolume' | 'UpgradeEbsVolumeType'[];
    /** The type of rule. Only the management account or a delegated administrator can set the ruleType to be OrganizationRule. */
    ruleType: 'OrganizationRule' | 'AccountRule';
    /** The schedule for when the rule should run. */
    schedule: Schedule;
    /** The status of the rule */
    status: 'Active' | 'Inactive';
    /** A unique identifier to ensure idempotency of the request. */
    clientToken?: string;
    /** A set of conditions that specify which recommended action qualify for implementation. When a rule is active and a recommended action matches these criteria, Compute Optimizer implements the action at  */
    criteria?: Criteria;
    /** A description of the automation rule. */
    description?: string;
    /** Configuration for organization-level rules. Required for OrganizationRule type. */
    organizationConfiguration?: OrganizationConfiguration;
    /** A string representation of a decimal number between 0 and 1 (having up to 30 digits after the decimal point) that determines the priority of the rule. When multiple rules match the same recommended ac */
    priority?: string;
    /** The tags to associate with the rule. */
    tags?: Tag[];
}
export interface DeleteAutomationRuleInput {
    /** The ARN of the rule to delete. */
    ruleArn: string;
    /** The revision number of the rule to delete. */
    ruleRevision: number;
    /** A unique identifier to ensure idempotency of the request. */
    clientToken?: string;
}
export interface DisassociateAccountsInput {
    /** The IDs of the member accounts to disassociate. */
    accountIds: string[];
    /** A unique identifier to ensure idempotency of the request. */
    clientToken?: string;
}
export interface GetAutomationEventInput {
    /** The ID of the automation event to retrieve. */
    eventId: string;
}
export interface GetAutomationRuleInput {
    /** The ARN of the rule to retrieve. */
    ruleArn: string;
}
export interface ListAccountsInput {
    /** The maximum number of results to return in a single call. */
    maxResults?: number;
    /** The token for the next page of results. */
    nextToken?: string;
}
export interface ListAutomationEventsInput {
    /** The end of the time range to query for events. */
    endTimeExclusive?: string;
    /** The filters to apply to the list of automation events. */
    filters?: AutomationEventFilter[];
    /** The maximum number of results to return in a single call. */
    maxResults?: number;
    /** The token for the next page of results. */
    nextToken?: string;
    /** The start of the time range to query for events. */
    startTimeInclusive?: string;
}
export interface ListAutomationEventStepsInput {
    /** The ID of the automation event. */
    eventId: string;
    /** The maximum number of automation event steps to return in a single response. Valid range is 1-1000. */
    maxResults?: number;
    /** A token used for pagination to retrieve the next set of results when the response is truncated. */
    nextToken?: string;
}
export interface ListAutomationEventSummariesInput {
    /** The end date for filtering automation event summaries, exclusive. Events created before this date will be included. */
    endDateExclusive?: string;
    /** The filters to apply to the list of automation event summaries. */
    filters?: AutomationEventFilter[];
    /** The maximum number of automation event summaries to return in a single response. Valid range is 1-1000. */
    maxResults?: number;
    /** A token used for pagination to retrieve the next set of results when the response is truncated. */
    nextToken?: string;
    /** The start date for filtering automation event summaries, inclusive. Events created on or after this date will be included. */
    startDateInclusive?: string;
}
export interface ListAutomationRulePreviewInput {
    /** The types of recommended actions to include in the preview. */
    recommendedActionTypes: 'SnapshotAndDeleteUnattachedEbsVolume' | 'UpgradeEbsVolumeType'[];
    /** The type of rule. Only the management account or a delegated administrator can set the ruleType to be OrganizationRule. */
    ruleType: 'OrganizationRule' | 'AccountRule';
    /** A set of conditions that specify which recommended action qualify for implementation. When a rule is active and a recommended action matches these criteria, Compute Optimizer implements the action at  */
    criteria?: Criteria;
    /** The maximum number of automation rule preview results to return in a single response. Valid range is 1-1000. */
    maxResults?: number;
    /** A token used for pagination to retrieve the next set of results when the response is truncated. */
    nextToken?: string;
    /** The organizational scope for the rule preview. */
    organizationScope?: OrganizationScope;
}
export interface ListAutomationRulePreviewSummariesInput {
    /** The types of recommended actions to include in the preview. */
    recommendedActionTypes: 'SnapshotAndDeleteUnattachedEbsVolume' | 'UpgradeEbsVolumeType'[];
    /** The type of rule. */
    ruleType: 'OrganizationRule' | 'AccountRule';
    criteria?: Criteria;
    /** The maximum number of automation rule preview summaries to return in a single response. Valid range is 1-1000. */
    maxResults?: number;
    /** A token used for pagination to retrieve the next set of results when the response is truncated. */
    nextToken?: string;
    /** The organizational scope for the rule preview. */
    organizationScope?: OrganizationScope;
}
export interface ListAutomationRulesInput {
    /** The filters to apply to the list of automation rules. */
    filters?: Filter[];
    /** The maximum number of automation rules to return in a single response. Valid range is 1-1000. */
    maxResults?: number;
    /** A token used for pagination to retrieve the next set of results when the response is truncated. */
    nextToken?: string;
}
export interface ListRecommendedActionsInput {
    /** The filters to apply to the list of recommended actions. */
    filters?: RecommendedActionFilter[];
    /** The maximum number of recommended actions to return in a single response. Valid range is 1-1000. */
    maxResults?: number;
    /** A token used for pagination to retrieve the next set of results when the response is truncated. */
    nextToken?: string;
}
export interface ListRecommendedActionSummariesInput {
    /** A list of filters to apply when retrieving recommended action summaries. Filters can be based on resource type, action type, account ID, and other criteria. */
    filters?: RecommendedActionFilter[];
    /** The maximum number of recommended action summaries to return in a single response. Valid range is 1-1000. */
    maxResults?: number;
    /** A token used for pagination to retrieve the next set of results when the response is truncated. */
    nextToken?: string;
}
export interface ListTagsForResourceInput {
    /** The ARN of the resource to list tags for. */
    resourceArn: string;
}
export interface RollbackAutomationEventInput {
    /** The ID of the automation event to roll back. */
    eventId: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens. */
    clientToken?: string;
}
export interface StartAutomationEventInput {
    /** The ID of the recommended action to automate. */
    recommendedActionId: string;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens. */
    clientToken?: string;
}
export interface TagResourceInput {
    /** The ARN of the resource to tag. */
    resourceArn: string;
    /** The revision number of the automation rule to tag. This ensures you're tagging the correct version of the rule. */
    ruleRevision: number;
    /** The tags to add to the resource. */
    tags: Tag[];
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens. */
    clientToken?: string;
}
export interface UntagResourceInput {
    /** The ARN of the resource to untag. */
    resourceArn: string;
    /** The revision number of the automation rule to untag. This ensures you're untagging the correct version of the rule. */
    ruleRevision: number;
    /** The keys of the tags to remove from the resource. */
    tagKeys: string[];
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens. */
    clientToken?: string;
}
export interface UpdateAutomationRuleInput {
    /** The ARN of the rule to update. */
    ruleArn: string;
    /** The revision number of the rule to update. */
    ruleRevision: number;
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens. */
    clientToken?: string;
    criteria?: Criteria;
    /** The updated description of the automation rule. Can be up to 1024 characters long and contain alphanumeric characters, underscores, hyphens, spaces, and certain special characters. */
    description?: string;
    /** The updated name of the automation rule. Must be 1-128 characters long and contain only alphanumeric characters, underscores, and hyphens. */
    name?: string;
    /** Updated configuration settings for organization-wide rules, including rule application order and target account IDs. */
    organizationConfiguration?: OrganizationConfiguration;
    /** The updated priority level of the automation rule, used to determine execution order when multiple rules apply to the same resource. */
    priority?: string;
    /** Updated list of recommended action types that this rule can execute, such as SnapshotAndDeleteUnattachedEbsVolume or UpgradeEbsVolumeType. */
    recommendedActionTypes?: 'SnapshotAndDeleteUnattachedEbsVolume' | 'UpgradeEbsVolumeType'[];
    /** The updated type of automation rule. Can be either OrganizationRule for organization-wide rules or AccountRule for account-specific rules. */
    ruleType?: 'OrganizationRule' | 'AccountRule';
    /** The updated schedule configuration for when the automation rule should execute, including cron expression, timezone, and execution window. */
    schedule?: Schedule;
    /** The updated status of the automation rule. Can be Active or Inactive. */
    status?: 'Active' | 'Inactive';
}
export interface UpdateEnrollmentConfigurationInput {
    /** The desired enrollment status. Active - Enables the Automation feature for your account. Inactive - Disables the Automation feature for your account and stops all of your automation rules. If you opt  */
    status: 'Active' | 'Inactive' | 'Pending' | 'Failed';
    /** A unique, case-sensitive identifier that you provide to ensure the idempotency of the request. Must be 1-64 characters long and contain only alphanumeric characters, underscores, and hyphens. */
    clientToken?: string;
}
/** Compute Optimizer Automation service binding for Step Functions SDK integrations. */
export declare class ComputeOptimizerAutomation {
    constructor();
    associateAccounts<T>(params: AssociateAccountsInput): Promise<T>;
    createAutomationRule<T>(params: CreateAutomationRuleInput): Promise<T>;
    deleteAutomationRule<T>(params: DeleteAutomationRuleInput): Promise<T>;
    disassociateAccounts<T>(params: DisassociateAccountsInput): Promise<T>;
    getAutomationEvent<T>(params: GetAutomationEventInput): Promise<T>;
    getAutomationRule<T>(params: GetAutomationRuleInput): Promise<T>;
    getEnrollmentConfiguration<T>(params: Record<string, any>): Promise<T>;
    listAccounts<T>(params: ListAccountsInput): Promise<T>;
    listAutomationEvents<T>(params: ListAutomationEventsInput): Promise<T>;
    listAutomationEventSteps<T>(params: ListAutomationEventStepsInput): Promise<T>;
    listAutomationEventSummaries<T>(params: ListAutomationEventSummariesInput): Promise<T>;
    listAutomationRulePreview<T>(params: ListAutomationRulePreviewInput): Promise<T>;
    listAutomationRulePreviewSummaries<T>(params: ListAutomationRulePreviewSummariesInput): Promise<T>;
    listAutomationRules<T>(params: ListAutomationRulesInput): Promise<T>;
    listRecommendedActions<T>(params: ListRecommendedActionsInput): Promise<T>;
    listRecommendedActionSummaries<T>(params: ListRecommendedActionSummariesInput): Promise<T>;
    listTagsForResource<T>(params: ListTagsForResourceInput): Promise<T>;
    rollbackAutomationEvent<T>(params: RollbackAutomationEventInput): Promise<T>;
    startAutomationEvent<T>(params: StartAutomationEventInput): Promise<T>;
    tagResource<T>(params: TagResourceInput): Promise<T>;
    untagResource<T>(params: UntagResourceInput): Promise<T>;
    updateAutomationRule<T>(params: UpdateAutomationRuleInput): Promise<T>;
    updateEnrollmentConfiguration<T>(params: UpdateEnrollmentConfigurationInput): Promise<T>;
}
//# sourceMappingURL=ComputeOptimizerAutomation.d.ts.map