@layr-labs/ecloud-sdk 1.0.0-dev.1 → 1.0.0-dev.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -1,13 +1,13 @@
1
- import { C as ComputeModule } from './compute-Bn6KcW3x.cjs';
2
- export { a as ComputeModuleConfig, b as CreateAppOpts, L as LogsOptions, P as PRIMARY_LANGUAGES, S as SDKCreateAppOpts, c as createApp, d as createComputeModule, e as encodeStartAppData, f as encodeStopAppData, g as encodeTerminateAppData, h as getAvailableTemplates, l as logs } from './compute-Bn6KcW3x.cjs';
1
+ import { C as ComputeModule } from './compute-Ckyn8ils.cjs';
2
+ export { a as ComputeModuleConfig, b as CreateAppOpts, L as LogsOptions, P as PRIMARY_LANGUAGES, S as SDKCreateAppOpts, c as createApp, d as createComputeModule, e as encodeStartAppData, f as encodeStopAppData, g as encodeTerminateAppData, h as getAvailableTemplates, l as logs } from './compute-Ckyn8ils.cjs';
3
3
  import { BillingModule } from './billing.cjs';
4
4
  export { BillingModuleConfig, createBillingModule } from './billing.cjs';
5
5
  import { WalletClient, PublicClient, Address, Hex } from 'viem';
6
6
  export { AttestClient, AttestClientConfig, JwtProvider } from './attest.cjs';
