@paygentic/sdk 0.10.2 → 0.10.4

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.
Files changed (129) hide show
  1. package/README.md +19 -62
  2. package/dist/commonjs/funcs/meGetMe.d.ts +18 -0
  3. package/dist/commonjs/funcs/meGetMe.d.ts.map +1 -0
  4. package/dist/commonjs/funcs/meGetMe.js +108 -0
  5. package/dist/commonjs/funcs/meGetMe.js.map +1 -0
  6. package/dist/commonjs/lib/config.d.ts +2 -2
  7. package/dist/commonjs/lib/config.js +2 -2
  8. package/dist/commonjs/models/costreportresponse.d.ts +14 -2
  9. package/dist/commonjs/models/costreportresponse.d.ts.map +1 -1
  10. package/dist/commonjs/models/costreportresponse.js.map +1 -1
  11. package/dist/commonjs/models/errors/error.d.ts +6 -0
  12. package/dist/commonjs/models/errors/error.d.ts.map +1 -1
  13. package/dist/commonjs/models/errors/error.js +3 -0
  14. package/dist/commonjs/models/errors/error.js.map +1 -1
  15. package/dist/commonjs/models/index.d.ts +3 -0
  16. package/dist/commonjs/models/index.d.ts.map +1 -1
  17. package/dist/commonjs/models/index.js +3 -0
  18. package/dist/commonjs/models/index.js.map +1 -1
  19. package/dist/commonjs/models/me.d.ts +34 -0
  20. package/dist/commonjs/models/me.d.ts.map +1 -0
  21. package/dist/commonjs/models/me.js +63 -0
  22. package/dist/commonjs/models/me.js.map +1 -0
  23. package/dist/commonjs/models/mecredential.d.ts +31 -0
  24. package/dist/commonjs/models/mecredential.d.ts.map +1 -0
  25. package/dist/commonjs/models/mecredential.js +60 -0
  26. package/dist/commonjs/models/mecredential.js.map +1 -0
  27. package/dist/commonjs/models/operations/getcostreport.d.ts +2 -2
  28. package/dist/commonjs/models/operations/getcostsummary.d.ts +2 -2
  29. package/dist/commonjs/models/operations/getprofitability.d.ts +2 -2
  30. package/dist/commonjs/models/operations/getrevenue.d.ts +2 -2
  31. package/dist/commonjs/models/operations/listentitlements.d.ts +16 -0
  32. package/dist/commonjs/models/operations/listentitlements.d.ts.map +1 -1
  33. package/dist/commonjs/models/operations/listentitlements.js +11 -1
  34. package/dist/commonjs/models/operations/listentitlements.js.map +1 -1
  35. package/dist/commonjs/models/outstandingblock.d.ts +5 -1
  36. package/dist/commonjs/models/outstandingblock.d.ts.map +1 -1
  37. package/dist/commonjs/models/outstandingblock.js +1 -0
  38. package/dist/commonjs/models/outstandingblock.js.map +1 -1
  39. package/dist/commonjs/models/permission.d.ts +113 -0
  40. package/dist/commonjs/models/permission.d.ts.map +1 -0
  41. package/dist/commonjs/models/permission.js +148 -0
  42. package/dist/commonjs/models/permission.js.map +1 -0
  43. package/dist/commonjs/models/profitabilitysummaryresponse.d.ts +4 -4
  44. package/dist/commonjs/models/revenueaccountrow.d.ts +1 -1
  45. package/dist/commonjs/models/revenueaccounttotal.d.ts +1 -1
  46. package/dist/commonjs/models/revenuesummaryresponse.d.ts +2 -2
  47. package/dist/commonjs/sdk/me.d.ts +12 -0
  48. package/dist/commonjs/sdk/me.d.ts.map +1 -0
  49. package/dist/commonjs/sdk/me.js +22 -0
  50. package/dist/commonjs/sdk/me.js.map +1 -0
  51. package/dist/commonjs/sdk/sdk.d.ts +3 -0
  52. package/dist/commonjs/sdk/sdk.d.ts.map +1 -1
  53. package/dist/commonjs/sdk/sdk.js +4 -0
  54. package/dist/commonjs/sdk/sdk.js.map +1 -1
  55. package/dist/esm/funcs/meGetMe.d.ts +18 -0
  56. package/dist/esm/funcs/meGetMe.d.ts.map +1 -0
  57. package/dist/esm/funcs/meGetMe.js +72 -0
  58. package/dist/esm/funcs/meGetMe.js.map +1 -0
  59. package/dist/esm/lib/config.d.ts +2 -2
  60. package/dist/esm/lib/config.js +2 -2
  61. package/dist/esm/models/costreportresponse.d.ts +14 -2
  62. package/dist/esm/models/costreportresponse.d.ts.map +1 -1
  63. package/dist/esm/models/costreportresponse.js.map +1 -1
  64. package/dist/esm/models/errors/error.d.ts +6 -0
  65. package/dist/esm/models/errors/error.d.ts.map +1 -1
  66. package/dist/esm/models/errors/error.js +3 -0
  67. package/dist/esm/models/errors/error.js.map +1 -1
  68. package/dist/esm/models/index.d.ts +3 -0
  69. package/dist/esm/models/index.d.ts.map +1 -1
  70. package/dist/esm/models/index.js +3 -0
  71. package/dist/esm/models/index.js.map +1 -1
  72. package/dist/esm/models/me.d.ts +34 -0
  73. package/dist/esm/models/me.d.ts.map +1 -0
  74. package/dist/esm/models/me.js +26 -0
  75. package/dist/esm/models/me.js.map +1 -0
  76. package/dist/esm/models/mecredential.d.ts +31 -0
  77. package/dist/esm/models/mecredential.d.ts.map +1 -0
  78. package/dist/esm/models/mecredential.js +23 -0
  79. package/dist/esm/models/mecredential.js.map +1 -0
  80. package/dist/esm/models/operations/getcostreport.d.ts +2 -2
  81. package/dist/esm/models/operations/getcostsummary.d.ts +2 -2
  82. package/dist/esm/models/operations/getprofitability.d.ts +2 -2
  83. package/dist/esm/models/operations/getrevenue.d.ts +2 -2
  84. package/dist/esm/models/operations/listentitlements.d.ts +16 -0
  85. package/dist/esm/models/operations/listentitlements.d.ts.map +1 -1
  86. package/dist/esm/models/operations/listentitlements.js +9 -0
  87. package/dist/esm/models/operations/listentitlements.js.map +1 -1
  88. package/dist/esm/models/outstandingblock.d.ts +5 -1
  89. package/dist/esm/models/outstandingblock.d.ts.map +1 -1
  90. package/dist/esm/models/outstandingblock.js +1 -0
  91. package/dist/esm/models/outstandingblock.js.map +1 -1
  92. package/dist/esm/models/permission.d.ts +113 -0
  93. package/dist/esm/models/permission.d.ts.map +1 -0
  94. package/dist/esm/models/permission.js +112 -0
  95. package/dist/esm/models/permission.js.map +1 -0
  96. package/dist/esm/models/profitabilitysummaryresponse.d.ts +4 -4
  97. package/dist/esm/models/revenueaccountrow.d.ts +1 -1
  98. package/dist/esm/models/revenueaccounttotal.d.ts +1 -1
  99. package/dist/esm/models/revenuesummaryresponse.d.ts +2 -2
  100. package/dist/esm/sdk/me.d.ts +12 -0
  101. package/dist/esm/sdk/me.d.ts.map +1 -0
  102. package/dist/esm/sdk/me.js +18 -0
  103. package/dist/esm/sdk/me.js.map +1 -0
  104. package/dist/esm/sdk/sdk.d.ts +3 -0
  105. package/dist/esm/sdk/sdk.d.ts.map +1 -1
  106. package/dist/esm/sdk/sdk.js +4 -0
  107. package/dist/esm/sdk/sdk.js.map +1 -1
  108. package/jsr.json +1 -1
  109. package/package.json +1 -1
  110. package/src/funcs/meGetMe.ts +151 -0
  111. package/src/lib/config.ts +2 -2
  112. package/src/models/costreportresponse.ts +14 -2
  113. package/src/models/errors/error.ts +6 -0
  114. package/src/models/index.ts +3 -0
  115. package/src/models/me.ts +60 -0
  116. package/src/models/mecredential.ts +58 -0
  117. package/src/models/operations/getcostreport.ts +2 -2
  118. package/src/models/operations/getcostsummary.ts +2 -2
  119. package/src/models/operations/getprofitability.ts +2 -2
  120. package/src/models/operations/getrevenue.ts +2 -2
  121. package/src/models/operations/listentitlements.ts +33 -0
  122. package/src/models/outstandingblock.ts +6 -1
  123. package/src/models/permission.ts +119 -0
  124. package/src/models/profitabilitysummaryresponse.ts +4 -4
  125. package/src/models/revenueaccountrow.ts +1 -1
  126. package/src/models/revenueaccounttotal.ts +1 -1
  127. package/src/models/revenuesummaryresponse.ts +2 -2
  128. package/src/sdk/me.ts +25 -0
  129. package/src/sdk/sdk.ts +6 -0
