// Code generated by @openmeter/typespec-typescript. DO NOT EDIT. import { type Client } from '../core.js' import { unwrap, type RequestOptions } from '../lib/types.js' import { paginatePages } from '../lib/paginate.js' import { listFeatures, createFeature, getFeature, updateFeature, deleteFeature, queryFeatureCost, } from '../funcs/features.js' import type { ListFeaturesRequest, ListFeaturesResponse, CreateFeatureRequest, CreateFeatureResponse, GetFeatureRequest, GetFeatureResponse, UpdateFeatureRequest, UpdateFeatureResponse, DeleteFeatureRequest, DeleteFeatureResponse, QueryFeatureCostRequest, QueryFeatureCostResponse, } from '../models/operations/features.js' import type { Feature } from '../models/types.js' export class Features { constructor(private readonly _client: Client) {} /** * List features * * List all features. * * GET /openmeter/features */ async list( request?: ListFeaturesRequest, options?: RequestOptions, ): Promise { return unwrap(await listFeatures(this._client, request, options)) } /** * List features * * List all features. * * Iterates every item across all pages, fetching more as the returned iterable is consumed. * * GET /openmeter/features */ listAll( request?: ListFeaturesRequest, options?: RequestOptions, ): AsyncIterable { return paginatePages( (req, opts) => listFeatures(this._client, req, opts), request ?? {}, options, ) } /** * Create feature * * Create a feature. * * POST /openmeter/features */ async create( request: CreateFeatureRequest, options?: RequestOptions, ): Promise { return unwrap(await createFeature(this._client, request, options)) } /** * Get feature * * Get a feature by id. * * GET /openmeter/features/{featureId} */ async get( request: GetFeatureRequest, options?: RequestOptions, ): Promise { return unwrap(await getFeature(this._client, request, options)) } /** * Update feature * * Update a feature by id. Currently only the unit_cost field can be updated. * * PATCH /openmeter/features/{featureId} */ async update( request: UpdateFeatureRequest, options?: RequestOptions, ): Promise { return unwrap(await updateFeature(this._client, request, options)) } /** * Delete feature * * Delete a feature by id. * * DELETE /openmeter/features/{featureId} */ async delete( request: DeleteFeatureRequest, options?: RequestOptions, ): Promise { return unwrap(await deleteFeature(this._client, request, options)) } /** * Query feature cost * * Query the cost of a feature. * * POST /openmeter/features/{featureId}/cost/query */ async queryCost( request: QueryFeatureCostRequest, options?: RequestOptions, ): Promise { return unwrap(await queryFeatureCost(this._client, request, options)) } }