import * as z from "zod/v4-mini";
import { CountAggregation, CountAggregation$Outbound } from "./countaggregation.js";
import { Filter, Filter$Outbound } from "./filter.js";
import { MeterUnit } from "./meterunit.js";
import { PropertyAggregation, PropertyAggregation$Outbound } from "./propertyaggregation.js";
import { UniqueAggregation, UniqueAggregation$Outbound } from "./uniqueaggregation.js";
export type MeterUpdateMetadata = string | number | number | boolean;
export type Aggregation = (PropertyAggregation & {
    func: "avg";
}) | CountAggregation | (PropertyAggregation & {
    func: "max";
}) | (PropertyAggregation & {
    func: "min";
}) | (PropertyAggregation & {
    func: "sum";
}) | UniqueAggregation;
export type MeterUpdate = {
    /**
     * Key-value object allowing you to store additional information.
     *
     * @remarks
     *
     * The key must be a string with a maximum length of **40 characters**.
     * The value must be either:
     *
     * * A string with a maximum length of **500 characters**
     * * An integer
     * * A floating-point number
     * * A boolean
     *
     * You can store up to **50 key-value pairs**.
     */
    metadata?: {
        [k: string]: string | number | number | boolean;
    } | undefined;
    /**
     * The name of the meter. Will be shown on customer's invoices and usage.
     */
    name?: string | null | undefined;
    /**
     * The unit of the meter.
     */
    unit?: MeterUnit | null | undefined;
    /**
     * The label for the custom unit. Required when unit is 'custom'.
     */
    customLabel?: string | null | undefined;
    /**
     * The multiplier to convert from base unit to display scale. Required when unit is 'custom'.
     */
    customMultiplier?: number | null | undefined;
    /**
     * The filter to apply on events that'll be used to calculate the meter.
     */
    filter?: Filter | null | undefined;
    /**
     * The aggregation to apply on the filtered events to calculate the meter.
     */
    aggregation?: (PropertyAggregation & {
        func: "avg";
    }) | CountAggregation | (PropertyAggregation & {
        func: "max";
    }) | (PropertyAggregation & {
        func: "min";
    }) | (PropertyAggregation & {
        func: "sum";
    }) | UniqueAggregation | null | undefined;
    /**
     * Whether the meter is archived. Archived meters are no longer used for billing.
     */
    isArchived?: boolean | null | undefined;
};
/** @internal */
export type MeterUpdateMetadata$Outbound = string | number | number | boolean;
/** @internal */
export declare const MeterUpdateMetadata$outboundSchema: z.ZodMiniType<MeterUpdateMetadata$Outbound, MeterUpdateMetadata>;
export declare function meterUpdateMetadataToJSON(meterUpdateMetadata: MeterUpdateMetadata): string;
/** @internal */
export type Aggregation$Outbound = (PropertyAggregation$Outbound & {
    func: "avg";
}) | CountAggregation$Outbound | (PropertyAggregation$Outbound & {
    func: "max";
}) | (PropertyAggregation$Outbound & {
    func: "min";
}) | (PropertyAggregation$Outbound & {
    func: "sum";
}) | UniqueAggregation$Outbound;
/** @internal */
export declare const Aggregation$outboundSchema: z.ZodMiniType<Aggregation$Outbound, Aggregation>;
export declare function aggregationToJSON(aggregation: Aggregation): string;
/** @internal */
export type MeterUpdate$Outbound = {
    metadata?: {
        [k: string]: string | number | number | boolean;
    } | undefined;
    name?: string | null | undefined;
    unit?: string | null | undefined;
    custom_label?: string | null | undefined;
    custom_multiplier?: number | null | undefined;
    filter?: Filter$Outbound | null | undefined;
    aggregation?: (PropertyAggregation$Outbound & {
        func: "avg";
    }) | CountAggregation$Outbound | (PropertyAggregation$Outbound & {
        func: "max";
    }) | (PropertyAggregation$Outbound & {
        func: "min";
    }) | (PropertyAggregation$Outbound & {
        func: "sum";
    }) | UniqueAggregation$Outbound | null | undefined;
    is_archived?: boolean | null | undefined;
};
/** @internal */
export declare const MeterUpdate$outboundSchema: z.ZodMiniType<MeterUpdate$Outbound, MeterUpdate>;
export declare function meterUpdateToJSON(meterUpdate: MeterUpdate): string;
//# sourceMappingURL=meterupdate.d.ts.map