@@ -0,0 +1,119 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import * as z from "zod/v3";
6
+ import { ClosedEnum } from "../types/enums.js";
7
+
8
+ /**
9
+ * A permission of the catalog: a resource read or write, or a sensitive action.
10
+ */
11
+ export const Permission = {
12
+ OrganizationRead: "organization:read",
13
+ MembersRead: "members:read",
14
+ ProfileRead: "profile:read",
15
+ ApiKeysRead: "apiKeys:read",
16
+ MerchantsRead: "merchants:read",
17
+ ConsumersRead: "consumers:read",
18
+ CustomersRead: "customers:read",
19
+ PlansRead: "plans:read",
20
+ PricesRead: "prices:read",
21
+ ProductsRead: "products:read",
22
+ FeaturesRead: "features:read",
23
+ FeesRead: "fees:read",
24
+ BillableMetricsRead: "billableMetrics:read",
25
+ ItemsRead: "items:read",
26
+ PricingUnitsRead: "pricingUnits:read",
27
+ SubscriptionsRead: "subscriptions:read",
28
+ SubscriptionAdjustmentsRead: "subscriptionAdjustments:read",
29
+ DiscountsRead: "discounts:read",
30
+ GrantsRead: "grants:read",
31
+ EntitlementsRead: "entitlements:read",
32
+ CreditPoolsRead: "creditPools:read",
33
+ OrdersRead: "orders:read",
34
+ BillingSchedulesRead: "billingSchedules:read",
35
+ InvoicesRead: "invoices:read",
36
+ PaymentsRead: "payments:read",
37
+ PaymentSessionsRead: "paymentSessions:read",
38
+ PortalSessionsRead: "portalSessions:read",
39
+ PlatformUsersRead: "platformUsers:read",
40
+ PlatformAdminRead: "platformAdmin:read",
41
+ OrganizationCreationRead: "organizationCreation:read",
42
+ ComplianceRead: "compliance:read",
43
+ TaxSettingsRead: "taxSettings:read",
44
+ CostsRead: "costs:read",
45
+ PaymentAccountsRead: "paymentAccounts:read",
46
+ PayoutsRead: "payouts:read",
47
+ ExternalAccountsRead: "externalAccounts:read",
48
+ ExternalReferencesRead: "externalReferences:read",
49
+ MerchantIntegrationsRead: "merchantIntegrations:read",
50
+ WebhooksRead: "webhooks:read",
51
+ TestClocksRead: "testClocks:read",
52
+ ApprovalsRead: "approvals:read",
53
+ SourcesRead: "sources:read",
54
+ RevenueRead: "revenue:read",
55
+ OrganizationWrite: "organization:write",
56
+ MembersWrite: "members:write",
57
+ ProfileWrite: "profile:write",
58
+ ApiKeysWrite: "apiKeys:write",
59
+ MerchantsWrite: "merchants:write",
60
+ ConsumersWrite: "consumers:write",
61
+ CustomersWrite: "customers:write",
62
+ PlansWrite: "plans:write",
63
+ PricesWrite: "prices:write",
64
+ ProductsWrite: "products:write",
65
+ FeaturesWrite: "features:write",
66
+ FeesWrite: "fees:write",
67
+ BillableMetricsWrite: "billableMetrics:write",
68
+ ItemsWrite: "items:write",
69
+ PricingUnitsWrite: "pricingUnits:write",
70
+ SubscriptionsWrite: "subscriptions:write",
71
+ SubscriptionAdjustmentsWrite: "subscriptionAdjustments:write",
72
+ DiscountsWrite: "discounts:write",
73
+ GrantsWrite: "grants:write",
74
+ EntitlementsWrite: "entitlements:write",
75
+ CreditPoolsWrite: "creditPools:write",
76
+ OrdersWrite: "orders:write",
77
+ BillingSchedulesWrite: "billingSchedules:write",
78
+ InvoicesWrite: "invoices:write",
79
+ PaymentsWrite: "payments:write",
80
+ PaymentSessionsWrite: "paymentSessions:write",
81
+ PortalSessionsWrite: "portalSessions:write",
82
+ PlatformUsersWrite: "platformUsers:write",
83
+ PlatformAdminWrite: "platformAdmin:write",
84
+ OrganizationCreationWrite: "organizationCreation:write",
85
+ ComplianceWrite: "compliance:write",
86
+ TaxSettingsWrite: "taxSettings:write",
87
+ CostsWrite: "costs:write",
88
+ PaymentAccountsWrite: "paymentAccounts:write",
89
+ PayoutsWrite: "payouts:write",
90
+ ExternalAccountsWrite: "externalAccounts:write",
91
+ ExternalReferencesWrite: "externalReferences:write",
92
+ MerchantIntegrationsWrite: "merchantIntegrations:write",
93
+ WebhooksWrite: "webhooks:write",
94
+ TestClocksWrite: "testClocks:write",
95
+ ApprovalsWrite: "approvals:write",
96
+ SourcesWrite: "sources:write",
97
+ EventsWrite: "events:write",
98
+ InvoicesIssue: "invoices:issue",
99
+ InvoicesVoid: "invoices:void",
100
+ PaymentsRefund: "payments:refund",
101
+ OrganizationDelete: "organization:delete",
102
+ OwnershipTransfer: "ownership:transfer",
103
+ SubscriptionsTerminate: "subscriptions:terminate",
104
+ SubscriptionsTerminateWithReason: "subscriptions:terminateWithReason",
105
+ SubscriptionsReconcile: "subscriptions:reconcile",
106
+ SubscriptionsUpdate: "subscriptions:update",
107
+ SubscriptionsDelete: "subscriptions:delete",
108
+ SubscriptionsTaxExempt: "subscriptions:taxExempt",
109
+ SubscriptionsAutoApprove: "subscriptions:autoApprove",
110
+ OrganizationResetData: "organization:resetData",
111
+ } as const;
112
+ /**
113
+ * A permission of the catalog: a resource read or write, or a sensitive action.
114
+ */
115
+ export type Permission = ClosedEnum<typeof Permission>;
116
+
117
+ /** @internal */
118
+ export const Permission$inboundSchema: z.ZodNativeEnum<typeof Permission> = z
119
+ .nativeEnum(Permission);
@@ -12,7 +12,7 @@ import {
12
12
  } from "./profitabilityrow.js";
