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 MeterCreateMetadata = string | number | number | boolean;
/**
 * The aggregation to apply on the filtered events to calculate the meter.
 */
export type MeterCreateAggregation = (PropertyAggregation & {
    func: "avg";
}) | CountAggregation | (PropertyAggregation & {
    func: "max";
}) | (PropertyAggregation & {
    func: "min";
}) | (PropertyAggregation & {
    func: "sum";
}) | UniqueAggregation;
export type MeterCreate = {
    /**
     * 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;
    unit?: MeterUnit | undefined;
    /**
     * The label for the custom unit, e.g. 'request'. Required when unit is 'custom'.
     */
    customLabel?: string | null | undefined;
    /**
     * The multiplier to convert from the base unit to display scale, e.g. 1000 to display per 1000 units. Defaults to 1 when not provided.
     */
    customMultiplier?: number | null | undefined;
    filter: Filter;
    /**
     * 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;
    /**
     * The ID of the organization owning the meter. **Required unless you use an organization token.**
     */
    organizationId?: string | null | undefined;
};
/** @internal */
export type MeterCreateMetadata$Outbound = string | number | number | boolean;
/** @internal */
export declare const MeterCreateMetadata$outboundSchema: z.ZodMiniType<MeterCreateMetadata$Outbound, MeterCreateMetadata>;
export declare function meterCreateMetadataToJSON(meterCreateMetadata: MeterCreateMetadata): string;
/** @internal */
export type MeterCreateAggregation$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 MeterCreateAggregation$outboundSchema: z.ZodMiniType<MeterCreateAggregation$Outbound, MeterCreateAggregation>;
export declare function meterCreateAggregationToJSON(meterCreateAggregation: MeterCreateAggregation): string;
/** @internal */
export type MeterCreate$Outbound = {
    metadata?: {
        [k: string]: string | number | number | boolean;
    } | undefined;
    name: string;
    unit?: string | undefined;
    custom_label?: string | null | undefined;
    custom_multiplier?: number | null | undefined;
    filter: Filter$Outbound;
    aggregation: (PropertyAggregation$Outbound & {
        func: "avg";
    }) | CountAggregation$Outbound | (PropertyAggregation$Outbound & {
        func: "max";
    }) | (PropertyAggregation$Outbound & {
        func: "min";
    }) | (PropertyAggregation$Outbound & {
        func: "sum";
    }) | UniqueAggregation$Outbound;
    organization_id?: string | null | undefined;
};
/** @internal */
export declare const MeterCreate$outboundSchema: z.ZodMiniType<MeterCreate$Outbound, MeterCreate>;
export declare function meterCreateToJSON(meterCreate: MeterCreate): string;
//# sourceMappingURL=metercreate.d.ts.map