export interface TimePeriod {
    /** The beginning of the time period (inclusive). Specify the date in ISO 8601 format, such as 2024-01-01. */
    start: string;
    /** The end of the time period (exclusive). Specify the date in ISO 8601 format, such as 2024-12-31. */
    end: string;
}
export interface OrderBy {
    /** Sorts by dimension values. */
    dimension?: string;
    /** The order that's used to sort the data. */
    order?: 'Asc' | 'Desc';
}
export interface Filter {
    /** Whether or not implementing the recommendation requires a restart. */
    restartNeeded?: boolean;
    /** Whether or not implementing the recommendation can be rolled back. */
    rollbackPossible?: boolean;
    /** The effort required to implement the recommendation. */
    implementationEfforts?: 'VeryLow' | 'Low' | 'Medium' | 'High' | 'VeryHigh'[];
    /** The account to which the recommendation applies. */
    accountIds?: string[];
    /** The Amazon Web Services Region of the resource. */
    regions?: string[];
    /** The resource type of the recommendation. */
    resourceTypes?: 'Ec2Instance' | 'LambdaFunction' | 'EbsVolume' | 'EcsService' | 'Ec2AutoScalingGroup' | 'Ec2InstanceSavingsPlans' | 'ComputeSavingsPlans' | 'SageMakerSavingsPlans' | 'Ec2ReservedInstances' | 'RdsReservedInstances' | 'OpenSearchReservedInstances' | 'RedshiftReservedInstances' | 'ElastiCacheReservedInstances' | 'RdsDbInstanceStorage' | 'RdsDbInstance' | 'AuroraDbClusterStorage' | 'DynamoDbReservedCapacity' | 'MemoryDbReservedInstances' | 'NatGateway'[];
    /** The type of action you can take by adopting the recommendation. */
    actionTypes?: 'Rightsize' | 'Stop' | 'Upgrade' | 'PurchaseSavingsPlans' | 'PurchaseReservedInstances' | 'MigrateToGraviton' | 'Delete' | 'ScaleIn'[];
    /** A list of tags assigned to the recommendation. */
    tags?: any[];
    /** The resource ID of the recommendation. */
    resourceIds?: string[];
    /** The Amazon Resource Name (ARN) of the recommendation. */
    resourceArns?: string[];
    /** The IDs for the recommendations. */
    recommendationIds?: string[];
}
export interface PreferredCommitment {
    /** The preferred length of the commitment period. If the value is null, it will default to ThreeYears (highest savings) where applicable. */
    term?: 'OneYear' | 'ThreeYears';
    /** The preferred upfront payment structure for commitments. If the value is null, it will default to AllUpfront (highest savings) where applicable. */
    paymentOption?: 'AllUpfront' | 'PartialUpfront' | 'NoUpfront';
}
export interface GetRecommendationInput {
    /** The ID for the recommendation. */
    recommendationId: string;
}
export interface ListEfficiencyMetricsInput {
    /** The time granularity for the cost efficiency metrics. Specify Daily for metrics aggregated by day, or Monthly for metrics aggregated by month. */
    granularity: 'Daily' | 'Monthly';
    /** The time period for which to retrieve the cost efficiency metrics. The start date is inclusive and the end date is exclusive. Dates can be specified in either YYYY-MM-DD format or YYYY-MM format depen */
    timePeriod: TimePeriod;
    /** The dimension by which to group the cost efficiency metrics. Valid values include account ID, Amazon Web Services Region. When no grouping is specified, metrics are aggregated across all resources in  */
    groupBy?: string;
    /** The maximum number of groups to return in the response. Valid values range from 0 to 1000. Use in conjunction with nextToken to paginate through results when the total number of groups exceeds this li */
    maxResults?: number;
    /** The token to retrieve the next page of results. This value is returned in the response when the number of groups exceeds the specified maxResults value. */
    nextToken?: string;
    /** The ordering specification for the results. Defines which dimension to sort by and whether to sort in ascending or descending order. */
    orderBy?: OrderBy;
}
export interface ListEnrollmentStatusesInput {
    /** The account ID of a member account in the organization. */
    accountId?: string;
    /** Indicates whether to return the enrollment status for the organization. */
    includeOrganizationInfo?: boolean;
    /** The maximum number of objects that are returned for the request. */
    maxResults?: number;
    /** The token to retrieve the next set of results. */
    nextToken?: string;
}
export interface ListRecommendationsInput {
    /** The constraints that you want all returned recommendations to match. */
    filter?: Filter;
    /** List of all recommendations for a resource, or a single recommendation if de-duped by resourceId. */
    includeAllRecommendations?: boolean;
    /** The maximum number of recommendations that are returned for the request. */
    maxResults?: number;
    /** The token to retrieve the next set of results. */
    nextToken?: string;
    /** The ordering of recommendations by a dimension. */
    orderBy?: OrderBy;
}
export interface ListRecommendationSummariesInput {
    /** The grouping of recommendations by a dimension. */
    groupBy: string;
    filter?: Filter;
    /** The maximum number of recommendations to be returned for the request. */
    maxResults?: number;
    /** Additional metrics to be returned for the request. The only valid value is savingsPercentage. */
    metrics?: 'SavingsPercentage'[];
    /** The token to retrieve the next set of results. */
    nextToken?: string;
}
export interface UpdateEnrollmentStatusInput {
    /** Sets the account status. */
    status: 'Active' | 'Inactive';
    /** Indicates whether to enroll member accounts of the organization if the account is the management account or delegated administrator. */
    includeMemberAccounts?: boolean;
}
export interface UpdatePreferencesInput {
    /** Sets the "member account discount visibility" preference. */
    memberAccountDiscountVisibility?: 'All' | 'None';
    /** Sets the preferences for how Reserved Instances and Savings Plans cost-saving opportunities are prioritized in terms of payment option and term length. */
    preferredCommitment?: PreferredCommitment;
    /** Sets the "savings estimation mode" preference. */
    savingsEstimationMode?: 'BeforeDiscounts' | 'AfterDiscounts';
}
/** Cost Optimization Hub service binding for Step Functions SDK integrations. */
export declare class CostOptimizationHub {
    constructor();
    getPreferences<T>(params: Record<string, any>): Promise<T>;
    getRecommendation<T>(params: GetRecommendationInput): Promise<T>;
    listEfficiencyMetrics<T>(params: ListEfficiencyMetricsInput): Promise<T>;
    listEnrollmentStatuses<T>(params: ListEnrollmentStatusesInput): Promise<T>;
    listRecommendations<T>(params: ListRecommendationsInput): Promise<T>;
    listRecommendationSummaries<T>(params: ListRecommendationSummariesInput): Promise<T>;
    updateEnrollmentStatus<T>(params: UpdateEnrollmentStatusInput): Promise<T>;
    updatePreferences<T>(params: UpdatePreferencesInput): Promise<T>;
}
//# sourceMappingURL=CostOptimizationHub.d.ts.map