@nevermined-io/payments 1.13.0 → 1.14.0
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/a2a/paymentsRequestHandler.d.ts +5 -1
- package/dist/a2a/paymentsRequestHandler.d.ts.map +1 -1
- package/dist/a2a/paymentsRequestHandler.js +156 -13
- package/dist/a2a/paymentsRequestHandler.js.map +1 -1
- package/dist/a2a/types.d.ts +25 -0
- package/dist/a2a/types.d.ts.map +1 -1
- package/dist/a2a/types.js.map +1 -1
- package/dist/api/agents-api.d.ts +4 -3
- package/dist/api/agents-api.d.ts.map +1 -1
- package/dist/api/agents-api.js +7 -4
- package/dist/api/agents-api.js.map +1 -1
- package/dist/api/base-payments.d.ts +7 -2
- package/dist/api/base-payments.d.ts.map +1 -1
- package/dist/api/base-payments.js +15 -8
- package/dist/api/base-payments.js.map +1 -1
- package/dist/api/nvm-api.d.ts +5 -5
- package/dist/api/observability-api/types.d.ts +34 -6
- package/dist/api/observability-api/types.d.ts.map +1 -1
- package/dist/api/observability-api/types.js.map +1 -1
- package/dist/api/plans-api.d.ts +15 -12
- package/dist/api/plans-api.d.ts.map +1 -1
- package/dist/api/plans-api.js +17 -14
- package/dist/api/plans-api.js.map +1 -1
- package/dist/api/query-api.d.ts +1 -1
- package/dist/common/types.d.ts +88 -18
- package/dist/common/types.d.ts.map +1 -1
- package/dist/common/types.js.map +1 -1
- package/dist/mcp/core/paywall.d.ts.map +1 -1
- package/dist/mcp/core/paywall.js +59 -8
- package/dist/mcp/core/paywall.js.map +1 -1
- package/dist/mcp/http/index.d.ts +1 -1
- package/dist/mcp/http/index.d.ts.map +1 -1
- package/dist/mcp/http/index.js +1 -1
- package/dist/mcp/http/index.js.map +1 -1
- package/dist/mcp/http/oauth-metadata.d.ts +32 -0
- package/dist/mcp/http/oauth-metadata.d.ts.map +1 -1
- package/dist/mcp/http/oauth-metadata.js +329 -34
- package/dist/mcp/http/oauth-metadata.js.map +1 -1
- package/dist/mcp/index.d.ts +4 -4
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +5 -5
- package/dist/mcp/index.js.map +1 -1
- package/dist/mcp/types/http.types.d.ts +38 -3
- package/dist/mcp/types/http.types.d.ts.map +1 -1
- package/dist/mcp/types/http.types.js.map +1 -1
- package/dist/mcp/types/paywall.types.d.ts +19 -3
- package/dist/mcp/types/paywall.types.d.ts.map +1 -1
- package/dist/mcp/types/paywall.types.js.map +1 -1
- package/dist/payments.d.ts.map +1 -1
- package/dist/x402/delegation-api.d.ts +5 -17
- package/dist/x402/delegation-api.d.ts.map +1 -1
- package/dist/x402/delegation-api.js +2 -2
- package/dist/x402/delegation-api.js.map +1 -1
- package/package.json +22 -13
package/dist/api/plans-api.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Address, Currency, NvmAPIResult, PaginationOptions, PaymentOptions, PlanBalance, PlanCreditsConfig, PlanRedemptionType, PlanMetadata, PlanPriceConfig,
|
|
1
|
+
import { Address, Currency, NvmAPIResult, PaginationOptions, PaymentOptions, PlanBalance, PlanCreditsConfig, PlanRedemptionType, PlanMetadata, PlanPriceConfig, StripePaymentIntent } from '../common/types.js';
|
|
2
2
|
import { BasePaymentsAPI, PublicationOptions } from './base-payments.js';
|
|
3
3
|
/**
|
|
4
4
|
* The PlansAPI class provides methods to register and interact with payment plans on Nevermined.
|
|
@@ -325,13 +325,14 @@ export declare class PlansAPI extends BasePaymentsAPI {
|
|
|
325
325
|
* All the agents returned can be accessed by the users that are subscribed to the Payment Plan.
|
|
326
326
|
*
|
|
327
327
|
* @param planId - The unique identifier of the plan.
|
|
328
|
-
* @param pagination - Optional pagination options
|
|
328
|
+
* @param pagination - Optional pagination options. Accepts a plain object
|
|
329
|
+
* (`{ page, offset, sortBy, sortOrder }`) or a `PaginationOptions` instance.
|
|
329
330
|
* @returns A promise that resolves to the list of agents associated with the plan.
|
|
330
331
|
* @throws PaymentsError if the plan is not found.
|
|
331
332
|
*
|
|
332
333
|
* @example
|
|
333
334
|
* ```
|
|
334
|
-
* const result = payments.plans.getAgentsAssociatedToAPlan(planId)
|
|
335
|
+
* const result = payments.plans.getAgentsAssociatedToAPlan(planId, { page: 1, offset: 10 })
|
|
335
336
|
* // {
|
|
336
337
|
* // total: 10,
|
|
337
338
|
* // page: 1,
|
|
@@ -340,7 +341,7 @@ export declare class PlansAPI extends BasePaymentsAPI {
|
|
|
340
341
|
* // }
|
|
341
342
|
* ```
|
|
342
343
|
*/
|
|
343
|
-
getAgentsAssociatedToAPlan(planId: string, pagination?: PaginationOptions): Promise<any>;
|
|
344
|
+
getAgentsAssociatedToAPlan(planId: string, pagination?: Partial<PaginationOptions>): Promise<any>;
|
|
344
345
|
/**
|
|
345
346
|
* Gets the balance of an account for a Payment Plan.
|
|
346
347
|
*
|
|
@@ -384,25 +385,27 @@ export declare class PlansAPI extends BasePaymentsAPI {
|
|
|
384
385
|
*/
|
|
385
386
|
orderPlan(planId: string): Promise<NvmAPIResult>;
|
|
386
387
|
/**
|
|
387
|
-
* Initiates the purchase of a Plan requiring the payment in Fiat. This method
|
|
388
|
+
* Initiates the purchase of a Plan requiring the payment in Fiat. This method creates a
|
|
389
|
+
* Stripe PaymentIntent for the plan's price and returns it.
|
|
388
390
|
*
|
|
389
391
|
* @remarks
|
|
390
|
-
* The payment is completed
|
|
392
|
+
* The payment is completed by confirming the PaymentIntent client-side with Stripe.js and
|
|
393
|
+
* its `client_secret`.
|
|
391
394
|
* @remarks
|
|
392
|
-
* This method is only valid for plans
|
|
395
|
+
* This method is only valid for plans priced in Fiat through Stripe.
|
|
393
396
|
*
|
|
394
397
|
* @param planId - The unique identifier of the plan.
|
|
395
|
-
* @returns A promise that resolves
|
|
398
|
+
* @returns A promise that resolves to the Stripe PaymentIntent created for the plan.
|
|
396
399
|
* @throws PaymentsError if unable to order the plan.
|
|
397
400
|
*
|
|
398
401
|
* @example
|
|
399
402
|
* ```
|
|
400
|
-
* const
|
|
403
|
+
* const paymentIntent = await payments.plans.orderFiatPlan(planId)
|
|
404
|
+
* // paymentIntent.id -> 'pi_…'
|
|
405
|
+
* // paymentIntent.client_secret -> confirm with Stripe.js
|
|
401
406
|
* ```
|
|
402
407
|
*/
|
|
403
|
-
orderFiatPlan(planId: string): Promise<
|
|
404
|
-
result: StripeCheckoutResult;
|
|
405
|
-
}>;
|
|
408
|
+
orderFiatPlan(planId: string): Promise<StripePaymentIntent>;
|
|
406
409
|
/**
|
|
407
410
|
* Mints credits for a given Payment Plan and transfers them to a receiver.
|
|
408
411
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans-api.d.ts","sourceRoot":"","sources":["../../src/api/plans-api.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,OAAO,EACP,QAAQ,EAER,YAAY,EACZ,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"plans-api.d.ts","sourceRoot":"","sources":["../../src/api/plans-api.ts"],"names":[],"mappings":"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"}
|
package/dist/api/plans-api.js
CHANGED
|
@@ -416,13 +416,14 @@ export class PlansAPI extends BasePaymentsAPI {
|
|
|
416
416
|
* All the agents returned can be accessed by the users that are subscribed to the Payment Plan.
|
|
417
417
|
*
|
|
418
418
|
* @param planId - The unique identifier of the plan.
|
|
419
|
-
* @param pagination - Optional pagination options
|
|
419
|
+
* @param pagination - Optional pagination options. Accepts a plain object
|
|
420
|
+
* (`{ page, offset, sortBy, sortOrder }`) or a `PaginationOptions` instance.
|
|
420
421
|
* @returns A promise that resolves to the list of agents associated with the plan.
|
|
421
422
|
* @throws PaymentsError if the plan is not found.
|
|
422
423
|
*
|
|
423
424
|
* @example
|
|
424
425
|
* ```
|
|
425
|
-
* const result = payments.plans.getAgentsAssociatedToAPlan(planId)
|
|
426
|
+
* const result = payments.plans.getAgentsAssociatedToAPlan(planId, { page: 1, offset: 10 })
|
|
426
427
|
* // {
|
|
427
428
|
* // total: 10,
|
|
428
429
|
* // page: 1,
|
|
@@ -431,8 +432,10 @@ export class PlansAPI extends BasePaymentsAPI {
|
|
|
431
432
|
* // }
|
|
432
433
|
* ```
|
|
433
434
|
*/
|
|
434
|
-
async getAgentsAssociatedToAPlan(planId, pagination =
|
|
435
|
-
const query = API_URL_GET_PLAN_AGENTS.replace(':planId', planId) +
|
|
435
|
+
async getAgentsAssociatedToAPlan(planId, pagination = {}) {
|
|
436
|
+
const query = API_URL_GET_PLAN_AGENTS.replace(':planId', planId) +
|
|
437
|
+
'?' +
|
|
438
|
+
new PaginationOptions(pagination).asQueryParams();
|
|
436
439
|
const url = new URL(query, this.environment.backend);
|
|
437
440
|
const response = await fetch(url, this.getPublicHTTPOptions('GET'));
|
|
438
441
|
if (!response.ok) {
|
|
@@ -505,28 +508,28 @@ export class PlansAPI extends BasePaymentsAPI {
|
|
|
505
508
|
return response.json();
|
|
506
509
|
}
|
|
507
510
|
/**
|
|
508
|
-
* Initiates the purchase of a Plan requiring the payment in Fiat. This method
|
|
511
|
+
* Initiates the purchase of a Plan requiring the payment in Fiat. This method creates a
|
|
512
|
+
* Stripe PaymentIntent for the plan's price and returns it.
|
|
509
513
|
*
|
|
510
514
|
* @remarks
|
|
511
|
-
* The payment is completed
|
|
515
|
+
* The payment is completed by confirming the PaymentIntent client-side with Stripe.js and
|
|
516
|
+
* its `client_secret`.
|
|
512
517
|
* @remarks
|
|
513
|
-
* This method is only valid for plans
|
|
518
|
+
* This method is only valid for plans priced in Fiat through Stripe.
|
|
514
519
|
*
|
|
515
520
|
* @param planId - The unique identifier of the plan.
|
|
516
|
-
* @returns A promise that resolves
|
|
521
|
+
* @returns A promise that resolves to the Stripe PaymentIntent created for the plan.
|
|
517
522
|
* @throws PaymentsError if unable to order the plan.
|
|
518
523
|
*
|
|
519
524
|
* @example
|
|
520
525
|
* ```
|
|
521
|
-
* const
|
|
526
|
+
* const paymentIntent = await payments.plans.orderFiatPlan(planId)
|
|
527
|
+
* // paymentIntent.id -> 'pi_…'
|
|
528
|
+
* // paymentIntent.client_secret -> confirm with Stripe.js
|
|
522
529
|
* ```
|
|
523
530
|
*/
|
|
524
531
|
async orderFiatPlan(planId) {
|
|
525
|
-
const
|
|
526
|
-
sessionType: 'embedded',
|
|
527
|
-
planId,
|
|
528
|
-
};
|
|
529
|
-
const options = this.getBackendHTTPOptions('POST', body);
|
|
532
|
+
const options = this.getBackendHTTPOptions('POST', { planId });
|
|
530
533
|
const url = new URL(API_URL_STRIPE_CHECKOUT, this.environment.backend);
|
|
531
534
|
const response = await fetch(url, options);
|
|
532
535
|
if (!response.ok) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plans-api.js","sourceRoot":"","sources":["../../src/api/plans-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { safeParseJson } from '../common/helper.js'\nimport { PaymentsError } from '../common/payments.error.js'\nimport {\n Address,\n Currency,\n EURC_TOKEN_ADDRESS,\n NvmAPIResult,\n PaginationOptions,\n PaymentOptions,\n PlanBalance,\n PlanCreditsConfig,\n PlanRedemptionType,\n PlanMetadata,\n PlanPriceConfig,\n StripeCheckoutResult,\n} from '../common/types.js'\nimport { ZeroAddress } from '../environments.js'\nimport { getRandomBigInt, isEthereumAddress } from '../utils.js'\nimport { BasePaymentsAPI, PublicationOptions, resolvePublicationHeaders } from './base-payments.js'\nimport * as Plans from '../plans.js'\nimport { ContractsAPI } from './contracts-api.js'\nimport {\n API_URL_GET_PLAN,\n API_URL_GET_PLAN_AGENTS,\n API_URL_MINT_EXPIRABLE_PLAN,\n API_URL_MINT_PLAN,\n API_URL_ORDER_PLAN,\n API_URL_PLAN_BALANCE,\n API_URL_REGISTER_PLAN,\n API_URL_STRIPE_CHECKOUT,\n API_URL_GET_PLANS,\n} from './nvm-api.js'\n\n/**\n * The PlansAPI class provides methods to register and interact with payment plans on Nevermined.\n */\nexport class PlansAPI extends BasePaymentsAPI {\n private contractsApi: ContractsAPI\n\n constructor(options: PaymentOptions) {\n super(options)\n this.contractsApi = new ContractsAPI(options)\n }\n /** Price helpers */\n /**\n * Builds a Fiat price configuration for a plan.\n *\n * `amount` is in **6-decimal units** (USDC convention, NOT cents). To\n * charge $2.00, pass `2_000_000n`. Minimum is `1_000_000n` ($1.00) —\n * lower values are rejected server-side with `BCK.PROTOCOL.0047`.\n *\n * @param amount - Amount to charge in 6-decimal units (e.g. `2_000_000n` for $2.00) as bigint.\n * @param receiver - Wallet address that will receive the payment.\n * @param currency - Fiat currency code (default: 'USD'). Any ISO 4217 code accepted by Stripe.\n * @returns The PlanPriceConfig representing a fiat price.\n */\n public getFiatPriceConfig(\n amount: bigint,\n receiver: Address,\n currency: Currency | string = Currency.USD,\n ): PlanPriceConfig {\n return Plans.getFiatPriceConfig(amount, receiver, currency)\n }\n\n /**\n * Builds a Pay-As-You-Go price configuration using the template address from the API.\n */\n public async getPayAsYouGoPriceConfig(\n amount: bigint,\n receiver: Address,\n tokenAddress: Address = ZeroAddress,\n ): Promise<PlanPriceConfig> {\n const templateAddress = await this.contractsApi.getPayAsYouGoTemplateAddress()\n return Plans.getPayAsYouGoPriceConfig(amount, receiver, tokenAddress, templateAddress)\n }\n\n /**\n * Builds a Pay-As-You-Go credits configuration.\n */\n public getPayAsYouGoCreditsConfig(): PlanCreditsConfig {\n return Plans.getPayAsYouGoCreditsConfig()\n }\n\n /**\n * Builds a crypto price configuration for a plan.\n *\n * @param amount - Amount to charge in token minor units as bigint.\n * @param receiver - Wallet address that will receive the payment.\n * @param tokenAddress - Optional ERC20 token address. If omitted, native token is assumed.\n * @returns The PlanPriceConfig representing a crypto price.\n */\n public getCryptoPriceConfig(\n amount: bigint,\n receiver: Address,\n tokenAddress?: Address,\n ): PlanPriceConfig {\n return Plans.getCryptoPriceConfig(amount, receiver, tokenAddress)\n }\n\n /**\n * Builds an ERC20 price configuration for a plan.\n *\n * @param amount - Amount to charge in token minor units as bigint.\n * @param tokenAddress - ERC20 token contract address.\n * @param receiver - Wallet address that will receive the payment.\n * @returns The PlanPriceConfig representing an ERC20 price.\n */\n public getERC20PriceConfig(\n amount: bigint,\n tokenAddress: Address,\n receiver: Address,\n ): PlanPriceConfig {\n return Plans.getERC20PriceConfig(amount, tokenAddress, receiver)\n }\n\n /**\n * Builds an EURC (Euro stablecoin) price configuration for a plan.\n *\n * @param amount - Amount to charge in EURC minor units (6 decimals) as bigint.\n * @param receiver - Wallet address that will receive the payment.\n * @param eurcAddress - Optional EURC token address. Defaults to Base Mainnet EURC.\n * @returns The PlanPriceConfig representing an EURC price.\n */\n public getEURCPriceConfig(\n amount: bigint,\n receiver: Address,\n eurcAddress: Address = EURC_TOKEN_ADDRESS,\n ): PlanPriceConfig {\n return Plans.getEURCPriceConfig(amount, receiver, eurcAddress)\n }\n\n /**\n * Builds a FREE price configuration (no payment required).\n * @returns The PlanPriceConfig representing a free plan.\n */\n public getFreePriceConfig(): PlanPriceConfig {\n return Plans.getFreePriceConfig()\n }\n\n /**\n * Builds a native token price configuration for a plan.\n *\n * @param amount - Amount to charge in native token minor units as bigint.\n * @param receiver - Wallet address that will receive the payment.\n * @returns The PlanPriceConfig representing a native token price.\n */\n public getNativeTokenPriceConfig(amount: bigint, receiver: Address): PlanPriceConfig {\n return Plans.getNativeTokenPriceConfig(amount, receiver)\n }\n\n /** Credits helpers */\n /**\n * Builds an EXPIRABLE credits configuration (time-based access).\n *\n * @param durationOfPlan - Duration in seconds.\n * @returns The PlanCreditsConfig representing expirable credits.\n */\n public getExpirableDurationConfig(durationOfPlan: bigint): PlanCreditsConfig {\n return Plans.getExpirableDurationConfig(durationOfPlan)\n }\n\n /**\n * Builds a NON-EXPIRABLE credits configuration (no expiration).\n * @returns The PlanCreditsConfig representing non-expirable credits.\n */\n public getNonExpirableDurationConfig(): PlanCreditsConfig {\n return Plans.getNonExpirableDurationConfig()\n }\n\n /**\n * Builds a FIXED credits configuration.\n *\n * @param creditsGranted - Total credits granted by the plan.\n * @param creditsPerRequest - Credits spent per request (default 1n).\n * @returns The PlanCreditsConfig representing fixed credits.\n */\n public getFixedCreditsConfig(creditsGranted: bigint, creditsPerRequest = 1n): PlanCreditsConfig {\n return Plans.getFixedCreditsConfig(creditsGranted, creditsPerRequest)\n }\n\n /**\n * Builds a DYNAMIC credits configuration (range-limited per request).\n *\n * @param creditsGranted - Total credits granted by the plan.\n * @param minCreditsPerRequest - Minimum credits per request.\n * @param maxCreditsPerRequest - Maximum credits per request.\n * @returns The PlanCreditsConfig representing dynamic credits.\n */\n public getDynamicCreditsConfig(\n creditsGranted: bigint,\n minCreditsPerRequest = 1n,\n maxCreditsPerRequest = 1n,\n ): PlanCreditsConfig {\n return Plans.getDynamicCreditsConfig(creditsGranted, minCreditsPerRequest, maxCreditsPerRequest)\n }\n\n /**\n * Sets the redemption type in a credits configuration.\n *\n * @param creditsConfig - Credits configuration to modify.\n * @param redemptionType - Redemption type to set.\n * @returns The updated PlanCreditsConfig.\n */\n public setRedemptionType(\n creditsConfig: PlanCreditsConfig,\n redemptionType: PlanRedemptionType,\n ): PlanCreditsConfig {\n return Plans.setRedemptionType(creditsConfig, redemptionType)\n }\n\n /**\n * Marks whether burns of these credits are mirrored on-chain.\n *\n * @param creditsConfig - Credits configuration to modify.\n * @param onchainMirror - Whether on-chain mirroring is enabled. Defaults\n * to `true` so calling `setOnchainMirror(config)` enables the mirror;\n * pass `false` explicitly to disable it. The `PlanCreditsConfig`\n * field itself defaults to `false` (set by all credits-config\n * builders) — when `false` the credits ledger lives in the API's\n * Postgres and burns are recorded off-chain only; when `true`, an\n * on-chain audit mirror replays each burn to `NFT1155Credits`.\n * @returns The updated PlanCreditsConfig.\n */\n public setOnchainMirror(\n creditsConfig: PlanCreditsConfig,\n onchainMirror = true,\n ): PlanCreditsConfig {\n return Plans.setOnchainMirror(creditsConfig, onchainMirror)\n }\n /**\n * This method is used to create a singleton instance of the PlansAPI class.\n *\n * @param options - The options to initialize the payments class.\n * @returns The instance of the PlansAPI class.\n */\n static getInstance(options: PaymentOptions): PlansAPI {\n return new PlansAPI(options)\n }\n\n /**\n *\n * It allows to an AI Builder to register a Payment Plan on Nevermined in a flexible manner.\n * A Payment Plan defines 2 main aspects:\n * 1. What a subscriber needs to pay to get the plan (i.e. 100 USDC, 5 USD, etc).\n * 2. What the subscriber gets in return to access the AI agents associated to the plan (i.e. 100 credits, 1 week of usage, etc).\n *\n * With Payment Plans, AI Builders control the usage to their AI Agents.\n *\n * Every time a user accesses an AI Agent to the Payment Plan, the usage consumes from a capped amount of credits (or when the plan duration expires).\n * When the user consumes all the credits, the plan automatically expires and the user needs to top up to continue using the service.\n *\n * @remarks\n * This method is oriented to AI Builders.\n * The NVM API Key must have publication permissions.\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n * @param nonce - Optional nonce to prevent replay attacks. Default is a random BigInt.\n * @example\n * ```\n * const cryptoPriceConfig = getNativeTokenPriceConfig(100n, builderAddress)\n * const creditsConfig = getFixedCreditsConfig(100n)\n * const { planId } = await payments.plans.registerPlan({ name: 'AI Assistants Plan'}, cryptoPriceConfig, creditsConfig)\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerPlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n nonce = getRandomBigInt(),\n accessLimit?: 'credits' | 'time',\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n if (accessLimit && !['credits', 'time'].includes(accessLimit)) {\n throw new PaymentsError(\n 'Invalid access limit',\n 'accessLimit must be either \"credits\" or \"time\"',\n )\n }\n if (!accessLimit) {\n accessLimit = BigInt(creditsConfig.durationSecs) > 0n ? 'time' : 'credits'\n }\n const body = {\n metadataAttributes: planMetadata,\n priceConfig,\n creditsConfig,\n nonce,\n isTrialPlan: planMetadata.isTrialPlan || false,\n accessLimit,\n ...(priceConfig.currency && { currency: priceConfig.currency }),\n }\n const options = this.getBackendHTTPOptions(\n 'POST',\n body,\n resolvePublicationHeaders(publicationOptions),\n )\n const url = new URL(API_URL_REGISTER_PLAN, this.environment.backend)\n\n const response = await fetch(url, options)\n if (!response.ok) {\n throw Error(`${response.statusText} - ${await response.text()}`)\n }\n\n return response.json()\n }\n\n /**\n *\n * It allows to an AI Builder to create a Payment Plan on Nevermined based on Credits.\n * A Nevermined Credits Plan limits the access by the access/usage of the Plan.\n * With them, AI Builders control the number of requests that can be made to an agent or service.\n * Every time a user accesses any resouce associated to the Payment Plan, the usage consumes from a capped amount of credits.\n * When the user consumes all the credits, the plan automatically expires and the user needs to top up to continue using the service.\n *\n * @remarks This method is oriented to AI Builders\n * @remarks To call this method, the NVM API Key must have publication permissions\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n *\n * @example\n * ```\n * const cryptoPriceConfig = getNativeTokenPriceConfig(100n, builderAddress)\n * const creditsConfig = getFixedCreditsConfig(100n)\n * const { planId } = await payments.plans.registerCreditsPlan(\n * { name: 'AI Credits Plan'},\n * cryptoPriceConfig,\n * creditsConfig\n * )\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerCreditsPlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n // Credits plans must have durationSecs = 0 (non-expirable) and either fixed or dynamic redemption\n if (BigInt(creditsConfig.durationSecs) !== 0n)\n throw new PaymentsError(\n 'The creditsConfig.durationSecs must be 0 for credits plans (non-expirable)',\n )\n\n if (creditsConfig.minAmount > creditsConfig.maxAmount)\n throw new PaymentsError(\n 'The creditsConfig.minAmount can not be more than creditsConfig.maxAmount',\n )\n\n return this.registerPlan(\n planMetadata,\n priceConfig,\n creditsConfig,\n undefined,\n 'credits',\n publicationOptions,\n )\n }\n\n /**\n *\n * It allows to an AI Builder to create a Payment Plan on Nevermined limited by duration.\n * A Nevermined Credits Plan limits the access by the access/usage of the Plan.\n * With them, AI Builders control the number of requests that can be made to an agent or service.\n * Every time a user accesses any resouce associated to the Payment Plan, the usage consumes from a capped amount of credits.\n * When the user consumes all the credits, the plan automatically expires and the user needs to top up to continue using the service.\n *\n * @remarks This method is oriented to AI Builders\n * @remarks To call this method, the NVM API Key must have publication permissions\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n *\n * @example\n * ```\n * const cryptoPriceConfig = getNativeTokenPriceConfig(100n, builderAddress)\n * const 1dayDurationPlan = getExpirableDurationConfig(ONE_DAY_DURATION)\n * const { planId } = await payments.plans.registerTimePlan(\n * { name: 'Just for today plan'},\n * cryptoPriceConfig,\n * 1dayDurationPlan\n * )\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerTimePlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n // Time plans must have durationSecs > 0 (expirable) and isRedemptionAmountFixed = false\n if (BigInt(creditsConfig.durationSecs) === 0n)\n throw new PaymentsError(\n 'The creditsConfig.durationSecs must be greater than 0 for time plans (expirable)',\n )\n\n if (creditsConfig.isRedemptionAmountFixed)\n throw new PaymentsError(\n 'The creditsConfig.isRedemptionAmountFixed must be false for time plans',\n )\n\n return this.registerPlan(\n planMetadata,\n priceConfig,\n creditsConfig,\n undefined,\n 'time',\n publicationOptions,\n )\n }\n\n /**\n *\n * It allows to an AI Builder to create a Trial Payment Plan on Nevermined limited by duration.\n * A Nevermined Trial Plan allow subscribers of that plan to test the Agents associated to it.\n * A Trial plan is a plan that only can be purchased once by a user.\n * Trial plans, as regular plans, can be limited by duration (i.e 1 week of usage) or by credits (i.e 100 credits to use the agent).\n * @remarks This method is oriented to AI Builders\n * @remarks To call this method, the NVM API Key must have publication permissions\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n *\n * @example\n * ```\n * const freePriceConfig = getFreePriceConfig()\n * const 1dayDurationPlan = getExpirableDurationConfig(ONE_DAY_DURATION)\n * const { planId } = await payments.plans.registerCreditsTrialPlan(\n * {name: 'Trial plan'},\n * freePriceConfig,\n * 1dayDurationPlan\n * )\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerCreditsTrialPlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n planMetadata.isTrialPlan = true\n return this.registerCreditsPlan(planMetadata, priceConfig, creditsConfig, publicationOptions)\n }\n\n /**\n *\n * It allows to an AI Builder to create a Trial Payment Plan on Nevermined limited by duration.\n * A Nevermined Trial Plan allow subscribers of that plan to test the Agents associated to it.\n * A Trial plan is a plan that only can be purchased once by a user.\n * Trial plans, as regular plans, can be limited by duration (i.e 1 week of usage) or by credits (i.e 100 credits to use the agent).\n * @remarks This method is oriented to AI Builders\n * @remarks To call this method, the NVM API Key must have publication permissions\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n *\n * @example\n * ```\n * const freePriceConfig = getFreePriceConfig()\n * const 1dayDurationPlan = getExpirableDurationConfig(ONE_DAY_DURATION)\n * const { planId } = await payments.plans.registerTimeTrialPlan(\n * {name: '1 day Trial plan'},\n * freePriceConfig,\n * 1dayDurationPlan\n * )\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerTimeTrialPlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n planMetadata.isTrialPlan = true\n return this.registerTimePlan(planMetadata, priceConfig, creditsConfig, publicationOptions)\n }\n\n /**\n * Gets the information about a Payment Plan by its identifier.\n *\n * @param planId - The unique identifier of the plan.\n * @returns A promise that resolves to the plan's description.\n * @throws PaymentsError if the plan is not found.\n * @example\n * ```\n * const plan = payments.plans.getPlan(planId)\n * ```\n */\n public async getPlan(planId: string) {\n const query = API_URL_GET_PLAN.replace(':planId', planId)\n const url = new URL(query, this.environment.backend)\n const response = await fetch(url, this.getPublicHTTPOptions('GET'))\n if (!response.ok) {\n throw PaymentsError.fromBackend('Plan not found', await safeParseJson(response))\n }\n return response.json()\n }\n\n /**\n * Lists the payment plans **you** published (the authenticated caller's own\n * plans). This is account management, not a marketplace search — it never\n * returns other users' plans.\n *\n * @param page - The page number to retrieve.\n * @param offset - The number of items per page.\n * @param sortBy - The field to sort the results by.\n * @param sortOrder - The order in which to sort the results.\n * @param orgId - Optional organization id. When set, returns every plan in\n * that organization (requires active membership) instead of the caller's.\n * @returns A promise that resolves to the paginated list of your plans.\n */\n public async getPlans(\n page = 1,\n offset = 100,\n sortBy = 'created',\n sortOrder: 'asc' | 'desc' = 'desc',\n orgId?: string,\n ): Promise<{ total: number; page: number; offset: number; plans: any[] }> {\n const url = new URL(API_URL_GET_PLANS, this.environment.backend)\n url.searchParams.set('page', page.toString())\n url.searchParams.set('offset', offset.toString())\n url.searchParams.set('sortBy', sortBy)\n url.searchParams.set('sortOrder', sortOrder)\n if (orgId) url.searchParams.set('orgId', orgId)\n const options = this.getBackendHTTPOptions('GET')\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to get plans', await safeParseJson(response))\n }\n\n const data = await response.json()\n return data\n }\n\n /**\n * Gets the list of Agents that have associated a specific Payment Plan.\n * All the agents returned can be accessed by the users that are subscribed to the Payment Plan.\n *\n * @param planId - The unique identifier of the plan.\n * @param pagination - Optional pagination options to control the number of results returned.\n * @returns A promise that resolves to the list of agents associated with the plan.\n * @throws PaymentsError if the plan is not found.\n *\n * @example\n * ```\n * const result = payments.plans.getAgentsAssociatedToAPlan(planId)\n * // {\n * // total: 10,\n * // page: 1,\n * // offset: 5,\n * // agents: [ ..]\n * // }\n * ```\n */\n public async getAgentsAssociatedToAPlan(planId: string, pagination = new PaginationOptions()) {\n const query =\n API_URL_GET_PLAN_AGENTS.replace(':planId', planId) + '?' + pagination.asQueryParams()\n const url = new URL(query, this.environment.backend)\n const response = await fetch(url, this.getPublicHTTPOptions('GET'))\n if (!response.ok) {\n throw PaymentsError.fromBackend('Plan not found', await safeParseJson(response))\n }\n return response.json()\n }\n\n /**\n * Gets the balance of an account for a Payment Plan.\n *\n * @param planId - The identifier of the Payment Plan.\n * @param accountAddress - The address of the account to get the balance for.\n * @returns @see {@link PlanBalance} A promise that resolves to the balance result.\n * @throws PaymentsError if unable to get the balance.\n *\n * ```\n * const balance = payments.plans.getPlanBalance(planId)\n * // {\n * // planId: '105906633592154016712415751065660953070604027297000423385655551747721326921578',\n * // planType: 'credits',\n * // holderAddress: '0x505384192Ba6a4D4b50EAB846ee67db3b9A93359',\n * // creditsContract: '0xdd0240858fE744C3BF245DD377abBC04d1FDA443',\n * // balance: '100',\n * // isSubscriber: true\n * // }\n * ```\n *\n */\n public async getPlanBalance(planId: string, accountAddress?: Address): Promise<PlanBalance> {\n const holderAddress = isEthereumAddress(accountAddress)\n ? accountAddress\n : this.getAccountAddress()\n\n if (!holderAddress) {\n throw new PaymentsError('Holder address is required')\n }\n\n const balanceUrl = API_URL_PLAN_BALANCE.replace(':planId', planId).replace(\n ':holderAddress',\n holderAddress,\n )\n\n const url = new URL(balanceUrl, this.environment.backend)\n const response = await fetch(url, this.getPublicHTTPOptions('GET'))\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to get balance', await safeParseJson(response))\n }\n\n return response.json()\n }\n\n /**\n * Orders a Payment Plan requiring the payment in crypto. The user must have enough balance in the selected token.\n *\n * @remarks\n * The payment is done using crypto in the token (ERC20 or native) defined in the plan.\n *\n * @param planId - The unique identifier of the plan.\n * @returns @see {@link NvmAPIResult} A promise that resolves indicating if the operation was successful.\n * @throws PaymentsError if unable to order the plan.\n *\n * @example\n * ```\n * const result = await payments.plans.orderPlan(planId)\n * // {\n * // txHash: '0x8d29d5769e832a35e53f80cd4e8890d941c50a09c33dbd975533debc894f2535',\n * // success: true\n * // }\n * ```\n */\n public async orderPlan(planId: string): Promise<NvmAPIResult> {\n const options = this.getBackendHTTPOptions('POST')\n const url = new URL(API_URL_ORDER_PLAN.replace(':planId', planId), this.environment.backend)\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to order plan', await safeParseJson(response))\n }\n\n return response.json()\n }\n\n /**\n * Initiates the purchase of a Plan requiring the payment in Fiat. This method will return a URL where the user can complete the payment.\n *\n * @remarks\n * The payment is completed using a credit card in a external website (Stripe).\n * @remarks\n * This method is only valid for plans with price in Fiat.\n *\n * @param planId - The unique identifier of the plan.\n * @returns A promise that resolves indicating the URL to complete the payment.\n * @throws PaymentsError if unable to order the plan.\n *\n * @example\n * ```\n * const result = await payments.plans.orderFiatPlan(planId)\n * ```\n */\n public async orderFiatPlan(planId: string): Promise<{ result: StripeCheckoutResult }> {\n const body = {\n sessionType: 'embedded',\n planId,\n }\n const options = this.getBackendHTTPOptions('POST', body)\n const url = new URL(API_URL_STRIPE_CHECKOUT, this.environment.backend)\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to order fiat plan', await safeParseJson(response))\n }\n\n return response.json()\n }\n\n /**\n * Mints credits for a given Payment Plan and transfers them to a receiver.\n *\n * @remarks\n * Only the owner of the Payment Plan can call this method.\n *\n * @param planId - The unique identifier of the Payment Plan.\n * @param creditsAmount - The number of credits to mint.\n * @param creditsReceiver - The address of the receiver.\n * @returns @see {@link NvmAPIResult} A promise that resolves to the result of the operation.\n * @throws PaymentsError if unable to mint credits.\n *\n * @example\n * ```\n * const result = await payments.plans.mintPlanCredits(planId, 5n, '0x505384192Ba6a4D4b50EAB846ee67db3b9A93359')\n * // {\n * // txHash: '0x8d29d5769e832a35e53f80cd4e8890d941c50a09c33dbd975533debc894f2535',\n * // success: true\n * // }\n * ```\n */\n public async mintPlanCredits(\n planId: string,\n creditsAmount: bigint,\n creditsReceiver: Address,\n ): Promise<NvmAPIResult> {\n const body = { planId, amount: creditsAmount, creditsReceiver }\n const options = this.getBackendHTTPOptions('POST', body)\n const url = new URL(API_URL_MINT_PLAN, this.environment.backend)\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to mint plan credits', await safeParseJson(response))\n }\n\n return response.json()\n }\n\n /**\n * Mints expirable credits for a given Payment Plan and transfers them to a receiver.\n *\n * @remarks\n * Only the owner of the Payment Plan can call this method.\n *\n * @param planId - The unique identifier of the Payment Plan.\n * @param creditsAmount - The number of credits to mint.\n * @param creditsReceiver - The address of the receiver.\n * @param creditsDuration - The duration of the credits in seconds. Default is 0 (no expiration).\n * @returns @see {@link NvmAPIResult} A promise that resolves to the result of the operation.\n * @throws PaymentsError if unable to mint expirable credits.\n *\n * @example\n * ```\n * const result = await payments.plans.mintPlanExpirable(\n * planId,\n * 1n,\n * '0x505384192Ba6a4D4b50EAB846ee67db3b9A93359',\n * 86_400n // 1 day in seconds\n * )\n * // {\n * // txHash: '0x8d29d5769e832a35e53f80cd4e8890d941c50a09c33dbd975533debc894f2535',\n * // success: true\n * // }\n * ```\n */\n public async mintPlanExpirable(\n planId: string,\n creditsAmount: bigint,\n creditsReceiver: Address,\n creditsDuration = 0n,\n ): Promise<NvmAPIResult> {\n const body = { planId, creditsAmount, creditsReceiver, creditsDuration }\n const options = this.getBackendHTTPOptions('POST', body)\n const url = new URL(API_URL_MINT_EXPIRABLE_PLAN, this.environment.backend)\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend(\n 'Unable to mint expirable credits',\n await safeParseJson(response),\n )\n }\n\n return response.json()\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"plans-api.js","sourceRoot":"","sources":["../../src/api/plans-api.ts"],"names":[],"mappings":"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","sourcesContent":["import { safeParseJson } from '../common/helper.js'\nimport { PaymentsError } from '../common/payments.error.js'\nimport {\n Address,\n Currency,\n EURC_TOKEN_ADDRESS,\n NvmAPIResult,\n PaginationOptions,\n PaymentOptions,\n PlanBalance,\n PlanCreditsConfig,\n PlanRedemptionType,\n PlanMetadata,\n PlanPriceConfig,\n StripePaymentIntent,\n} from '../common/types.js'\nimport { ZeroAddress } from '../environments.js'\nimport { getRandomBigInt, isEthereumAddress } from '../utils.js'\nimport { BasePaymentsAPI, PublicationOptions, resolvePublicationHeaders } from './base-payments.js'\nimport * as Plans from '../plans.js'\nimport { ContractsAPI } from './contracts-api.js'\nimport {\n API_URL_GET_PLAN,\n API_URL_GET_PLAN_AGENTS,\n API_URL_MINT_EXPIRABLE_PLAN,\n API_URL_MINT_PLAN,\n API_URL_ORDER_PLAN,\n API_URL_PLAN_BALANCE,\n API_URL_REGISTER_PLAN,\n API_URL_STRIPE_CHECKOUT,\n API_URL_GET_PLANS,\n} from './nvm-api.js'\n\n/**\n * The PlansAPI class provides methods to register and interact with payment plans on Nevermined.\n */\nexport class PlansAPI extends BasePaymentsAPI {\n private contractsApi: ContractsAPI\n\n constructor(options: PaymentOptions) {\n super(options)\n this.contractsApi = new ContractsAPI(options)\n }\n /** Price helpers */\n /**\n * Builds a Fiat price configuration for a plan.\n *\n * `amount` is in **6-decimal units** (USDC convention, NOT cents). To\n * charge $2.00, pass `2_000_000n`. Minimum is `1_000_000n` ($1.00) —\n * lower values are rejected server-side with `BCK.PROTOCOL.0047`.\n *\n * @param amount - Amount to charge in 6-decimal units (e.g. `2_000_000n` for $2.00) as bigint.\n * @param receiver - Wallet address that will receive the payment.\n * @param currency - Fiat currency code (default: 'USD'). Any ISO 4217 code accepted by Stripe.\n * @returns The PlanPriceConfig representing a fiat price.\n */\n public getFiatPriceConfig(\n amount: bigint,\n receiver: Address,\n currency: Currency | string = Currency.USD,\n ): PlanPriceConfig {\n return Plans.getFiatPriceConfig(amount, receiver, currency)\n }\n\n /**\n * Builds a Pay-As-You-Go price configuration using the template address from the API.\n */\n public async getPayAsYouGoPriceConfig(\n amount: bigint,\n receiver: Address,\n tokenAddress: Address = ZeroAddress,\n ): Promise<PlanPriceConfig> {\n const templateAddress = await this.contractsApi.getPayAsYouGoTemplateAddress()\n return Plans.getPayAsYouGoPriceConfig(amount, receiver, tokenAddress, templateAddress)\n }\n\n /**\n * Builds a Pay-As-You-Go credits configuration.\n */\n public getPayAsYouGoCreditsConfig(): PlanCreditsConfig {\n return Plans.getPayAsYouGoCreditsConfig()\n }\n\n /**\n * Builds a crypto price configuration for a plan.\n *\n * @param amount - Amount to charge in token minor units as bigint.\n * @param receiver - Wallet address that will receive the payment.\n * @param tokenAddress - Optional ERC20 token address. If omitted, native token is assumed.\n * @returns The PlanPriceConfig representing a crypto price.\n */\n public getCryptoPriceConfig(\n amount: bigint,\n receiver: Address,\n tokenAddress?: Address,\n ): PlanPriceConfig {\n return Plans.getCryptoPriceConfig(amount, receiver, tokenAddress)\n }\n\n /**\n * Builds an ERC20 price configuration for a plan.\n *\n * @param amount - Amount to charge in token minor units as bigint.\n * @param tokenAddress - ERC20 token contract address.\n * @param receiver - Wallet address that will receive the payment.\n * @returns The PlanPriceConfig representing an ERC20 price.\n */\n public getERC20PriceConfig(\n amount: bigint,\n tokenAddress: Address,\n receiver: Address,\n ): PlanPriceConfig {\n return Plans.getERC20PriceConfig(amount, tokenAddress, receiver)\n }\n\n /**\n * Builds an EURC (Euro stablecoin) price configuration for a plan.\n *\n * @param amount - Amount to charge in EURC minor units (6 decimals) as bigint.\n * @param receiver - Wallet address that will receive the payment.\n * @param eurcAddress - Optional EURC token address. Defaults to Base Mainnet EURC.\n * @returns The PlanPriceConfig representing an EURC price.\n */\n public getEURCPriceConfig(\n amount: bigint,\n receiver: Address,\n eurcAddress: Address = EURC_TOKEN_ADDRESS,\n ): PlanPriceConfig {\n return Plans.getEURCPriceConfig(amount, receiver, eurcAddress)\n }\n\n /**\n * Builds a FREE price configuration (no payment required).\n * @returns The PlanPriceConfig representing a free plan.\n */\n public getFreePriceConfig(): PlanPriceConfig {\n return Plans.getFreePriceConfig()\n }\n\n /**\n * Builds a native token price configuration for a plan.\n *\n * @param amount - Amount to charge in native token minor units as bigint.\n * @param receiver - Wallet address that will receive the payment.\n * @returns The PlanPriceConfig representing a native token price.\n */\n public getNativeTokenPriceConfig(amount: bigint, receiver: Address): PlanPriceConfig {\n return Plans.getNativeTokenPriceConfig(amount, receiver)\n }\n\n /** Credits helpers */\n /**\n * Builds an EXPIRABLE credits configuration (time-based access).\n *\n * @param durationOfPlan - Duration in seconds.\n * @returns The PlanCreditsConfig representing expirable credits.\n */\n public getExpirableDurationConfig(durationOfPlan: bigint): PlanCreditsConfig {\n return Plans.getExpirableDurationConfig(durationOfPlan)\n }\n\n /**\n * Builds a NON-EXPIRABLE credits configuration (no expiration).\n * @returns The PlanCreditsConfig representing non-expirable credits.\n */\n public getNonExpirableDurationConfig(): PlanCreditsConfig {\n return Plans.getNonExpirableDurationConfig()\n }\n\n /**\n * Builds a FIXED credits configuration.\n *\n * @param creditsGranted - Total credits granted by the plan.\n * @param creditsPerRequest - Credits spent per request (default 1n).\n * @returns The PlanCreditsConfig representing fixed credits.\n */\n public getFixedCreditsConfig(creditsGranted: bigint, creditsPerRequest = 1n): PlanCreditsConfig {\n return Plans.getFixedCreditsConfig(creditsGranted, creditsPerRequest)\n }\n\n /**\n * Builds a DYNAMIC credits configuration (range-limited per request).\n *\n * @param creditsGranted - Total credits granted by the plan.\n * @param minCreditsPerRequest - Minimum credits per request.\n * @param maxCreditsPerRequest - Maximum credits per request.\n * @returns The PlanCreditsConfig representing dynamic credits.\n */\n public getDynamicCreditsConfig(\n creditsGranted: bigint,\n minCreditsPerRequest = 1n,\n maxCreditsPerRequest = 1n,\n ): PlanCreditsConfig {\n return Plans.getDynamicCreditsConfig(creditsGranted, minCreditsPerRequest, maxCreditsPerRequest)\n }\n\n /**\n * Sets the redemption type in a credits configuration.\n *\n * @param creditsConfig - Credits configuration to modify.\n * @param redemptionType - Redemption type to set.\n * @returns The updated PlanCreditsConfig.\n */\n public setRedemptionType(\n creditsConfig: PlanCreditsConfig,\n redemptionType: PlanRedemptionType,\n ): PlanCreditsConfig {\n return Plans.setRedemptionType(creditsConfig, redemptionType)\n }\n\n /**\n * Marks whether burns of these credits are mirrored on-chain.\n *\n * @param creditsConfig - Credits configuration to modify.\n * @param onchainMirror - Whether on-chain mirroring is enabled. Defaults\n * to `true` so calling `setOnchainMirror(config)` enables the mirror;\n * pass `false` explicitly to disable it. The `PlanCreditsConfig`\n * field itself defaults to `false` (set by all credits-config\n * builders) — when `false` the credits ledger lives in the API's\n * Postgres and burns are recorded off-chain only; when `true`, an\n * on-chain audit mirror replays each burn to `NFT1155Credits`.\n * @returns The updated PlanCreditsConfig.\n */\n public setOnchainMirror(\n creditsConfig: PlanCreditsConfig,\n onchainMirror = true,\n ): PlanCreditsConfig {\n return Plans.setOnchainMirror(creditsConfig, onchainMirror)\n }\n /**\n * This method is used to create a singleton instance of the PlansAPI class.\n *\n * @param options - The options to initialize the payments class.\n * @returns The instance of the PlansAPI class.\n */\n static getInstance(options: PaymentOptions): PlansAPI {\n return new PlansAPI(options)\n }\n\n /**\n *\n * It allows to an AI Builder to register a Payment Plan on Nevermined in a flexible manner.\n * A Payment Plan defines 2 main aspects:\n * 1. What a subscriber needs to pay to get the plan (i.e. 100 USDC, 5 USD, etc).\n * 2. What the subscriber gets in return to access the AI agents associated to the plan (i.e. 100 credits, 1 week of usage, etc).\n *\n * With Payment Plans, AI Builders control the usage to their AI Agents.\n *\n * Every time a user accesses an AI Agent to the Payment Plan, the usage consumes from a capped amount of credits (or when the plan duration expires).\n * When the user consumes all the credits, the plan automatically expires and the user needs to top up to continue using the service.\n *\n * @remarks\n * This method is oriented to AI Builders.\n * The NVM API Key must have publication permissions.\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n * @param nonce - Optional nonce to prevent replay attacks. Default is a random BigInt.\n * @example\n * ```\n * const cryptoPriceConfig = getNativeTokenPriceConfig(100n, builderAddress)\n * const creditsConfig = getFixedCreditsConfig(100n)\n * const { planId } = await payments.plans.registerPlan({ name: 'AI Assistants Plan'}, cryptoPriceConfig, creditsConfig)\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerPlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n nonce = getRandomBigInt(),\n accessLimit?: 'credits' | 'time',\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n if (accessLimit && !['credits', 'time'].includes(accessLimit)) {\n throw new PaymentsError(\n 'Invalid access limit',\n 'accessLimit must be either \"credits\" or \"time\"',\n )\n }\n if (!accessLimit) {\n accessLimit = BigInt(creditsConfig.durationSecs) > 0n ? 'time' : 'credits'\n }\n const body = {\n metadataAttributes: planMetadata,\n priceConfig,\n creditsConfig,\n nonce,\n isTrialPlan: planMetadata.isTrialPlan || false,\n accessLimit,\n ...(priceConfig.currency && { currency: priceConfig.currency }),\n }\n const options = this.getBackendHTTPOptions(\n 'POST',\n body,\n resolvePublicationHeaders(publicationOptions),\n )\n const url = new URL(API_URL_REGISTER_PLAN, this.environment.backend)\n\n const response = await fetch(url, options)\n if (!response.ok) {\n throw Error(`${response.statusText} - ${await response.text()}`)\n }\n\n return response.json()\n }\n\n /**\n *\n * It allows to an AI Builder to create a Payment Plan on Nevermined based on Credits.\n * A Nevermined Credits Plan limits the access by the access/usage of the Plan.\n * With them, AI Builders control the number of requests that can be made to an agent or service.\n * Every time a user accesses any resouce associated to the Payment Plan, the usage consumes from a capped amount of credits.\n * When the user consumes all the credits, the plan automatically expires and the user needs to top up to continue using the service.\n *\n * @remarks This method is oriented to AI Builders\n * @remarks To call this method, the NVM API Key must have publication permissions\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n *\n * @example\n * ```\n * const cryptoPriceConfig = getNativeTokenPriceConfig(100n, builderAddress)\n * const creditsConfig = getFixedCreditsConfig(100n)\n * const { planId } = await payments.plans.registerCreditsPlan(\n * { name: 'AI Credits Plan'},\n * cryptoPriceConfig,\n * creditsConfig\n * )\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerCreditsPlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n // Credits plans must have durationSecs = 0 (non-expirable) and either fixed or dynamic redemption\n if (BigInt(creditsConfig.durationSecs) !== 0n)\n throw new PaymentsError(\n 'The creditsConfig.durationSecs must be 0 for credits plans (non-expirable)',\n )\n\n if (creditsConfig.minAmount > creditsConfig.maxAmount)\n throw new PaymentsError(\n 'The creditsConfig.minAmount can not be more than creditsConfig.maxAmount',\n )\n\n return this.registerPlan(\n planMetadata,\n priceConfig,\n creditsConfig,\n undefined,\n 'credits',\n publicationOptions,\n )\n }\n\n /**\n *\n * It allows to an AI Builder to create a Payment Plan on Nevermined limited by duration.\n * A Nevermined Credits Plan limits the access by the access/usage of the Plan.\n * With them, AI Builders control the number of requests that can be made to an agent or service.\n * Every time a user accesses any resouce associated to the Payment Plan, the usage consumes from a capped amount of credits.\n * When the user consumes all the credits, the plan automatically expires and the user needs to top up to continue using the service.\n *\n * @remarks This method is oriented to AI Builders\n * @remarks To call this method, the NVM API Key must have publication permissions\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n *\n * @example\n * ```\n * const cryptoPriceConfig = getNativeTokenPriceConfig(100n, builderAddress)\n * const 1dayDurationPlan = getExpirableDurationConfig(ONE_DAY_DURATION)\n * const { planId } = await payments.plans.registerTimePlan(\n * { name: 'Just for today plan'},\n * cryptoPriceConfig,\n * 1dayDurationPlan\n * )\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerTimePlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n // Time plans must have durationSecs > 0 (expirable) and isRedemptionAmountFixed = false\n if (BigInt(creditsConfig.durationSecs) === 0n)\n throw new PaymentsError(\n 'The creditsConfig.durationSecs must be greater than 0 for time plans (expirable)',\n )\n\n if (creditsConfig.isRedemptionAmountFixed)\n throw new PaymentsError(\n 'The creditsConfig.isRedemptionAmountFixed must be false for time plans',\n )\n\n return this.registerPlan(\n planMetadata,\n priceConfig,\n creditsConfig,\n undefined,\n 'time',\n publicationOptions,\n )\n }\n\n /**\n *\n * It allows to an AI Builder to create a Trial Payment Plan on Nevermined limited by duration.\n * A Nevermined Trial Plan allow subscribers of that plan to test the Agents associated to it.\n * A Trial plan is a plan that only can be purchased once by a user.\n * Trial plans, as regular plans, can be limited by duration (i.e 1 week of usage) or by credits (i.e 100 credits to use the agent).\n * @remarks This method is oriented to AI Builders\n * @remarks To call this method, the NVM API Key must have publication permissions\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n *\n * @example\n * ```\n * const freePriceConfig = getFreePriceConfig()\n * const 1dayDurationPlan = getExpirableDurationConfig(ONE_DAY_DURATION)\n * const { planId } = await payments.plans.registerCreditsTrialPlan(\n * {name: 'Trial plan'},\n * freePriceConfig,\n * 1dayDurationPlan\n * )\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerCreditsTrialPlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n planMetadata.isTrialPlan = true\n return this.registerCreditsPlan(planMetadata, priceConfig, creditsConfig, publicationOptions)\n }\n\n /**\n *\n * It allows to an AI Builder to create a Trial Payment Plan on Nevermined limited by duration.\n * A Nevermined Trial Plan allow subscribers of that plan to test the Agents associated to it.\n * A Trial plan is a plan that only can be purchased once by a user.\n * Trial plans, as regular plans, can be limited by duration (i.e 1 week of usage) or by credits (i.e 100 credits to use the agent).\n * @remarks This method is oriented to AI Builders\n * @remarks To call this method, the NVM API Key must have publication permissions\n *\n * @see https://nevermined.ai/docs/tutorials/builders/create-plan\n *\n * @param planMetadata - @see {@link PlanMetadata}\n * @param priceConfig - @see {@link PlanPriceConfig}\n * @param creditsConfig - @see {@link PlanCreditsConfig}\n *\n * @example\n * ```\n * const freePriceConfig = getFreePriceConfig()\n * const 1dayDurationPlan = getExpirableDurationConfig(ONE_DAY_DURATION)\n * const { planId } = await payments.plans.registerTimeTrialPlan(\n * {name: '1 day Trial plan'},\n * freePriceConfig,\n * 1dayDurationPlan\n * )\n * ```\n *\n * @returns The unique identifier of the plan (Plan ID) of the newly created plan.\n */\n public async registerTimeTrialPlan(\n planMetadata: PlanMetadata,\n priceConfig: PlanPriceConfig,\n creditsConfig: PlanCreditsConfig,\n publicationOptions?: PublicationOptions,\n ): Promise<{ planId: string }> {\n planMetadata.isTrialPlan = true\n return this.registerTimePlan(planMetadata, priceConfig, creditsConfig, publicationOptions)\n }\n\n /**\n * Gets the information about a Payment Plan by its identifier.\n *\n * @param planId - The unique identifier of the plan.\n * @returns A promise that resolves to the plan's description.\n * @throws PaymentsError if the plan is not found.\n * @example\n * ```\n * const plan = payments.plans.getPlan(planId)\n * ```\n */\n public async getPlan(planId: string) {\n const query = API_URL_GET_PLAN.replace(':planId', planId)\n const url = new URL(query, this.environment.backend)\n const response = await fetch(url, this.getPublicHTTPOptions('GET'))\n if (!response.ok) {\n throw PaymentsError.fromBackend('Plan not found', await safeParseJson(response))\n }\n return response.json()\n }\n\n /**\n * Lists the payment plans **you** published (the authenticated caller's own\n * plans). This is account management, not a marketplace search — it never\n * returns other users' plans.\n *\n * @param page - The page number to retrieve.\n * @param offset - The number of items per page.\n * @param sortBy - The field to sort the results by.\n * @param sortOrder - The order in which to sort the results.\n * @param orgId - Optional organization id. When set, returns every plan in\n * that organization (requires active membership) instead of the caller's.\n * @returns A promise that resolves to the paginated list of your plans.\n */\n public async getPlans(\n page = 1,\n offset = 100,\n sortBy = 'created',\n sortOrder: 'asc' | 'desc' = 'desc',\n orgId?: string,\n ): Promise<{ total: number; page: number; offset: number; plans: any[] }> {\n const url = new URL(API_URL_GET_PLANS, this.environment.backend)\n url.searchParams.set('page', page.toString())\n url.searchParams.set('offset', offset.toString())\n url.searchParams.set('sortBy', sortBy)\n url.searchParams.set('sortOrder', sortOrder)\n if (orgId) url.searchParams.set('orgId', orgId)\n const options = this.getBackendHTTPOptions('GET')\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to get plans', await safeParseJson(response))\n }\n\n const data = await response.json()\n return data\n }\n\n /**\n * Gets the list of Agents that have associated a specific Payment Plan.\n * All the agents returned can be accessed by the users that are subscribed to the Payment Plan.\n *\n * @param planId - The unique identifier of the plan.\n * @param pagination - Optional pagination options. Accepts a plain object\n * (`{ page, offset, sortBy, sortOrder }`) or a `PaginationOptions` instance.\n * @returns A promise that resolves to the list of agents associated with the plan.\n * @throws PaymentsError if the plan is not found.\n *\n * @example\n * ```\n * const result = payments.plans.getAgentsAssociatedToAPlan(planId, { page: 1, offset: 10 })\n * // {\n * // total: 10,\n * // page: 1,\n * // offset: 5,\n * // agents: [ ..]\n * // }\n * ```\n */\n public async getAgentsAssociatedToAPlan(\n planId: string,\n pagination: Partial<PaginationOptions> = {},\n ) {\n const query =\n API_URL_GET_PLAN_AGENTS.replace(':planId', planId) +\n '?' +\n new PaginationOptions(pagination).asQueryParams()\n const url = new URL(query, this.environment.backend)\n const response = await fetch(url, this.getPublicHTTPOptions('GET'))\n if (!response.ok) {\n throw PaymentsError.fromBackend('Plan not found', await safeParseJson(response))\n }\n return response.json()\n }\n\n /**\n * Gets the balance of an account for a Payment Plan.\n *\n * @param planId - The identifier of the Payment Plan.\n * @param accountAddress - The address of the account to get the balance for.\n * @returns @see {@link PlanBalance} A promise that resolves to the balance result.\n * @throws PaymentsError if unable to get the balance.\n *\n * ```\n * const balance = payments.plans.getPlanBalance(planId)\n * // {\n * // planId: '105906633592154016712415751065660953070604027297000423385655551747721326921578',\n * // planType: 'credits',\n * // holderAddress: '0x505384192Ba6a4D4b50EAB846ee67db3b9A93359',\n * // creditsContract: '0xdd0240858fE744C3BF245DD377abBC04d1FDA443',\n * // balance: '100',\n * // isSubscriber: true\n * // }\n * ```\n *\n */\n public async getPlanBalance(planId: string, accountAddress?: Address): Promise<PlanBalance> {\n const holderAddress = isEthereumAddress(accountAddress)\n ? accountAddress\n : this.getAccountAddress()\n\n if (!holderAddress) {\n throw new PaymentsError('Holder address is required')\n }\n\n const balanceUrl = API_URL_PLAN_BALANCE.replace(':planId', planId).replace(\n ':holderAddress',\n holderAddress,\n )\n\n const url = new URL(balanceUrl, this.environment.backend)\n const response = await fetch(url, this.getPublicHTTPOptions('GET'))\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to get balance', await safeParseJson(response))\n }\n\n return response.json()\n }\n\n /**\n * Orders a Payment Plan requiring the payment in crypto. The user must have enough balance in the selected token.\n *\n * @remarks\n * The payment is done using crypto in the token (ERC20 or native) defined in the plan.\n *\n * @param planId - The unique identifier of the plan.\n * @returns @see {@link NvmAPIResult} A promise that resolves indicating if the operation was successful.\n * @throws PaymentsError if unable to order the plan.\n *\n * @example\n * ```\n * const result = await payments.plans.orderPlan(planId)\n * // {\n * // txHash: '0x8d29d5769e832a35e53f80cd4e8890d941c50a09c33dbd975533debc894f2535',\n * // success: true\n * // }\n * ```\n */\n public async orderPlan(planId: string): Promise<NvmAPIResult> {\n const options = this.getBackendHTTPOptions('POST')\n const url = new URL(API_URL_ORDER_PLAN.replace(':planId', planId), this.environment.backend)\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to order plan', await safeParseJson(response))\n }\n\n return response.json()\n }\n\n /**\n * Initiates the purchase of a Plan requiring the payment in Fiat. This method creates a\n * Stripe PaymentIntent for the plan's price and returns it.\n *\n * @remarks\n * The payment is completed by confirming the PaymentIntent client-side with Stripe.js and\n * its `client_secret`.\n * @remarks\n * This method is only valid for plans priced in Fiat through Stripe.\n *\n * @param planId - The unique identifier of the plan.\n * @returns A promise that resolves to the Stripe PaymentIntent created for the plan.\n * @throws PaymentsError if unable to order the plan.\n *\n * @example\n * ```\n * const paymentIntent = await payments.plans.orderFiatPlan(planId)\n * // paymentIntent.id -> 'pi_…'\n * // paymentIntent.client_secret -> confirm with Stripe.js\n * ```\n */\n public async orderFiatPlan(planId: string): Promise<StripePaymentIntent> {\n const options = this.getBackendHTTPOptions('POST', { planId })\n const url = new URL(API_URL_STRIPE_CHECKOUT, this.environment.backend)\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to order fiat plan', await safeParseJson(response))\n }\n\n return response.json()\n }\n\n /**\n * Mints credits for a given Payment Plan and transfers them to a receiver.\n *\n * @remarks\n * Only the owner of the Payment Plan can call this method.\n *\n * @param planId - The unique identifier of the Payment Plan.\n * @param creditsAmount - The number of credits to mint.\n * @param creditsReceiver - The address of the receiver.\n * @returns @see {@link NvmAPIResult} A promise that resolves to the result of the operation.\n * @throws PaymentsError if unable to mint credits.\n *\n * @example\n * ```\n * const result = await payments.plans.mintPlanCredits(planId, 5n, '0x505384192Ba6a4D4b50EAB846ee67db3b9A93359')\n * // {\n * // txHash: '0x8d29d5769e832a35e53f80cd4e8890d941c50a09c33dbd975533debc894f2535',\n * // success: true\n * // }\n * ```\n */\n public async mintPlanCredits(\n planId: string,\n creditsAmount: bigint,\n creditsReceiver: Address,\n ): Promise<NvmAPIResult> {\n const body = { planId, amount: creditsAmount, creditsReceiver }\n const options = this.getBackendHTTPOptions('POST', body)\n const url = new URL(API_URL_MINT_PLAN, this.environment.backend)\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend('Unable to mint plan credits', await safeParseJson(response))\n }\n\n return response.json()\n }\n\n /**\n * Mints expirable credits for a given Payment Plan and transfers them to a receiver.\n *\n * @remarks\n * Only the owner of the Payment Plan can call this method.\n *\n * @param planId - The unique identifier of the Payment Plan.\n * @param creditsAmount - The number of credits to mint.\n * @param creditsReceiver - The address of the receiver.\n * @param creditsDuration - The duration of the credits in seconds. Default is 0 (no expiration).\n * @returns @see {@link NvmAPIResult} A promise that resolves to the result of the operation.\n * @throws PaymentsError if unable to mint expirable credits.\n *\n * @example\n * ```\n * const result = await payments.plans.mintPlanExpirable(\n * planId,\n * 1n,\n * '0x505384192Ba6a4D4b50EAB846ee67db3b9A93359',\n * 86_400n // 1 day in seconds\n * )\n * // {\n * // txHash: '0x8d29d5769e832a35e53f80cd4e8890d941c50a09c33dbd975533debc894f2535',\n * // success: true\n * // }\n * ```\n */\n public async mintPlanExpirable(\n planId: string,\n creditsAmount: bigint,\n creditsReceiver: Address,\n creditsDuration = 0n,\n ): Promise<NvmAPIResult> {\n const body = { planId, creditsAmount, creditsReceiver, creditsDuration }\n const options = this.getBackendHTTPOptions('POST', body)\n const url = new URL(API_URL_MINT_EXPIRABLE_PLAN, this.environment.backend)\n const response = await fetch(url, options)\n if (!response.ok) {\n throw PaymentsError.fromBackend(\n 'Unable to mint expirable credits',\n await safeParseJson(response),\n )\n }\n\n return response.json()\n }\n}\n"]}
|
package/dist/api/query-api.d.ts
CHANGED
|
@@ -33,6 +33,6 @@ export declare class AIQueryApi extends AbstractHTTPClient {
|
|
|
33
33
|
* @param reqOptions - The request options to use when querying the Agent/Service.
|
|
34
34
|
* @returns The result of query
|
|
35
35
|
*/
|
|
36
|
-
send(accessCredentials: AgentAccessCredentials, method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH', url: string, data?: any, reqOptions?: HTTPRequestOptions): Promise<import("axios").AxiosResponse<any, any, {}>>;
|
|
36
|
+
send(accessCredentials: AgentAccessCredentials, method: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH', url: string, data?: any, reqOptions?: HTTPRequestOptions): Promise<import("axios").AxiosResponse<any, any, {}, any>>;
|
|
37
37
|
}
|
|
38
38
|
//# sourceMappingURL=query-api.d.ts.map
|
package/dist/common/types.d.ts
CHANGED
|
@@ -213,7 +213,30 @@ export interface PlanBalance {
|
|
|
213
213
|
planName: string;
|
|
214
214
|
planType: string;
|
|
215
215
|
holderAddress: Address;
|
|
216
|
-
|
|
216
|
+
/**
|
|
217
|
+
* Credit balance as a DECIMAL STRING, e.g. `'950'` — not a `bigint`.
|
|
218
|
+
*
|
|
219
|
+
* ⚠️ It is a string because that is what the deserializer produces, not as a
|
|
220
|
+
* preference. `PlanBalance` is constructed nowhere in `src/`: it only ever
|
|
221
|
+
* arrives from `getPlanBalance`, which ends in a bare `return response.json()`,
|
|
222
|
+
* and JSON has no bigint. It had been declared `bigint` since 2025-05-26 while the API sent a
|
|
223
|
+
* quoted string, so `balance > 100n` threw `Cannot mix BigInt and other types`
|
|
224
|
+
* in code that typechecked clean, and `typeof balance === 'bigint'` silently
|
|
225
|
+
* took the wrong branch. This reaches sellers as public API — `PlanBalance` is
|
|
226
|
+
* on `req.paymentContext.agentRequest.balance`.
|
|
227
|
+
*
|
|
228
|
+
* The value can exceed `Number.MAX_SAFE_INTEGER`, so do NOT route it through
|
|
229
|
+
* `Number`. For arithmetic, convert explicitly:
|
|
230
|
+
*
|
|
231
|
+
* ```ts
|
|
232
|
+
* BigInt(ctx.agentRequest.balance.balance) > 100n
|
|
233
|
+
* ```
|
|
234
|
+
*
|
|
235
|
+
* The outbound direction already has its counterpart: `jsonReplacer`
|
|
236
|
+
* (`common/helper.ts`) narrows bigints to strings on request bodies. This is
|
|
237
|
+
* the inbound side of the same boundary.
|
|
238
|
+
*/
|
|
239
|
+
balance: string;
|
|
217
240
|
creditsContract: Address;
|
|
218
241
|
isSubscriber: boolean;
|
|
219
242
|
pricePerCredit: number;
|
|
@@ -254,6 +277,30 @@ export interface NvmAPIResult {
|
|
|
254
277
|
export interface APIOutputData {
|
|
255
278
|
[key: string]: any;
|
|
256
279
|
}
|
|
280
|
+
/** Status of a Stripe PaymentIntent. */
|
|
281
|
+
export type StripePaymentIntentStatus = 'requires_payment_method' | 'requires_confirmation' | 'requires_action' | 'processing' | 'requires_capture' | 'canceled' | 'succeeded';
|
|
282
|
+
/**
|
|
283
|
+
* The Stripe PaymentIntent `POST /api/v1/fiat/stripe/payment` creates for a fiat plan,
|
|
284
|
+
* returned by `PlansAPI.orderFiatPlan`. Confirm it client-side with Stripe.js and
|
|
285
|
+
* its `client_secret`. These fields are what callers can rely on; do not depend on
|
|
286
|
+
* any other field of the response.
|
|
287
|
+
*/
|
|
288
|
+
export interface StripePaymentIntent {
|
|
289
|
+
/** PaymentIntent id (`pi_…`) */
|
|
290
|
+
id: string;
|
|
291
|
+
/** Secret Stripe.js confirms the payment with. Pass it to Stripe.js only; never log or store it. */
|
|
292
|
+
client_secret: string | null;
|
|
293
|
+
/** PaymentIntent status */
|
|
294
|
+
status: StripePaymentIntentStatus;
|
|
295
|
+
/** Amount in the currency's smallest unit (e.g. cents) */
|
|
296
|
+
amount: number;
|
|
297
|
+
/** Three-letter ISO currency code, lowercase */
|
|
298
|
+
currency: string;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* @deprecated Not returned by any SDK method: `PlansAPI.orderFiatPlan` returns a
|
|
302
|
+
* {@link StripePaymentIntent}.
|
|
303
|
+
*/
|
|
257
304
|
export interface StripeCheckoutResult {
|
|
258
305
|
stripeCheckoutSessionId: string;
|
|
259
306
|
checkoutLink: string;
|
|
@@ -477,11 +524,12 @@ export type DelegationCurrency = 'usd' | 'eur' | 'usdc' | 'eurc';
|
|
|
477
524
|
*
|
|
478
525
|
* @remarks
|
|
479
526
|
* The inline create-on-the-fly fields (`providerPaymentMethodId`,
|
|
480
|
-
* `spendingLimitCents`, `durationSecs`, `currency`, `
|
|
481
|
-
* `
|
|
527
|
+
* `spendingLimitCents`, `durationSecs`, `currency`, `maxTransactions`,
|
|
528
|
+
* `cardId`) are individually deprecated. Calling
|
|
482
529
|
* {@link X402TokenAPI.getX402AccessToken} with a `delegationConfig` that lacks
|
|
483
|
-
* `delegationId` but carries
|
|
484
|
-
*
|
|
530
|
+
* `delegationId` but carries `cardId`, `providerPaymentMethodId`,
|
|
531
|
+
* `spendingLimitCents` or `durationSecs` emits a runtime deprecation warning;
|
|
532
|
+
* create the delegation first and pass only `delegationId` (optionally
|
|
485
533
|
* `apiKeyId`) here. The interface itself is NOT deprecated — the
|
|
486
534
|
* `{ delegationId }` reuse path is the supported way to configure a token request.
|
|
487
535
|
*/
|
|
@@ -514,8 +562,9 @@ export interface DelegationConfig {
|
|
|
514
562
|
*/
|
|
515
563
|
currency?: DelegationCurrency;
|
|
516
564
|
/**
|
|
517
|
-
* Merchant account ID (Stripe Connect
|
|
518
|
-
* @deprecated
|
|
565
|
+
* Merchant account ID (Stripe Connect acct_…).
|
|
566
|
+
* @deprecated Ignored by the backend (the seller's Connect account is
|
|
567
|
+
* resolved at settle time); drop it.
|
|
519
568
|
*/
|
|
520
569
|
merchantAccountId?: string;
|
|
521
570
|
/**
|
|
@@ -524,23 +573,40 @@ export interface DelegationConfig {
|
|
|
524
573
|
*/
|
|
525
574
|
maxTransactions?: number;
|
|
526
575
|
/**
|
|
527
|
-
*
|
|
528
|
-
*
|
|
529
|
-
*
|
|
530
|
-
* require it server-side.)
|
|
576
|
+
* Ignored by the backend: an inline-created delegation is always
|
|
577
|
+
* plan-agnostic. To bind a delegation to one plan, create it with
|
|
578
|
+
* `createDelegation({ planId })` and pass its `delegationId`.
|
|
531
579
|
* @deprecated Inline create-on-the-fly. Create the delegation first and pass `delegationId`.
|
|
532
580
|
*/
|
|
533
581
|
planId?: string;
|
|
534
582
|
/** NVM API Key ID to scope the delegation to. Active (non-deprecated). */
|
|
535
583
|
apiKeyId?: string;
|
|
536
584
|
}
|
|
585
|
+
/**
|
|
586
|
+
* Card-delegation providers exposed by the SDK. Use this when you want to
|
|
587
|
+
* restrict to card-shape entries only (e.g., filtering the heterogeneous
|
|
588
|
+
* list returned by `DelegationAPI.listPaymentMethods`).
|
|
589
|
+
*/
|
|
590
|
+
export type CardProvider = 'stripe' | 'braintree' | 'visa';
|
|
591
|
+
/**
|
|
592
|
+
* All delegation providers, including the crypto path. Matches the
|
|
593
|
+
* server-side union and types {@link CreateDelegationPayload.provider}.
|
|
594
|
+
* `vgs` = a card enrolled through the credit/debit card form: vaulted at VGS
|
|
595
|
+
* and charged through the PSP the paid plan selects. (Visa Agentic cards are
|
|
596
|
+
* `visa`.)
|
|
597
|
+
*/
|
|
598
|
+
export type DelegationProvider = CardProvider | 'vgs' | 'erc4337';
|
|
537
599
|
/**
|
|
538
600
|
* Payload for creating a new delegation via POST /api/v1/delegation/create.
|
|
539
601
|
*/
|
|
540
602
|
export interface CreateDelegationPayload {
|
|
541
|
-
/**
|
|
542
|
-
|
|
543
|
-
|
|
603
|
+
/**
|
|
604
|
+
* Delegation provider: 'vgs' for a card enrolled through the credit/debit card form,
|
|
605
|
+
* 'stripe' | 'visa' for the other card rails, 'erc4337' for crypto. 'braintree' is
|
|
606
|
+
* refused at create.
|
|
607
|
+
*/
|
|
608
|
+
provider: DelegationProvider;
|
|
609
|
+
/** Payment method ID from the provider (the card's 'CRD…' id for 'vgs', Stripe 'pm_...', or Visa Agentic token id). Required for card providers. */
|
|
544
610
|
providerPaymentMethodId?: string;
|
|
545
611
|
/** Maximum spending limit in cents */
|
|
546
612
|
spendingLimitCents: number;
|
|
@@ -549,12 +615,16 @@ export interface CreateDelegationPayload {
|
|
|
549
615
|
/** Currency code (e.g., 'usd' for card providers, 'usdc' for erc4337). Required by the backend — no silent default. */
|
|
550
616
|
currency: DelegationCurrency;
|
|
551
617
|
/**
|
|
552
|
-
* Plan ID to scope the delegation to. Optional
|
|
553
|
-
* plan-agnostic by default; supplying `planId` opts
|
|
554
|
-
*
|
|
618
|
+
* Plan ID to scope the delegation to. Optional for every provider, and
|
|
619
|
+
* additive: delegations are plan-agnostic by default; supplying `planId` opts
|
|
620
|
+
* into a plan-bound delegation.
|
|
555
621
|
*/
|
|
556
622
|
planId?: string;
|
|
557
|
-
/**
|
|
623
|
+
/**
|
|
624
|
+
* Merchant account ID (Stripe Connect acct_…).
|
|
625
|
+
* @deprecated Ignored by the backend: the seller's Connect account is
|
|
626
|
+
* resolved at settle time, never taken from the caller.
|
|
627
|
+
*/
|
|
558
628
|
merchantAccountId?: string;
|
|
559
629
|
/** Maximum number of transactions allowed */
|
|
560
630
|
maxTransactions?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/common/types.ts"],"names":[],"mappings":"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"}
|