// 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 { listApps, getApp, listAppCatalog, getAppCatalogItem, installApp, } from '../funcs/apps.js' import type { ListAppsRequest, ListAppsResponse, GetAppRequest, GetAppResponse, ListAppCatalogRequest, ListAppCatalogResponse, GetAppCatalogItemRequest, GetAppCatalogItemResponse, InstallAppRequest, InstallAppResponse, } from '../models/operations/apps.js' import type { App, AppCatalogItem } from '../models/types.js' export class Apps { constructor(private readonly _client: Client) {} /** * List apps * * List installed apps. * * GET /openmeter/apps */ async list( request?: ListAppsRequest, options?: RequestOptions, ): Promise { return unwrap(await listApps(this._client, request, options)) } /** * List apps * * List installed apps. * * Iterates every item across all pages, fetching more as the returned iterable is consumed. * * GET /openmeter/apps */ listAll( request?: ListAppsRequest, options?: RequestOptions, ): AsyncIterable { return paginatePages( (req, opts) => listApps(this._client, req, opts), request ?? {}, options, ) } /** * Get app * * Get an installed app. * * GET /openmeter/apps/{appId} */ async get( request: GetAppRequest, options?: RequestOptions, ): Promise { return unwrap(await getApp(this._client, request, options)) } /** * List app catalog * * List available apps. * * GET /openmeter/app-catalog */ async listCatalog( request?: ListAppCatalogRequest, options?: RequestOptions, ): Promise { return unwrap(await listAppCatalog(this._client, request, options)) } /** * List app catalog * * List available apps. * * Iterates every item across all pages, fetching more as the returned iterable is consumed. * * GET /openmeter/app-catalog */ listCatalogAll( request?: ListAppCatalogRequest, options?: RequestOptions, ): AsyncIterable { return paginatePages( (req, opts) => listAppCatalog(this._client, req, opts), request ?? {}, options, ) } /** * Get app catalog item by type * * Get an app catalog item by type. * * GET /openmeter/app-catalog/{appType} */ async getCatalogItem( request: GetAppCatalogItemRequest, options?: RequestOptions, ): Promise { return unwrap(await getAppCatalogItem(this._client, request, options)) } /** * Install app from the catalog * * Install an app from the catalog. * * POST /openmeter/app-catalog/install */ async install( request: InstallAppRequest, options?: RequestOptions, ): Promise { return unwrap(await installApp(this._client, request, options)) } }