13
13
 
14
14
  /**
15
- * Where the caller's revenue actually lies in time. Scoped by the same filters as the request (merchant, and where given customer, subscription and currency), so it is not an account-wide statement. Present only when the selected range returned nothing. An object carries the bounds of the real revenue; null means no revenue under these filters at any time; an absent field means the extent was not resolved, because the result was not empty or because the lookup failed. An absent field must never be read as an absence. The bounds may span more than this endpoint's maximum queryable range, so clamp before re-querying.
15
+ * Where the caller's revenue actually lies in time. Scoped by the same filters as the request (merchant, and where given customer, subscription and currency), so it is not an account-wide statement. Present only when the selected range returned nothing. An object carries the bounds of the real revenue; null means no revenue under these filters at any time; an absent field means the extent was not resolved, because the result was not empty or because the lookup failed. An absent field must never be read as an absence. The bounds are instants that exist and both are included, so a window that holds `to` ends after it. The bounds may span more than this endpoint's maximum queryable range, so clamp before re-querying.
16
16
  */
17
17
  export type ProfitabilitySummaryResponseRevenueRange = {
18
18
  /**
@@ -26,7 +26,7 @@ export type ProfitabilitySummaryResponseRevenueRange = {
26
26
  };
27
27
 
28
28
  /**
29
- * Where the caller's cost data actually lies in time. Present only when the selected range returned no cost. An object carries the bounds of the real cost events; null means the caller has no cost event at any time; an absent field means the extent was not resolved, because the result was not empty, because the lookup failed, or because the metering service does not serve the bounds method. An absent field must never be read as an absence.
29
+ * Where the caller's cost data actually lies in time. Present only when the selected range returned no cost. An object carries the bounds of the real cost events; null means the caller has no cost event at any time; an absent field means the extent was not resolved, because the result was not empty, because the lookup failed, or because the metering service does not serve the bounds method. An absent field must never be read as an absence. The bounds are instants that exist and both are included, so a window that holds `to` ends after it.
30
30
  */
31
31
  export type ProfitabilitySummaryResponseCostRange = {
32
32
  /**
@@ -73,11 +73,11 @@ export type ProfitabilitySummaryResponse = {
73
73
  */
74
74
  warnings?: Array<string> | undefined;
75
75
  /**
76
- * Where the caller's revenue actually lies in time. Scoped by the same filters as the request (merchant, and where given customer, subscription and currency), so it is not an account-wide statement. Present only when the selected range returned nothing. An object carries the bounds of the real revenue; null means no revenue under these filters at any time; an absent field means the extent was not resolved, because the result was not empty or because the lookup failed. An absent field must never be read as an absence. The bounds may span more than this endpoint's maximum queryable range, so clamp before re-querying.
76
+ * Where the caller's revenue actually lies in time. Scoped by the same filters as the request (merchant, and where given customer, subscription and currency), so it is not an account-wide statement. Present only when the selected range returned nothing. An object carries the bounds of the real revenue; null means no revenue under these filters at any time; an absent field means the extent was not resolved, because the result was not empty or because the lookup failed. An absent field must never be read as an absence. The bounds are instants that exist and both are included, so a window that holds `to` ends after it. The bounds may span more than this endpoint's maximum queryable range, so clamp before re-querying.
77
77
  */
78
78
  revenueRange?: ProfitabilitySummaryResponseRevenueRange | null | undefined;
79
79
  /**
80
- * Where the caller's cost data actually lies in time. Present only when the selected range returned no cost. An object carries the bounds of the real cost events; null means the caller has no cost event at any time; an absent field means the extent was not resolved, because the result was not empty, because the lookup failed, or because the metering service does not serve the bounds method. An absent field must never be read as an absence.
80
+ * Where the caller's cost data actually lies in time. Present only when the selected range returned no cost. An object carries the bounds of the real cost events; null means the caller has no cost event at any time; an absent field means the extent was not resolved, because the result was not empty, because the lookup failed, or because the metering service does not serve the bounds method. An absent field must never be read as an absence. The bounds are instants that exist and both are included, so a window that holds `to` ends after it.
81
81
  */
82
82
  costRange?: ProfitabilitySummaryResponseCostRange | null | undefined;
83
83
  };
@@ -25,7 +25,7 @@ export type RevenueAccountRow = {
25
25
  */
26
26
  currency: string;
27
27
  /**
28
- * What is owed, gross of tax, from any date. `awaitingPayment` and `paymentFailed` add up to it, in count and amount.
28
+ * What is owed, gross of tax, from any date. `awaitingPayment` and `paymentFailed` add up to it, in count and amount. `overdue` is a part of `awaitingPayment`.
29
29
  */
30
30
  outstanding: OutstandingBlock;
31
31
  };
@@ -17,7 +17,7 @@ export type RevenueAccountTotal = {
17
17
  */
18
18
  currency: string;
19
19
  /**
20
- * What is owed, gross of tax, from any date. `awaitingPayment` and `paymentFailed` add up to it, in count and amount.
20
+ * What is owed, gross of tax, from any date. `awaitingPayment` and `paymentFailed` add up to it, in count and amount. `overdue` is a part of `awaitingPayment`.
21
21
  */
22
22
  outstanding: OutstandingBlock;
23
23
  };
@@ -28,7 +28,7 @@ import {
28
28
  } from "./revenuetrendbucket.js";
29
29
 
30
30
  /**
31
- * Where the caller's revenue actually lies in time. Scoped by the same filters as the request (merchant, and where given customer, subscription and currency), so it is not an account-wide statement. Present only when the selected range returned nothing. An object carries the bounds of the real revenue; null means no revenue under these filters at any time; an absent field means the extent was not resolved, because the result was not empty or because the lookup failed. An absent field must never be read as an absence. The bounds may span more than this endpoint's maximum queryable range, so clamp before re-querying.
31
+ * Where the caller's revenue actually lies in time. Scoped by the same filters as the request (merchant, and where given customer, subscription and currency), so it is not an account-wide statement. Present only when the selected range returned nothing. An object carries the bounds of the real revenue; null means no revenue under these filters at any time; an absent field means the extent was not resolved, because the result was not empty or because the lookup failed. An absent field must never be read as an absence. The bounds are instants that exist and both are included, so a window that holds `to` ends after it. The bounds may span more than this endpoint's maximum queryable range, so clamp before re-querying.
32
32
  */
33
33
  export type RevenueSummaryResponseRevenueRange = {
34
34
  /**
@@ -85,7 +85,7 @@ export type RevenueSummaryResponse = {
85
85
  */
86
86
  currencyBreakdown?: Array<CurrencyBreakdownEntry> | undefined;
87
87
  /**
88
- * Where the caller's revenue actually lies in time. Scoped by the same filters as the request (merchant, and where given customer, subscription and currency), so it is not an account-wide statement. Present only when the selected range returned nothing. An object carries the bounds of the real revenue; null means no revenue under these filters at any time; an absent field means the extent was not resolved, because the result was not empty or because the lookup failed. An absent field must never be read as an absence. The bounds may span more than this endpoint's maximum queryable range, so clamp before re-querying.
88
+ * Where the caller's revenue actually lies in time. Scoped by the same filters as the request (merchant, and where given customer, subscription and currency), so it is not an account-wide statement. Present only when the selected range returned nothing. An object carries the bounds of the real revenue; null means no revenue under these filters at any time; an absent field means the extent was not resolved, because the result was not empty or because the lookup failed. An absent field must never be read as an absence. The bounds are instants that exist and both are included, so a window that holds `to` ends after it. The bounds may span more than this endpoint's maximum queryable range, so clamp before re-querying.
89
89
  */
90
90
  revenueRange?: RevenueSummaryResponseRevenueRange | null | undefined;
91
91
  };
package/src/sdk/me.ts ADDED
@@ -0,0 +1,25 @@
1
+ /*
2
+ * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
3
+ */
4
+
5
+ import { meGetMe } from "../funcs/meGetMe.js";
6
+ import { ClientSDK, RequestOptions } from "../lib/sdks.js";
7
+ import * as models from "../models/index.js";
8
+ import { unwrapAsync } from "../types/fp.js";
9
+
10
+ export class Me extends ClientSDK {
11
+ /**
12
+ * Get the caller
13
+ *
14
+ * @remarks
15
+ * Returns the caller's identity in its active organization, its roles, and the permissions that its credential holds there. The permissions are the effective set for the credential of the call: for a session or an API key, those of the principal; for an OAuth token, those of the principal narrowed to the scopes of the token.
16
+ */
17
+ async getMe(
18
+ options?: RequestOptions,
19
+ ): Promise<models.Me> {
20
+ return unwrapAsync(meGetMe(
21
+ this,
22
+ options,
23
+ ));
24
+ }
25
+ }
package/src/sdk/sdk.ts CHANGED
@@ -15,6 +15,7 @@ import { Features } from "./features.js";
15
15
  import { Fees } from "./fees.js";
16
16
  import { InvoicesV2 } from "./invoicesv2.js";
17
17
  import { Items } from "./items.js";
18
+ import { Me } from "./me.js";
18
19
  import { MerchantIntegrations } from "./merchantintegrations.js";
19
20
  import { Merchants } from "./merchants.js";
20
21
  import { Orders } from "./orders.js";
@@ -33,6 +34,11 @@ import { Users } from "./users.js";
33
34
  import { Webhooks } from "./webhooks.js";
34
35
 
35
36
  export class Paygentic extends ClientSDK {
37
+ private _me?: Me;
38
+ get me(): Me {
39
+ return (this._me ??= new Me(this._options));
40
+ }
41
+
36
42
  private _billableMetrics?: BillableMetrics;
37
43
  get billableMetrics(): BillableMetrics {
38
44
  return (this._billableMetrics ??= new BillableMetrics(this._options));