import type { Client } from "openapi-fetch"; import type { RequestOptions } from "./common.js"; import type { MeterCreate, operations, paths } from "./schemas.js"; /** * Meters * @description Meters are used to track and manage usage of your application. */ export declare class Meters { private client; constructor(client: Client); /** * Create a meter * @param meter - The meter to create * @param signal - An optional abort signal * @returns The created meter */ create(meter: MeterCreate, options?: RequestOptions): Promise<{ readonly id: string; description?: string; metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; name?: string; slug: string; aggregation: import("./schemas.js").components["schemas"]["MeterAggregation"]; eventType: string; eventFrom?: Date; valueProperty?: string; groupBy?: { [key: string]: string; }; readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"] | null; } | undefined>; /** * Get a meter by ID or slug * @param idOrSlug - The ID or slug of the meter * @param signal - An optional abort signal * @returns The meter */ get(idOrSlug: operations["getMeter"]["parameters"]["path"]["meterIdOrSlug"], options?: RequestOptions): Promise<{ readonly id: string; description?: string; metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; name?: string; slug: string; aggregation: import("./schemas.js").components["schemas"]["MeterAggregation"]; eventType: string; eventFrom?: Date; valueProperty?: string; groupBy?: { [key: string]: string; }; readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"] | null; } | undefined>; /** * List meters * @param signal - An optional abort signal * @returns The meters */ list(options?: RequestOptions): Promise<{ readonly id: string; description?: string; metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; name?: string; slug: string; aggregation: import("./schemas.js").components["schemas"]["MeterAggregation"]; eventType: string; eventFrom?: Date; valueProperty?: string; groupBy?: { [key: string]: string; }; readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"] | null; }[] | undefined>; /** * Query usage data for a meter by ID or slug * @param idOrSlug - The ID or slug of the meter * @param query - The query parameters * @param signal - An optional abort signal * @returns The meter data */ query(idOrSlug: operations["queryMeter"]["parameters"]["path"]["meterIdOrSlug"], query?: operations["queryMeter"]["parameters"]["query"], options?: RequestOptions): Promise<{ from?: Date; to?: Date; windowSize?: import("./schemas.js").components["schemas"]["WindowSize"]; data: import("./schemas.js").components["schemas"]["MeterQueryRow"][]; }>; /** * Update a meter by ID or slug * @param idOrSlug - The ID or slug of the meter * @param meter - The meter update data * @param options - Optional request options * @returns The updated meter */ update(idOrSlug: operations["updateMeter"]["parameters"]["path"]["meterIdOrSlug"], meter: operations["updateMeter"]["requestBody"]["content"]["application/json"], options?: RequestOptions): Promise<{ readonly id: string; description?: string; metadata?: import("./schemas.js").components["schemas"]["Metadata"] | null; readonly createdAt: Date; readonly updatedAt: Date; readonly deletedAt?: Date; name?: string; slug: string; aggregation: import("./schemas.js").components["schemas"]["MeterAggregation"]; eventType: string; eventFrom?: Date; valueProperty?: string; groupBy?: { [key: string]: string; }; readonly annotations?: import("./schemas.js").components["schemas"]["Annotations"] | null; } | undefined>; /** * Delete a meter by ID or slug * @param idOrSlug - The ID or slug of the meter * @param signal - An optional abort signal * @returns The deleted meter */ delete(idOrSlug: operations["deleteMeter"]["parameters"]["path"]["meterIdOrSlug"], options?: RequestOptions): Promise; /** * List meter group-by values * @description List all values for a specific group-by key in a meter. * @param idOrSlug - The ID or slug of the meter * @param groupByKey - The group-by key to list values for * @param query - The query parameters * @param options - Optional request options * @returns The list of group-by values */ listGroupByValues(idOrSlug: operations["listMeterGroupByValues"]["parameters"]["path"]["meterIdOrSlug"], groupByKey: operations["listMeterGroupByValues"]["parameters"]["path"]["groupByKey"], query?: operations["listMeterGroupByValues"]["parameters"]["query"], options?: RequestOptions): Promise; /** * Query usage data for a meter by ID or slug using POST * @description Query meter using POST method. This is useful for complex queries that exceed URL length limits. * @param idOrSlug - The ID or slug of the meter * @param body - The query body parameters * @param options - Optional request options * @returns The meter data */ queryPost(idOrSlug: operations["queryMeterPost"]["parameters"]["path"]["meterIdOrSlug"], body: operations["queryMeterPost"]["requestBody"]["content"]["application/json"], options?: RequestOptions): Promise | undefined>; }