7
- import { V as PreparedDeploy, G as GasEstimate, E as EnvironmentConfig, H as Logger, q as DeployResult, Y as PreparedUpgrade, A as AppId } from './index-BbH7ZCIu.cjs';
8
- export { a as AlreadyActiveResponse, c as AppProfile, d as AppProfileResponse, e as AppRecord, f as BillingEnvironmentConfig, g as CancelResponse, h as CancelSuccessResponse, i as ChainID, j as CheckoutCreatedResponse, k as CreateSubscriptionOptions, l as CreateSubscriptionResponse, m as CreditPurchaseResponse, n as DeployAppOpts, o as DeployOptions, p as DeployProgressCallback, r as DeployStep, s as DockerImageConfig, t as EstimateGasOptions, v as ExecuteDeployResult, x as ExecuteUpgradeResult, y as GasOpts, z as GetSubscriptionOptions, I as ImageDigestResult, L as LifecycleOpts, N as NoActiveSubscriptionResponse, P as ParsedEnvironment, J as PaymentIssueResponse, K as PaymentMethod, M as PaymentMethodsResponse, Q as PrepareDeployFromVerifiableBuildOpts, R as PrepareDeployOpts, T as PrepareUpgradeFromVerifiableBuildOpts, U as PrepareUpgradeOpts, X as PreparedDeployData, _ as PreparedUpgradeData, $ as ProductID, a0 as ProductSubscriptionResponse, a1 as Release, a3 as SequentialDeployResult, a4 as SubscribeResponse, a5 as SubscriptionLineItem, a6 as SubscriptionOpts, a7 as SubscriptionStatus, ab as UpgradeAppOpts, ac as calculateAppID, ae as estimateTransactionGas, aj as formatETH, al as getAllAppsByDeveloper, aC as getAppLatestReleaseBlockNumbers, am as getAppsByBillingAccount, ap as getBillingType, aD as getBlockTimestamps, as as logVisibility, at as noopLogger } from './index-BbH7ZCIu.cjs';
9
- import { L as LogVisibility, aj as ResourceUsageMonitoring } from './helpers-CfsfcGJO.cjs';
10
- export { A as AppInfo, d as AppMetrics, e as AppProfileInfo, ak as AppRelease, al as AppReleaseBuild, am as AppResponse, B as BillingApiClient, C as ComputeApiConfig, l as CreateAppParams, an as DeployParams, E as EstimateBatchGasOptions, G as GeneratedKey, o as LoginRequest, p as LoginResult, q as LogsParams, a as SessionError, S as SessionInfo, b as SiweMessageParams, r as SiweMessageResult, ao as UpgradeParams, U as UserApiClient, t as addHexPrefix, ap as assertValidFilePath, u as assertValidImageReference, v as assertValidPrivateKey, w as checkERC7702Delegation, x as createSiweMessage, aq as createViemClients, y as estimateBatchGas, D as extractAppNameFromImage, F as generateNewPrivateKey, H as generateNonce, I as getAvailableEnvironments, K as getBillingEnvironmentConfig, M as getBuildType, N as getChainFromID, O as getComputeApiSession, P as getEnvironmentConfig, R as isEnvironmentAvailable, T as isMainnet, V as isSessionValid, W as isSiweMessageExpired, X as isSiweMessageNotYetValid, Y as isSubscriptionActive, $ as loginToComputeApi, a2 as logoutFromComputeApi, a3 as parseSiweMessage, a4 as sanitizeString, a5 as sanitizeURL, a6 as sanitizeXURL, a7 as stripHexPrefix, a8 as validateAppID, a9 as validateAppName, aa as validateCreateAppParams, ar as validateDeployParams, ab as validateDescription, as as validateFilePath, at as validateImagePath, ac as validateImageReference, ad as validateInstanceTypeSKU, ae as validateLogVisibility, af as validateLogsParams, ag as validatePrivateKeyFormat, au as validateResourceUsageMonitoring, ah as validateURL, av as validateUpgradeParams, ai as validateXURL } from './helpers-CfsfcGJO.cjs';
7
+ import { S as PreparedDeploy, G as GasEstimate, E as EnvironmentConfig, F as Logger, p as DeployResult, V as PreparedUpgrade, A as AppId } from './index-U2vKBrry.cjs';
8
+ export { a as AlreadyActiveResponse, c as AppProfile, d as AppProfileResponse, e as AppRecord, f as BillingEnvironmentConfig, g as CancelResponse, h as CancelSuccessResponse, i as ChainID, j as CheckoutCreatedResponse, k as CreateSubscriptionOptions, l as CreateSubscriptionResponse, m as DeployAppOpts, n as DeployOptions, o as DeployProgressCallback, q as DeployStep, r as DockerImageConfig, s as EstimateGasOptions, u as ExecuteDeployResult, w as ExecuteUpgradeResult, x as GasOpts, y as GetSubscriptionOptions, I as ImageDigestResult, L as LifecycleOpts, N as NoActiveSubscriptionResponse, P as ParsedEnvironment, H as PaymentIssueResponse, K as PrepareDeployFromVerifiableBuildOpts, M as PrepareDeployOpts, Q as PrepareUpgradeFromVerifiableBuildOpts, R as PrepareUpgradeOpts, U as PreparedDeployData, X as PreparedUpgradeData, Y as ProductID, Z as ProductSubscriptionResponse, _ as Release, a0 as SequentialDeployResult, a1 as SubscribeResponse, a2 as SubscriptionLineItem, a3 as SubscriptionOpts, a4 as SubscriptionStatus, a8 as UpgradeAppOpts, a9 as calculateAppID, ab as estimateTransactionGas, ag as formatETH, ai as getAllAppsByDeveloper, az as getAppLatestReleaseBlockNumbers, aj as getAppsByBillingAccount, am as getBillingType, aA as getBlockTimestamps, ap as logVisibility, aq as noopLogger } from './index-U2vKBrry.cjs';
9
+ import { L as LogVisibility, aj as ResourceUsageMonitoring } from './helpers-DZL2bg9p.cjs';
10
+ export { A as AppInfo, d as AppMetrics, e as AppProfileInfo, ak as AppRelease, al as AppReleaseBuild, am as AppResponse, B as BillingApiClient, C as ComputeApiConfig, l as CreateAppParams, an as DeployParams, E as EstimateBatchGasOptions, G as GeneratedKey, o as LoginRequest, p as LoginResult, q as LogsParams, a as SessionError, S as SessionInfo, b as SiweMessageParams, r as SiweMessageResult, ao as UpgradeParams, U as UserApiClient, t as addHexPrefix, ap as assertValidFilePath, u as assertValidImageReference, v as assertValidPrivateKey, w as checkERC7702Delegation, x as createSiweMessage, aq as createViemClients, y as estimateBatchGas, D as extractAppNameFromImage, F as generateNewPrivateKey, H as generateNonce, I as getAvailableEnvironments, K as getBillingEnvironmentConfig, M as getBuildType, N as getChainFromID, O as getComputeApiSession, P as getEnvironmentConfig, R as isEnvironmentAvailable, T as isMainnet, V as isSessionValid, W as isSiweMessageExpired, X as isSiweMessageNotYetValid, Y as isSubscriptionActive, $ as loginToComputeApi, a2 as logoutFromComputeApi, a3 as parseSiweMessage, a4 as sanitizeString, a5 as sanitizeURL, a6 as sanitizeXURL, a7 as stripHexPrefix, a8 as validateAppID, a9 as validateAppName, aa as validateCreateAppParams, ar as validateDeployParams, ab as validateDescription, as as validateFilePath, at as validateImagePath, ac as validateImageReference, ad as validateInstanceTypeSKU, ae as validateLogVisibility, af as validateLogsParams, ag as validatePrivateKeyFormat, au as validateResourceUsageMonitoring, ah as validateURL, av as validateUpgradeParams, ai as validateXURL } from './helpers-DZL2bg9p.cjs';
11
11
 
