import * as z from "zod/v4-mini";
import { AggregationFunction } from "../components/aggregationfunction.js";
import { MetadataQuery, MetadataQuery$Outbound } from "../components/subscriptionslist.js";
import { TimeInterval } from "../components/timeinterval.js";
/**
 * Filter by customer ID.
 */
export type MetersQuantitiesQueryParamCustomerIDFilter = string | Array<string>;
/**
 * Filter by external customer ID.
 */
export type MetersQuantitiesQueryParamExternalCustomerIDFilter = string | Array<string>;
export type MetersQuantitiesRequest = {
    /**
     * The meter ID.
     */
    id: string;
    /**
     * Start timestamp.
     */
    startTimestamp: Date;
    /**
     * End timestamp.
     */
    endTimestamp: Date;
    /**
     * Interval between two timestamps.
     */
    interval: TimeInterval;
    /**
     * Timezone to use for the timestamps. Default is UTC.
     */
    timezone?: string | undefined;
    /**
     * Filter by customer ID.
     */
    customerId?: string | Array<string> | null | undefined;
    /**
     * Filter by external customer ID.
     */
    externalCustomerId?: string | Array<string> | null | undefined;
    /**
     * If set, will first compute the quantities per customer before aggregating them using the given function. If not set, the quantities will be aggregated across all events.
     */
    customerAggregationFunction?: AggregationFunction | null | undefined;
    /**
     * Filter by metadata key-value pairs. It uses the `deepObject` style, e.g. `?metadata[key]=value`.
     */
    metadata?: {
        [k: string]: MetadataQuery;
    } | null | undefined;
};
/** @internal */
export type MetersQuantitiesQueryParamCustomerIDFilter$Outbound = string | Array<string>;
/** @internal */
export declare const MetersQuantitiesQueryParamCustomerIDFilter$outboundSchema: z.ZodMiniType<MetersQuantitiesQueryParamCustomerIDFilter$Outbound, MetersQuantitiesQueryParamCustomerIDFilter>;
export declare function metersQuantitiesQueryParamCustomerIDFilterToJSON(metersQuantitiesQueryParamCustomerIDFilter: MetersQuantitiesQueryParamCustomerIDFilter): string;
/** @internal */
export type MetersQuantitiesQueryParamExternalCustomerIDFilter$Outbound = string | Array<string>;
/** @internal */
export declare const MetersQuantitiesQueryParamExternalCustomerIDFilter$outboundSchema: z.ZodMiniType<MetersQuantitiesQueryParamExternalCustomerIDFilter$Outbound, MetersQuantitiesQueryParamExternalCustomerIDFilter>;
export declare function metersQuantitiesQueryParamExternalCustomerIDFilterToJSON(metersQuantitiesQueryParamExternalCustomerIDFilter: MetersQuantitiesQueryParamExternalCustomerIDFilter): string;
/** @internal */
export type MetersQuantitiesRequest$Outbound = {
    id: string;
    start_timestamp: string;
    end_timestamp: string;
    interval: string;
    timezone: string;
    customer_id?: string | Array<string> | null | undefined;
    external_customer_id?: string | Array<string> | null | undefined;
    customer_aggregation_function?: string | null | undefined;
    metadata?: {
        [k: string]: MetadataQuery$Outbound;
    } | null | undefined;
};
/** @internal */
export declare const MetersQuantitiesRequest$outboundSchema: z.ZodMiniType<MetersQuantitiesRequest$Outbound, MetersQuantitiesRequest>;
export declare function metersQuantitiesRequestToJSON(metersQuantitiesRequest: MetersQuantitiesRequest): string;
//# sourceMappingURL=metersquantities.d.ts.map