import { BaseAPIRequestFactory } from "../../datadog-api-client-common/baseapi";
import { Configuration } from "../../datadog-api-client-common/configuration";
import { RequestContext, ResponseContext } from "../../datadog-api-client-common/http/http";
import { CostByOrgResponse } from "../models/CostByOrgResponse";
import { HourlyUsageResponse } from "../models/HourlyUsageResponse";
import { UsageApplicationSecurityMonitoringResponse } from "../models/UsageApplicationSecurityMonitoringResponse";
import { UsageLambdaTracedInvocationsResponse } from "../models/UsageLambdaTracedInvocationsResponse";
import { UsageObservabilityPipelinesResponse } from "../models/UsageObservabilityPipelinesResponse";
export declare class UsageMeteringApiRequestFactory extends BaseAPIRequestFactory {
    getCostByOrg(startMonth: Date, endMonth?: Date, _options?: Configuration): Promise<RequestContext>;
    getEstimatedCostByOrg(view?: string, startMonth?: Date, endMonth?: Date, startDate?: Date, endDate?: Date, _options?: Configuration): Promise<RequestContext>;
    getHistoricalCostByOrg(startMonth: Date, view?: string, endMonth?: Date, _options?: Configuration): Promise<RequestContext>;
    getHourlyUsage(filterTimestampStart: Date, filterProductFamilies: string, filterTimestampEnd?: Date, filterIncludeDescendants?: boolean, filterIncludeBreakdown?: boolean, filterVersions?: string, pageLimit?: number, pageNextRecordId?: string, _options?: Configuration): Promise<RequestContext>;
    getUsageApplicationSecurityMonitoring(startHr: Date, endHr?: Date, _options?: Configuration): Promise<RequestContext>;
    getUsageLambdaTracedInvocations(startHr: Date, endHr?: Date, _options?: Configuration): Promise<RequestContext>;
    getUsageObservabilityPipelines(startHr: Date, endHr?: Date, _options?: Configuration): Promise<RequestContext>;
}
export declare class UsageMeteringApiResponseProcessor {
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getCostByOrg
     * @throws ApiException if the response code was not in [200, 299]
     */
    getCostByOrg(response: ResponseContext): Promise<CostByOrgResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getEstimatedCostByOrg
     * @throws ApiException if the response code was not in [200, 299]
     */
    getEstimatedCostByOrg(response: ResponseContext): Promise<CostByOrgResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getHistoricalCostByOrg
     * @throws ApiException if the response code was not in [200, 299]
     */
    getHistoricalCostByOrg(response: ResponseContext): Promise<CostByOrgResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getHourlyUsage
     * @throws ApiException if the response code was not in [200, 299]
     */
    getHourlyUsage(response: ResponseContext): Promise<HourlyUsageResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getUsageApplicationSecurityMonitoring
     * @throws ApiException if the response code was not in [200, 299]
     */
    getUsageApplicationSecurityMonitoring(response: ResponseContext): Promise<UsageApplicationSecurityMonitoringResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getUsageLambdaTracedInvocations
     * @throws ApiException if the response code was not in [200, 299]
     */
    getUsageLambdaTracedInvocations(response: ResponseContext): Promise<UsageLambdaTracedInvocationsResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getUsageObservabilityPipelines
     * @throws ApiException if the response code was not in [200, 299]
     */
    getUsageObservabilityPipelines(response: ResponseContext): Promise<UsageObservabilityPipelinesResponse>;
}
export interface UsageMeteringApiGetCostByOrgRequest {
    /**
     * Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month.
     * @type Date
     */
    startMonth: Date;
    /**
     * Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month.
     * @type Date
     */
    endMonth?: Date;
}
export interface UsageMeteringApiGetEstimatedCostByOrgRequest {
    /**
     * String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`. Defaults to `summary`.
     * @type string
     */
    view?: string;
    /**
     * Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month. Either start_month or start_date should be specified, but not both. (start_month cannot go beyond two months in the past). Provide an `end_month` to view month-over-month cost.
     * @type Date
     */
    startMonth?: Date;
    /**
     * Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month.
     * @type Date
     */
    endMonth?: Date;
    /**
     * Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost beginning this day. Either start_month or start_date should be specified, but not both. (start_date cannot go beyond two months in the past). Provide an `end_date` to view day-over-day cumulative cost.
     * @type Date
     */
    startDate?: Date;
    /**
     * Datetime in ISO-8601 format, UTC, precise to day: `[YYYY-MM-DD]` for cost ending this day.
     * @type Date
     */
    endDate?: Date;
}
export interface UsageMeteringApiGetHistoricalCostByOrgRequest {
    /**
     * Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost beginning this month.
     * @type Date
     */
    startMonth: Date;
    /**
     * String to specify whether cost is broken down at a parent-org level or at the sub-org level. Available views are `summary` and `sub-org`.  Defaults to `summary`.
     * @type string
     */
    view?: string;
    /**
     * Datetime in ISO-8601 format, UTC, precise to month: `[YYYY-MM]` for cost ending this month.
     * @type Date
     */
    endMonth?: Date;
}
export interface UsageMeteringApiGetHourlyUsageRequest {
    /**
     * Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage beginning at this hour.
     * @type Date
     */
    filterTimestampStart: Date;
    /**
     * Comma separated list of product families to retrieve. Available families are `all`, `analyzed_logs`,
     * `application_security`, `audit_trail`, `serverless`, `ci_app`, `cloud_cost_management`,
     * `cspm`, `custom_events`, `cws`, `dbm`, `fargate`,
     * `infra_hosts`, `incident_management`, `indexed_logs`, `indexed_spans`, `ingested_spans`, `iot`,
     * `lambda_traced_invocations`, `logs`, `network_flows`, `network_hosts`, `observability_pipelines`,
     * `online_archive`, `profiling`, `rum`, `rum_browser_sessions`, `rum_mobile_sessions`, `sds`, `snmp`,
     * `synthetics_api`, `synthetics_browser`, `synthetics_parallel_testing`, and `timeseries`.
     * The following product family has been **deprecated**: `audit_logs`.
     * @type string
     */
    filterProductFamilies: string;
    /**
     * Datetime in ISO-8601 format, UTC, precise to hour: [YYYY-MM-DDThh] for usage ending **before** this hour.
     * @type Date
     */
    filterTimestampEnd?: Date;
    /**
     * Include child org usage in the response. Defaults to false.
     * @type boolean
     */
    filterIncludeDescendants?: boolean;
    /**
     * Include breakdown of usage by subcategories where applicable (for product family logs only). Defaults to false.
     * @type boolean
     */
    filterIncludeBreakdown?: boolean;
    /**
     * Comma separated list of product family versions to use in the format `product_family:version`. For example,
     * `infra_hosts:1.0.0`. If this parameter is not used, the API will use the latest version of each requested
     * product family. Currently all families have one version `1.0.0`.
     * @type string
     */
    filterVersions?: string;
    /**
     * Maximum number of results to return (between 1 and 500) - defaults to 500 if limit not specified.
     * @type number
     */
    pageLimit?: number;
    /**
     * List following results with a next_record_id provided in the previous query.
     * @type string
     */
    pageNextRecordId?: string;
}
export interface UsageMeteringApiGetUsageApplicationSecurityMonitoringRequest {
    /**
     * Datetime in ISO-8601 format, UTC, precise to hour: `[YYYY-MM-DDThh]` for usage beginning at this hour.
     * @type Date
     */
    startHr: Date;
    /**
     * Datetime in ISO-8601 format, UTC, precise to hour: `[YYYY-MM-DDThh]` for usage ending
     * **before** this hour.
     * @type Date
     */
    endHr?: Date;
}
export interface UsageMeteringApiGetUsageLambdaTracedInvocationsRequest {
    /**
     * Datetime in ISO-8601 format, UTC, precise to hour: `[YYYY-MM-DDThh]` for usage beginning at this hour.
     * @type Date
     */
    startHr: Date;
    /**
     * Datetime in ISO-8601 format, UTC, precise to hour: `[YYYY-MM-DDThh]` for usage ending
     * **before** this hour.
     * @type Date
     */
    endHr?: Date;
}
export interface UsageMeteringApiGetUsageObservabilityPipelinesRequest {
    /**
     * Datetime in ISO-8601 format, UTC, precise to hour: `[YYYY-MM-DDThh]` for usage beginning at this hour.
     * @type Date
     */
    startHr: Date;
    /**
     * Datetime in ISO-8601 format, UTC, precise to hour: `[YYYY-MM-DDThh]` for usage ending
     * **before** this hour.
     * @type Date
     */
    endHr?: Date;
}
export declare class UsageMeteringApi {
    private requestFactory;
    private responseProcessor;
    private configuration;
    constructor(configuration: Configuration, requestFactory?: UsageMeteringApiRequestFactory, responseProcessor?: UsageMeteringApiResponseProcessor);
    /**
     * Get cost across multi-org account.
     * Cost by org data for a given month becomes available no later than the 16th of the following month.
     * **Note:** This endpoint has been deprecated. Please use the new endpoint
     * [`/historical_cost`](https://docs.datadoghq.com/api/latest/usage-metering/#get-historical-cost-across-your-account)
     * instead.
     * @param param The request object
     */
    getCostByOrg(param: UsageMeteringApiGetCostByOrgRequest, options?: Configuration): Promise<CostByOrgResponse>;
    /**
     * Get estimated cost across multi-org and single root-org accounts.
     * Estimated cost data is only available for the current month and previous month
     * and is delayed by up to 72 hours from when it was incurred.
     * To access historical costs prior to this, use the `/historical_cost` endpoint.
     * @param param The request object
     */
    getEstimatedCostByOrg(param?: UsageMeteringApiGetEstimatedCostByOrgRequest, options?: Configuration): Promise<CostByOrgResponse>;
    /**
     * Get historical cost across multi-org and single root-org accounts.
     * Cost data for a given month becomes available no later than the 16th of the following month.
     * @param param The request object
     */
    getHistoricalCostByOrg(param: UsageMeteringApiGetHistoricalCostByOrgRequest, options?: Configuration): Promise<CostByOrgResponse>;
    /**
     * Get hourly usage by product family.
     * @param param The request object
     */
    getHourlyUsage(param: UsageMeteringApiGetHourlyUsageRequest, options?: Configuration): Promise<HourlyUsageResponse>;
    /**
     * Get hourly usage for application security .
     * **Note:** hourly usage data for all products is now available in the [Get hourly usage by product family API](https://docs.datadoghq.com/api/latest/usage-metering/#get-hourly-usage-by-product-family)
     * @param param The request object
     */
    getUsageApplicationSecurityMonitoring(param: UsageMeteringApiGetUsageApplicationSecurityMonitoringRequest, options?: Configuration): Promise<UsageApplicationSecurityMonitoringResponse>;
    /**
     * Get hourly usage for lambda traced invocations.
     * **Note:** hourly usage data for all products is now available in the [Get hourly usage by product family API](https://docs.datadoghq.com/api/latest/usage-metering/#get-hourly-usage-by-product-family)
     * @param param The request object
     */
    getUsageLambdaTracedInvocations(param: UsageMeteringApiGetUsageLambdaTracedInvocationsRequest, options?: Configuration): Promise<UsageLambdaTracedInvocationsResponse>;
    /**
     * Get hourly usage for observability pipelines.
     * **Note:** hourly usage data for all products is now available in the [Get hourly usage by product family API](https://docs.datadoghq.com/api/latest/usage-metering/#get-hourly-usage-by-product-family)
     * @param param The request object
     */
    getUsageObservabilityPipelines(param: UsageMeteringApiGetUsageObservabilityPipelinesRequest, options?: Configuration): Promise<UsageObservabilityPipelinesResponse>;
}