12
12
  interface SubmitBuildRequest {
13
13
  repoUrl: string;
package/dist/index.d.ts CHANGED
@@ -1,13 +1,13 @@
1
- import { C as ComputeModule } from './compute-Do2t0Fo8.js';
2
- export { a as ComputeModuleConfig, b as CreateAppOpts, L as LogsOptions, P as PRIMARY_LANGUAGES, S as SDKCreateAppOpts, c as createApp, d as createComputeModule, e as encodeStartAppData, f as encodeStopAppData, g as encodeTerminateAppData, h as getAvailableTemplates, l as logs } from './compute-Do2t0Fo8.js';
1
+ import { C as ComputeModule } from './compute-Cnw6rwSB.js';
2
+ export { a as ComputeModuleConfig, b as CreateAppOpts, L as LogsOptions, P as PRIMARY_LANGUAGES, S as SDKCreateAppOpts, c as createApp, d as createComputeModule, e as encodeStartAppData, f as encodeStopAppData, g as encodeTerminateAppData, h as getAvailableTemplates, l as logs } from './compute-Cnw6rwSB.js';
3
3
  import { BillingModule } from './billing.js';
4
4
  export { BillingModuleConfig, createBillingModule } from './billing.js';
5
5
  import { WalletClient, PublicClient, Address, Hex } from 'viem';
6
6
  export { AttestClient, AttestClientConfig, JwtProvider } from './attest.js';
7
- import { V as PreparedDeploy, G as GasEstimate, E as EnvironmentConfig, H as Logger, q as DeployResult, Y as PreparedUpgrade, A as AppId } from './index-BbH7ZCIu.js';
8
- export { a as AlreadyActiveResponse, c as AppProfile, d as AppProfileResponse, e as AppRecord, f as BillingEnvironmentConfig, g as CancelResponse, h as CancelSuccessResponse, i as ChainID, j as CheckoutCreatedResponse, k as CreateSubscriptionOptions, l as CreateSubscriptionResponse, m as CreditPurchaseResponse, n as DeployAppOpts, o as DeployOptions, p as DeployProgressCallback, r as DeployStep, s as DockerImageConfig, t as EstimateGasOptions, v as ExecuteDeployResult, x as ExecuteUpgradeResult, y as GasOpts, z as GetSubscriptionOptions, I as ImageDigestResult, L as LifecycleOpts, N as NoActiveSubscriptionResponse, P as ParsedEnvironment, J as PaymentIssueResponse, K as PaymentMethod, M as PaymentMethodsResponse, Q as PrepareDeployFromVerifiableBuildOpts, R as PrepareDeployOpts, T as PrepareUpgradeFromVerifiableBuildOpts, U as PrepareUpgradeOpts, X as PreparedDeployData, _ as PreparedUpgradeData, $ as ProductID, a0 as ProductSubscriptionResponse, a1 as Release, a3 as SequentialDeployResult, a4 as SubscribeResponse, a5 as SubscriptionLineItem, a6 as SubscriptionOpts, a7 as SubscriptionStatus, ab as UpgradeAppOpts, ac as calculateAppID, ae as estimateTransactionGas, aj as formatETH, al as getAllAppsByDeveloper, aC as getAppLatestReleaseBlockNumbers, am as getAppsByBillingAccount, ap as getBillingType, aD as getBlockTimestamps, as as logVisibility, at as noopLogger } from './index-BbH7ZCIu.js';
9
- import { L as LogVisibility, aj as ResourceUsageMonitoring } from './helpers-BRamdfGn.js';
10
- export { A as AppInfo, d as AppMetrics, e as AppProfileInfo, ak as AppRelease, al as AppReleaseBuild, am as AppResponse, B as BillingApiClient, C as ComputeApiConfig, l as CreateAppParams, an as DeployParams, E as EstimateBatchGasOptions, G as GeneratedKey, o as LoginRequest, p as LoginResult, q as LogsParams, a as SessionError, S as SessionInfo, b as SiweMessageParams, r as SiweMessageResult, ao as UpgradeParams, U as UserApiClient, t as addHexPrefix, ap as assertValidFilePath, u as assertValidImageReference, v as assertValidPrivateKey, w as checkERC7702Delegation, x as createSiweMessage, aq as createViemClients, y as estimateBatchGas, D as extractAppNameFromImage, F as generateNewPrivateKey, H as generateNonce, I as getAvailableEnvironments, K as getBillingEnvironmentConfig, M as getBuildType, N as getChainFromID, O as getComputeApiSession, P as getEnvironmentConfig, R as isEnvironmentAvailable, T as isMainnet, V as isSessionValid, W as isSiweMessageExpired, X as isSiweMessageNotYetValid, Y as isSubscriptionActive, $ as loginToComputeApi, a2 as logoutFromComputeApi, a3 as parseSiweMessage, a4 as sanitizeString, a5 as sanitizeURL, a6 as sanitizeXURL, a7 as stripHexPrefix, a8 as validateAppID, a9 as validateAppName, aa as validateCreateAppParams, ar as validateDeployParams, ab as validateDescription, as as validateFilePath, at as validateImagePath, ac as validateImageReference, ad as validateInstanceTypeSKU, ae as validateLogVisibility, af as validateLogsParams, ag as validatePrivateKeyFormat, au as validateResourceUsageMonitoring, ah as validateURL, av as validateUpgradeParams, ai as validateXURL } from './helpers-BRamdfGn.js';
7
+ import { S as PreparedDeploy, G as GasEstimate, E as EnvironmentConfig, F as Logger, p as DeployResult, V as PreparedUpgrade, A as AppId } from './index-U2vKBrry.js';
8
+ export { a as AlreadyActiveResponse, c as AppProfile, d as AppProfileResponse, e as AppRecord, f as BillingEnvironmentConfig, g as CancelResponse, h as CancelSuccessResponse, i as ChainID, j as CheckoutCreatedResponse, k as CreateSubscriptionOptions, l as CreateSubscriptionResponse, m as DeployAppOpts, n as DeployOptions, o as DeployProgressCallback, q as DeployStep, r as DockerImageConfig, s as EstimateGasOptions, u as ExecuteDeployResult, w as ExecuteUpgradeResult, x as GasOpts, y as GetSubscriptionOptions, I as ImageDigestResult, L as LifecycleOpts, N as NoActiveSubscriptionResponse, P as ParsedEnvironment, H as PaymentIssueResponse, K as PrepareDeployFromVerifiableBuildOpts, M as PrepareDeployOpts, Q as PrepareUpgradeFromVerifiableBuildOpts, R as PrepareUpgradeOpts, U as PreparedDeployData, X as PreparedUpgradeData, Y as ProductID, Z as ProductSubscriptionResponse, _ as Release, a0 as SequentialDeployResult, a1 as SubscribeResponse, a2 as SubscriptionLineItem, a3 as SubscriptionOpts, a4 as SubscriptionStatus, a8 as UpgradeAppOpts, a9 as calculateAppID, ab as estimateTransactionGas, ag as formatETH, ai as getAllAppsByDeveloper, az as getAppLatestReleaseBlockNumbers, aj as getAppsByBillingAccount, am as getBillingType, aA as getBlockTimestamps, ap as logVisibility, aq as noopLogger } from './index-U2vKBrry.js';
9
+ import { L as LogVisibility, aj as ResourceUsageMonitoring } from './helpers-Dj2ME5rp.js';
10
+ export { A as AppInfo, d as AppMetrics, e as AppProfileInfo, ak as AppRelease, al as AppReleaseBuild, am as AppResponse, B as BillingApiClient, C as ComputeApiConfig, l as CreateAppParams, an as DeployParams, E as EstimateBatchGasOptions, G as GeneratedKey, o as LoginRequest, p as LoginResult, q as LogsParams, a as SessionError, S as SessionInfo, b as SiweMessageParams, r as SiweMessageResult, ao as UpgradeParams, U as UserApiClient, t as addHexPrefix, ap as assertValidFilePath, u as assertValidImageReference, v as assertValidPrivateKey, w as checkERC7702Delegation, x as createSiweMessage, aq as createViemClients, y as estimateBatchGas, D as extractAppNameFromImage, F as generateNewPrivateKey, H as generateNonce, I as getAvailableEnvironments, K as getBillingEnvironmentConfig, M as getBuildType, N as getChainFromID, O as getComputeApiSession, P as getEnvironmentConfig, R as isEnvironmentAvailable, T as isMainnet, V as isSessionValid, W as isSiweMessageExpired, X as isSiweMessageNotYetValid, Y as isSubscriptionActive, $ as loginToComputeApi, a2 as logoutFromComputeApi, a3 as parseSiweMessage, a4 as sanitizeString, a5 as sanitizeURL, a6 as sanitizeXURL, a7 as stripHexPrefix, a8 as validateAppID, a9 as validateAppName, aa as validateCreateAppParams, ar as validateDeployParams, ab as validateDescription, as as validateFilePath, at as validateImagePath, ac as validateImageReference, ad as validateInstanceTypeSKU, ae as validateLogVisibility, af as validateLogsParams, ag as validatePrivateKeyFormat, au as validateResourceUsageMonitoring, ah as validateURL, av as validateUpgradeParams, ai as validateXURL } from './helpers-Dj2ME5rp.js';
11
11
 
12
12
  interface SubmitBuildRequest {
13
13
  repoUrl: string;
package/dist/index.js CHANGED
@@ -4837,7 +4837,7 @@ var CanViewAppLogsPermission = "0x2fd3f2fe";
4837
4837
  var CanViewSensitiveAppInfoPermission = "0x0e67b22f";
4838
4838
  var CanUpdateAppProfilePermission = "0x036fef61";
4839
4839
  function getDefaultClientId() {
4840
- const version = true ? "1.0.0-dev.1" : "0.0.0";
4840
+ const version = true ? "1.0.0-dev.2" : "0.0.0";
4841
4841
  return `ecloud-sdk/v${version}`;
4842
4842
  }
4843
4843
  var UserApiClient = class {
@@ -5655,6 +5655,12 @@ var CHAIN_ID_TO_ENVIRONMENT = {
5655
5655
  [SEPOLIA_CHAIN_ID.toString()]: "sepolia",
5656
5656
  [MAINNET_CHAIN_ID.toString()]: "mainnet-alpha"
5657
5657
  };
5658
+ function getApiUrlOverride() {
5659
+ const raw = process.env.ECLOUD_API_URL;
5660
+ if (!raw) return void 0;
5661
+ const trimmed = raw.trim().replace(/\/+$/, "");
5662
+ return trimmed.length > 0 ? trimmed : void 0;
5663
+ }
5658
5664
  function getEnvironmentConfig(environment, chainID) {
5659
5665
  const env = ENVIRONMENTS[environment];
5660
5666
  if (!env) {
@@ -5672,15 +5678,11 @@ function getEnvironmentConfig(environment, chainID) {
5672
5678
  }
5673
5679
  }
5674
5680
  const resolvedChainID = chainID || (environment === "sepolia" || environment === "sepolia-dev" ? SEPOLIA_CHAIN_ID : MAINNET_CHAIN_ID);
5681
+ const apiUrlOverride = getApiUrlOverride();
5675
5682
  return {
5676
5683
  ...env,
5677
5684
  chainID: BigInt(resolvedChainID),
5678
- ...process.env.ECLOUD_USER_API_URL && {
5679
- userApiServerURL: process.env.ECLOUD_USER_API_URL
5680
- },
5681
- ...process.env.ECLOUD_RPC_URL && {
5682
- defaultRPCURL: process.env.ECLOUD_RPC_URL
5683
- }
5685
+ ...apiUrlOverride ? { userApiServerURL: apiUrlOverride } : {}
5684
5686
  };
5685
5687
  }
5686
5688
  function getBillingEnvironmentConfig(build) {
@@ -5688,12 +5690,11 @@ function getBillingEnvironmentConfig(build) {
5688
5690
  if (!config) {
5689
5691
  throw new Error(`Unknown billing environment: ${build}`);
5690
5692
  }
5691
- return {
5692
- ...config,
5693
- ...process.env.ECLOUD_BILLING_API_URL && {
5694
- billingApiServerURL: process.env.ECLOUD_BILLING_API_URL
5695
- }
5696
- };
5693
+ const apiUrlOverride = getApiUrlOverride();
5694
+ if (apiUrlOverride) {
5695
+ return { billingApiServerURL: apiUrlOverride };
5696
+ }
5697
+ return config;
5697
5698
  }
5698
5699
  function getBuildType() {
5699
5700
  const buildTimeType = true ? "dev"?.toLowerCase() : void 0;
@@ -5998,20 +5999,6 @@ var BillingApiClient = class {
5998
5999
  const endpoint = `${this.config.billingApiServerURL}/products/${productId}/subscription`;
5999
6000
  await this.makeAuthenticatedRequest(endpoint, "DELETE", productId);
6000
6001
  }
6001
- async getPaymentMethods() {
6002
- const endpoint = `${this.config.billingApiServerURL}/v1/payment-methods`;
6003
- const resp = await this.makeAuthenticatedRequest(endpoint, "GET", "compute");
6004
- return resp.json();
6005
- }
6006
- async purchaseCredits(amountCents, paymentMethodId) {
6007
- const endpoint = `${this.config.billingApiServerURL}/v1/credits/purchase`;
6008
- const body = { amountCents };
6009
- if (paymentMethodId) {
6010
- body.paymentMethodId = paymentMethodId;
6011
- }
6012
- const resp = await this.makeAuthenticatedRequest(endpoint, "POST", "compute", body);
6013
- return resp.json();
6014
- }
6015
6002
  // ==========================================================================
6016
6003
  // Internal Methods
6017
6004
  // ==========================================================================
@@ -6021,19 +6008,10 @@ var BillingApiClient = class {
6021
6008
  * Uses session auth if useSession is true, otherwise uses EIP-712 signature auth.
6022
6009
  */
6023
6010
  async makeAuthenticatedRequest(url, method, productId, body) {
6024
- if (this.options.verbose) {
6025
- console.debug(`[BillingAPI] ${method} ${url}`);
6026
- }
6027
- const resp = this.useSession ? await this.makeSessionAuthenticatedRequest(url, method, body) : await this.makeSignatureAuthenticatedRequest(url, method, productId, body);
6028
- if (this.options.verbose) {
6029
- const data = await resp.json();
6030
- console.debug(`[BillingAPI] Response:`, JSON.stringify(data, null, 2));
6031
- return {
6032
- json: async () => data,
6033
- text: async () => JSON.stringify(data)
6034
- };
6011
+ if (this.useSession) {
6012
+ return this.makeSessionAuthenticatedRequest(url, method, body);
6035
6013
  }
6036
- return resp;
6014
+ return this.makeSignatureAuthenticatedRequest(url, method, productId, body);
6037
6015
  }
6038
6016
  /**
6039
6017
  * Make a request using session-based authentication (cookies)
@@ -8222,7 +8200,7 @@ function createBillingModule(config) {
8222
8200
  const address = walletClient.account.address;
8223
8201
  const logger = getLogger(verbose);
8224
8202
  const billingEnvConfig = getBillingEnvironmentConfig(getBuildType());
8225
- const billingApi = new BillingApiClient(billingEnvConfig, walletClient, { verbose });
8203
+ const billingApi = new BillingApiClient(billingEnvConfig, walletClient);
8226
8204
  const environmentConfig = getEnvironmentConfig(environment);
8227
8205
  const usdcCreditsAddress = environmentConfig.usdcCreditsAddress;
8228
8206
  if (!usdcCreditsAddress) {
@@ -8386,12 +8364,6 @@ function createBillingModule(config) {
8386
8364
  };
8387
8365
  }
8388
8366
  );
8389
- },
8390
- async getPaymentMethods() {
8391
- return billingApi.getPaymentMethods();
8392
- },
8393
- async purchaseCredits(amountCents, paymentMethodId) {
8394
- return billingApi.purchaseCredits(amountCents, paymentMethodId);
8395
8367
  }
8396
8368
  };
8397
8369
  return module;