import { Athena, CloudWatch, CloudWatchLogs, CostExplorer, Glue, S3 } from 'aws-sdk';
import { GetCostAndUsageRequest, GetCostAndUsageResponse, GetRightsizingRecommendationRequest, GetRightsizingRecommendationResponse } from 'aws-sdk/clients/costexplorer';
import { GetMetricDataInput, GetMetricDataOutput } from 'aws-sdk/clients/cloudwatch';
import { ListObjectsV2Output } from 'aws-sdk/clients/s3';
import { EC2ComputeOptimizerRecommendationData } from './Recommendations/ComputeOptimizer';
export declare class ServiceWrapper {
    private readonly cloudWatch;
    private readonly cloudWatchLogs;
    private readonly costExplorer;
    private readonly s3;
    private readonly athena?;
    private readonly glue?;
    constructor(cloudWatch: CloudWatch, cloudWatchLogs: CloudWatchLogs, costExplorer: CostExplorer, s3: S3, athena?: Athena, glue?: Glue);
    private getCostAndUsageResponse;
    private getMetricDataResponse;
    private getRightsizingRecommendationResponse;
    private getAthenaQueryResults;
    private checkForPartialData;
    getQueryByInterval(intervalInDays: number, func: (start: Date, end: Date, params?: any) => void, start: Date, end: Date, ...args: any): Promise<Array<any>>;
    getCloudWatchLogQueryResults(params: CloudWatchLogs.GetQueryResultsRequest): Promise<CloudWatchLogs.GetQueryResultsResponse>;
    describeLogGroups(params: CloudWatchLogs.DescribeLogGroupsRequest): Promise<CloudWatchLogs.DescribeLogGroupsResponse>;
    describeCloudWatchLogsQueries(params: CloudWatchLogs.DescribeQueriesRequest): Promise<CloudWatchLogs.DescribeQueriesResponse>;
    startCloudWatchLogsQuery(params: CloudWatchLogs.StartQueryRequest): Promise<CloudWatchLogs.StartQueryResponse>;
    startAthenaQueryExecution(queryParams: Athena.StartQueryExecutionInput): Promise<Athena.StartQueryExecutionOutput>;
    getAthenaQueryExecution(queryExecutionInput: Athena.GetQueryExecutionInput): Promise<Athena.GetQueryExecutionOutput>;
    getAthenaQueryResultSets(queryExecutionInput: Athena.GetQueryExecutionInput): Promise<Athena.GetQueryResultsOutput[]>;
    getCostAndUsageResponses(params: GetCostAndUsageRequest): Promise<GetCostAndUsageResponse[]>;
    getMetricDataResponses(params: GetMetricDataInput): Promise<GetMetricDataOutput[]>;
    getRightsizingRecommendationsResponses(params: GetRightsizingRecommendationRequest): Promise<GetRightsizingRecommendationResponse[]>;
    listBucketObjects(params: S3.Types.ListObjectsV2Request): Promise<ListObjectsV2Output>;
    getComputeOptimizerRecommendationsResponse(params: S3.Types.GetObjectRequest): Promise<EC2ComputeOptimizerRecommendationData[]>;
    getAthenaTableDescription(params: Glue.Types.GetTableRequest): Promise<Glue.GetTableResponse>;
}
