import { Construct } from 'constructs';
import * as cdktf from 'cdktf';
export interface DataOciMeteringComputationQueryConfig extends cdktf.TerraformMetaArguments {
    /**
    * Docs at Terraform Registry: {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/data-sources/metering_computation_query#query_id DataOciMeteringComputationQuery#query_id}
    */
    readonly queryId: string;
}
export interface DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUi {
}
export declare function dataOciMeteringComputationQueryQueryDefinitionCostAnalysisUiToTerraform(struct?: DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUi): any;
export declare function dataOciMeteringComputationQueryQueryDefinitionCostAnalysisUiToHclTerraform(struct?: DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUi): any;
export declare class DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUiOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUi | undefined;
    set internalValue(value: DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUi | undefined);
    get graph(): string;
    get isCumulativeGraph(): cdktf.IResolvable;
}
export declare class DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUiList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUiOutputReference;
}
export interface DataOciMeteringComputationQueryQueryDefinitionReportQueryForecast {
}
export declare function dataOciMeteringComputationQueryQueryDefinitionReportQueryForecastToTerraform(struct?: DataOciMeteringComputationQueryQueryDefinitionReportQueryForecast): any;
export declare function dataOciMeteringComputationQueryQueryDefinitionReportQueryForecastToHclTerraform(struct?: DataOciMeteringComputationQueryQueryDefinitionReportQueryForecast): any;
export declare class DataOciMeteringComputationQueryQueryDefinitionReportQueryForecastOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): DataOciMeteringComputationQueryQueryDefinitionReportQueryForecast | undefined;
    set internalValue(value: DataOciMeteringComputationQueryQueryDefinitionReportQueryForecast | undefined);
    get forecastType(): string;
    get timeForecastEnded(): string;
    get timeForecastStarted(): string;
}
export declare class DataOciMeteringComputationQueryQueryDefinitionReportQueryForecastList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): DataOciMeteringComputationQueryQueryDefinitionReportQueryForecastOutputReference;
}
export interface DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTag {
}
export declare function dataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTagToTerraform(struct?: DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTag): any;
export declare function dataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTagToHclTerraform(struct?: DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTag): any;
export declare class DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTagOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTag | undefined;
    set internalValue(value: DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTag | undefined);
    get key(): string;
    get namespace(): string;
    get value(): string;
}
export declare class DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTagList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTagOutputReference;
}
export interface DataOciMeteringComputationQueryQueryDefinitionReportQuery {
}
export declare function dataOciMeteringComputationQueryQueryDefinitionReportQueryToTerraform(struct?: DataOciMeteringComputationQueryQueryDefinitionReportQuery): any;
export declare function dataOciMeteringComputationQueryQueryDefinitionReportQueryToHclTerraform(struct?: DataOciMeteringComputationQueryQueryDefinitionReportQuery): any;
export declare class DataOciMeteringComputationQueryQueryDefinitionReportQueryOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): DataOciMeteringComputationQueryQueryDefinitionReportQuery | undefined;
    set internalValue(value: DataOciMeteringComputationQueryQueryDefinitionReportQuery | undefined);
    get compartmentDepth(): number;
    get dateRangeName(): string;
    get filter(): string;
    private _forecast;
    get forecast(): DataOciMeteringComputationQueryQueryDefinitionReportQueryForecastList;
    get granularity(): string;
    get groupBy(): string[];
    private _groupByTag;
    get groupByTag(): DataOciMeteringComputationQueryQueryDefinitionReportQueryGroupByTagList;
    get isAggregateByTime(): cdktf.IResolvable;
    get queryType(): string;
    get tenantId(): string;
    get timeUsageEnded(): string;
    get timeUsageStarted(): string;
}
export declare class DataOciMeteringComputationQueryQueryDefinitionReportQueryList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): DataOciMeteringComputationQueryQueryDefinitionReportQueryOutputReference;
}
export interface DataOciMeteringComputationQueryQueryDefinition {
}
export declare function dataOciMeteringComputationQueryQueryDefinitionToTerraform(struct?: DataOciMeteringComputationQueryQueryDefinition): any;
export declare function dataOciMeteringComputationQueryQueryDefinitionToHclTerraform(struct?: DataOciMeteringComputationQueryQueryDefinition): any;
export declare class DataOciMeteringComputationQueryQueryDefinitionOutputReference extends cdktf.ComplexObject {
    private isEmptyObject;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param complexObjectIndex the index of this item in the list
    * @param complexObjectIsFromSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, complexObjectIndex: number, complexObjectIsFromSet: boolean);
    get internalValue(): DataOciMeteringComputationQueryQueryDefinition | undefined;
    set internalValue(value: DataOciMeteringComputationQueryQueryDefinition | undefined);
    private _costAnalysisUi;
    get costAnalysisUi(): DataOciMeteringComputationQueryQueryDefinitionCostAnalysisUiList;
    get displayName(): string;
    private _reportQuery;
    get reportQuery(): DataOciMeteringComputationQueryQueryDefinitionReportQueryList;
    get version(): number;
}
export declare class DataOciMeteringComputationQueryQueryDefinitionList extends cdktf.ComplexList {
    protected terraformResource: cdktf.IInterpolatingParent;
    protected terraformAttribute: string;
    protected wrapsSet: boolean;
    /**
    * @param terraformResource The parent resource
    * @param terraformAttribute The attribute on the parent resource this class is referencing
    * @param wrapsSet whether the list is wrapping a set (will add tolist() to be able to access an item via an index)
    */
    constructor(terraformResource: cdktf.IInterpolatingParent, terraformAttribute: string, wrapsSet: boolean);
    /**
    * @param index the index of the item to return
    */
    get(index: number): DataOciMeteringComputationQueryQueryDefinitionOutputReference;
}
/**
* Represents a {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/data-sources/metering_computation_query oci_metering_computation_query}
*/
export declare class DataOciMeteringComputationQuery extends cdktf.TerraformDataSource {
    static readonly tfResourceType = "oci_metering_computation_query";
    /**
    * Generates CDKTF code for importing a DataOciMeteringComputationQuery resource upon running "cdktf plan <stack-name>"
    * @param scope The scope in which to define this construct
    * @param importToId The construct id used in the generated config for the DataOciMeteringComputationQuery to import
    * @param importFromId The id of the existing DataOciMeteringComputationQuery that should be imported. Refer to the {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/data-sources/metering_computation_query#import import section} in the documentation of this resource for the id to use
    * @param provider? Optional instance of the provider where the DataOciMeteringComputationQuery to import is found
    */
    static generateConfigForImport(scope: Construct, importToId: string, importFromId: string, provider?: cdktf.TerraformProvider): cdktf.ImportableResource;
    /**
    * Create a new {@link https://registry.terraform.io/providers/oracle/oci/6.18.0/docs/data-sources/metering_computation_query oci_metering_computation_query} Data Source
    *
    * @param scope The scope in which to define this construct
    * @param id The scoped construct ID. Must be unique amongst siblings in the same scope
    * @param options DataOciMeteringComputationQueryConfig
    */
    constructor(scope: Construct, id: string, config: DataOciMeteringComputationQueryConfig);
    get compartmentId(): string;
    get id(): string;
    private _queryDefinition;
    get queryDefinition(): DataOciMeteringComputationQueryQueryDefinitionList;
    private _queryId?;
    get queryId(): string;
    set queryId(value: string);
    get queryIdInput(): string | undefined;
    protected synthesizeAttributes(): {
        [name: string]: any;
    };
    protected synthesizeHclAttributes(): {
        [name: string]: any;
    };
}
