@openrails/billing-ui 0.241.0 → 0.243.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.
Files changed (265) hide show
  1. package/CHANGELOG.md +27 -11
  2. package/README.md +41 -8
  3. package/dist/admin/billing-admin.d.ts +3 -0
  4. package/dist/admin/components/app-sidebar.d.ts +1 -0
  5. package/dist/admin/components/confirm.d.ts +4 -0
  6. package/dist/admin/components/cursor-pager.d.ts +8 -0
  7. package/dist/admin/components/data-table.d.ts +14 -0
  8. package/dist/admin/components/fact-card.d.ts +5 -0
  9. package/dist/admin/components/form-field-errors.d.ts +3 -0
  10. package/dist/admin/components/linked-table-row.d.ts +5 -0
  11. package/dist/admin/components/logo.d.ts +3 -0
  12. package/dist/admin/components/no-access.d.ts +3 -0
  13. package/dist/admin/components/no-merchants.d.ts +1 -0
  14. package/dist/admin/components/notification-bell.d.ts +2 -0
  15. package/dist/admin/components/route-error.d.ts +3 -0
  16. package/dist/admin/components/site-header.d.ts +9 -0
  17. package/dist/admin/components/status-badge.d.ts +3 -0
  18. package/dist/admin/components/typed-confirm-dialog.d.ts +11 -0
  19. package/dist/admin/components/ui/alert-dialog.d.ts +18 -0
  20. package/dist/admin/components/ui/avatar.d.ts +11 -0
  21. package/dist/admin/components/ui/badge.d.ts +7 -0
  22. package/dist/admin/components/ui/breadcrumb.d.ts +10 -0
  23. package/dist/admin/components/ui/button.d.ts +8 -0
  24. package/dist/admin/components/ui/card.d.ts +11 -0
  25. package/dist/admin/components/ui/chart.d.ts +44 -0
  26. package/dist/admin/components/ui/dialog.d.ts +17 -0
  27. package/dist/admin/components/ui/dropdown-menu.d.ts +29 -0
  28. package/dist/admin/components/ui/input.d.ts +3 -0
  29. package/dist/admin/components/ui/label.d.ts +3 -0
  30. package/dist/admin/components/ui/select.d.ts +15 -0
  31. package/dist/admin/components/ui/separator.d.ts +3 -0
  32. package/dist/admin/components/ui/sheet.d.ts +14 -0
  33. package/dist/admin/components/ui/sidebar.d.ts +63 -0
  34. package/dist/admin/components/ui/skeleton.d.ts +2 -0
  35. package/dist/admin/components/ui/sonner.d.ts +3 -0
  36. package/dist/admin/components/ui/switch.d.ts +5 -0
  37. package/dist/admin/components/ui/table.d.ts +10 -0
  38. package/dist/admin/components/ui/tabs.d.ts +10 -0
  39. package/dist/admin/components/ui/textarea.d.ts +3 -0
  40. package/dist/admin/components/ui/tooltip.d.ts +6 -0
  41. package/dist/admin/context.d.ts +1193 -0
  42. package/dist/admin/hooks/use-mobile.d.ts +1 -0
  43. package/dist/admin/index.d.ts +5 -0
  44. package/dist/admin/layouts/app-layout.d.ts +4 -0
  45. package/dist/admin/lib/api/client.d.ts +64 -0
  46. package/dist/admin/lib/api/copilot.d.ts +6 -0
  47. package/dist/admin/lib/api/credit-endpoints.d.ts +8 -0
  48. package/dist/admin/lib/api/credit-types.d.ts +9 -0
  49. package/dist/admin/lib/api/endpoints.d.ts +133 -0
  50. package/dist/admin/lib/api/index.d.ts +89 -0
  51. package/dist/admin/lib/api/invoice-profile-endpoints.d.ts +6 -0
  52. package/dist/admin/lib/api/metrics.d.ts +68 -0
  53. package/dist/admin/lib/api/order-endpoints.d.ts +21 -0
  54. package/dist/admin/lib/api/types.d.ts +122 -0
  55. package/dist/admin/lib/auth.d.ts +6 -0
  56. package/dist/admin/lib/capabilities.d.ts +13 -0
  57. package/dist/admin/lib/chunk-error.d.ts +1 -0
  58. package/dist/admin/lib/confirm.d.ts +11 -0
  59. package/dist/admin/lib/credit-queries.d.ts +23 -0
  60. package/dist/admin/lib/csv.d.ts +3 -0
  61. package/dist/admin/lib/cursor-pages.d.ts +13 -0
  62. package/dist/admin/lib/dialog-width.d.ts +6 -0
  63. package/dist/admin/lib/dom.d.ts +1 -0
  64. package/dist/admin/lib/duration.d.ts +3 -0
  65. package/dist/admin/lib/format.d.ts +23 -0
  66. package/dist/admin/lib/mount.d.ts +6 -0
  67. package/dist/admin/lib/mutations.d.ts +125 -0
  68. package/dist/admin/lib/order-queries.d.ts +29 -0
  69. package/dist/admin/lib/queries.d.ts +369 -0
  70. package/dist/admin/lib/query-client.d.ts +3 -0
  71. package/dist/admin/lib/toast.d.ts +10 -0
  72. package/dist/admin/lib/utils.d.ts +2 -0
  73. package/dist/admin/messages.d.ts +670 -0
  74. package/dist/admin/navigation.d.ts +14 -0
  75. package/dist/admin/pages/catalog/application-dialog.d.ts +2 -0
  76. package/dist/admin/pages/catalog/copilot-panel.d.ts +4 -0
  77. package/dist/admin/pages/catalog/index.d.ts +4 -0
  78. package/dist/admin/pages/catalog/meter-form.d.ts +6 -0
  79. package/dist/admin/pages/catalog/metering-model.d.ts +67 -0
  80. package/dist/admin/pages/catalog/metering.d.ts +3 -0
  81. package/dist/admin/pages/catalog/price-detail.d.ts +2 -0
  82. package/dist/admin/pages/catalog/price-format.d.ts +3 -0
  83. package/dist/admin/pages/catalog/price-wizard-logic.d.ts +20 -0
  84. package/dist/admin/pages/catalog/price-wizard.d.ts +10 -0
  85. package/dist/admin/pages/catalog/psp-links.d.ts +10 -0
  86. package/dist/admin/pages/catalog/rate-card-editor.d.ts +10 -0
  87. package/dist/admin/pages/customers/credit-form.d.ts +14 -0
  88. package/dist/admin/pages/customers/credits.d.ts +5 -0
  89. package/dist/admin/pages/customers/default-card-badges.d.ts +3 -0
  90. package/dist/admin/pages/customers/detail.d.ts +5 -0
  91. package/dist/admin/pages/customers/grant-duration.d.ts +32 -0
  92. package/dist/admin/pages/customers/index.d.ts +2 -0
  93. package/dist/admin/pages/customers/invoice-profile-model.d.ts +18 -0
  94. package/dist/admin/pages/customers/invoice-profile.d.ts +9 -0
  95. package/dist/admin/pages/dashboard/index.d.ts +2 -0
  96. package/dist/admin/pages/dashboard/lib.d.ts +48 -0
  97. package/dist/admin/pages/dashboard/range-picker.d.ts +1 -0
  98. package/dist/admin/pages/dashboard/range.d.ts +34 -0
  99. package/dist/admin/pages/dashboard/reports-model.d.ts +29 -0
  100. package/dist/admin/pages/dashboard/reports.d.ts +2 -0
  101. package/dist/admin/pages/dashboard/use-range.d.ts +5 -0
  102. package/dist/admin/pages/dashboard/widget-editor.d.ts +8 -0
  103. package/dist/admin/pages/dashboard/widget-tile.d.ts +9 -0
  104. package/dist/admin/pages/dashboard/widget-viz.d.ts +12 -0
  105. package/dist/admin/pages/ops/index.d.ts +2 -0
  106. package/dist/admin/pages/orders/detail.d.ts +5 -0
  107. package/dist/admin/pages/orders/index.d.ts +1 -0
  108. package/dist/admin/pages/orders/model.d.ts +7 -0
  109. package/dist/admin/pages/payments/attempts.d.ts +7 -0
  110. package/dist/admin/pages/payments/detail.d.ts +2 -0
  111. package/dist/admin/pages/payments/health-model.d.ts +149 -0
  112. package/dist/admin/pages/payments/health.d.ts +2 -0
  113. package/dist/admin/pages/payments/index.d.ts +2 -0
  114. package/dist/admin/pages/settings/configuration-edit.d.ts +9 -0
  115. package/dist/admin/pages/settings/index.d.ts +9 -0
  116. package/dist/admin/pages/settings/notifications.d.ts +2 -0
  117. package/dist/admin/pages/settings/setting-fields.d.ts +20 -0
  118. package/dist/admin/pages/subscriptions/change-subscription-dialog.d.ts +16 -0
  119. package/dist/admin/pages/subscriptions/detail.d.ts +2 -0
  120. package/dist/admin/pages/subscriptions/dunning.d.ts +2 -0
  121. package/dist/admin/pages/subscriptions/index.d.ts +2 -0
  122. package/dist/admin/pages/subscriptions/subscription-change-options.d.ts +23 -0
  123. package/dist/admin/pages/subscriptions/views.d.ts +15 -0
  124. package/dist/admin/router.d.ts +32 -0
  125. package/dist/admin/routes.d.ts +5 -0
  126. package/dist/admin/summary.d.ts +27 -0
  127. package/dist/admin/theme.d.ts +2 -0
  128. package/dist/admin/types.d.ts +56 -0
  129. package/dist/admin/ui-context.d.ts +14 -0
  130. package/dist/admin-attempts-lAoW-Urd.js +419 -0
  131. package/dist/admin-attempts-lAoW-Urd.js.map +1 -0
  132. package/dist/admin-auth-DQGHtt0j.js +14 -0
  133. package/dist/admin-auth-DQGHtt0j.js.map +1 -0
  134. package/dist/admin-badge-DR5-1qd8.js +31 -0
  135. package/dist/admin-badge-DR5-1qd8.js.map +1 -0
  136. package/dist/admin-button-CTL3DgOt.js +46 -0
  137. package/dist/admin-button-CTL3DgOt.js.map +1 -0
  138. package/dist/admin-capabilities-BuigAgtm.js +59 -0
  139. package/dist/admin-capabilities-BuigAgtm.js.map +1 -0
  140. package/dist/admin-card-bzAks3-3.js +51 -0
  141. package/dist/admin-card-bzAks3-3.js.map +1 -0
  142. package/dist/admin-catalog-CC7I4n0_.js +1189 -0
  143. package/dist/admin-catalog-CC7I4n0_.js.map +1 -0
  144. package/dist/admin-confirm-katGq0Qo.js +12 -0
  145. package/dist/admin-confirm-katGq0Qo.js.map +1 -0
  146. package/dist/admin-csv-CPoNZj2D.js +16 -0
  147. package/dist/admin-csv-CPoNZj2D.js.map +1 -0
  148. package/dist/admin-customers-D8u5gq3M.js +160 -0
  149. package/dist/admin-customers-D8u5gq3M.js.map +1 -0
  150. package/dist/admin-dashboard-DqqFjOzq.js +420 -0
  151. package/dist/admin-dashboard-DqqFjOzq.js.map +1 -0
  152. package/dist/admin-data-table-qfXLOFmN.js +96 -0
  153. package/dist/admin-data-table-qfXLOFmN.js.map +1 -0
  154. package/dist/admin-detail-5aNNvrc0.js +324 -0
  155. package/dist/admin-detail-5aNNvrc0.js.map +1 -0
  156. package/dist/admin-detail-7p684Uyc.js +342 -0
  157. package/dist/admin-detail-7p684Uyc.js.map +1 -0
  158. package/dist/admin-detail-CGOyqs7s.js +1312 -0
  159. package/dist/admin-detail-CGOyqs7s.js.map +1 -0
  160. package/dist/admin-detail-DUAJQg8G.js +710 -0
  161. package/dist/admin-detail-DUAJQg8G.js.map +1 -0
  162. package/dist/admin-dialog-BjuKI5Hp.js +88 -0
  163. package/dist/admin-dialog-BjuKI5Hp.js.map +1 -0
  164. package/dist/admin-dialog-width-BPrgdYlj.js +6 -0
  165. package/dist/admin-dialog-width-BPrgdYlj.js.map +1 -0
  166. package/dist/admin-dom-uMmZzRvU.js +149 -0
  167. package/dist/admin-dom-uMmZzRvU.js.map +1 -0
  168. package/dist/admin-dropdown-menu-BW1D_h6s.js +69 -0
  169. package/dist/admin-dropdown-menu-BW1D_h6s.js.map +1 -0
  170. package/dist/admin-dunning-B2zgtrOo.js +10 -0
  171. package/dist/admin-dunning-B2zgtrOo.js.map +1 -0
  172. package/dist/admin-fact-card-DO_fHosg.js +20 -0
  173. package/dist/admin-fact-card-DO_fHosg.js.map +1 -0
  174. package/dist/admin-form-field-errors-hbUMIriS.js +14 -0
  175. package/dist/admin-form-field-errors-hbUMIriS.js.map +1 -0
  176. package/dist/admin-format-DoohJ7Fg.js +136 -0
  177. package/dist/admin-format-DoohJ7Fg.js.map +1 -0
  178. package/dist/admin-health-B4jN2LwR.js +983 -0
  179. package/dist/admin-health-B4jN2LwR.js.map +1 -0
  180. package/dist/admin-input-CcfQfJFN.js +17 -0
  181. package/dist/admin-input-CcfQfJFN.js.map +1 -0
  182. package/dist/admin-invoice-profile-model-Cgjy3zV8.js +53 -0
  183. package/dist/admin-invoice-profile-model-Cgjy3zV8.js.map +1 -0
  184. package/dist/admin-label-BiEN5cjb.js +15 -0
  185. package/dist/admin-label-BiEN5cjb.js.map +1 -0
  186. package/dist/admin-linked-table-row-BsaUruCN.js +26 -0
  187. package/dist/admin-linked-table-row-BsaUruCN.js.map +1 -0
  188. package/dist/admin-metering-BGAXbT23.js +1702 -0
  189. package/dist/admin-metering-BGAXbT23.js.map +1 -0
  190. package/dist/admin-ops-B3mcr76u.js +217 -0
  191. package/dist/admin-ops-B3mcr76u.js.map +1 -0
  192. package/dist/admin-orders-dxC99Idl.js +192 -0
  193. package/dist/admin-orders-dxC99Idl.js.map +1 -0
  194. package/dist/admin-payments-Bs7HSfP0.js +246 -0
  195. package/dist/admin-payments-Bs7HSfP0.js.map +1 -0
  196. package/dist/admin-price-detail-DRquxpA9.js +482 -0
  197. package/dist/admin-price-detail-DRquxpA9.js.map +1 -0
  198. package/dist/admin-price-format-DM1qORWI.js +44 -0
  199. package/dist/admin-price-format-DM1qORWI.js.map +1 -0
  200. package/dist/admin-price-wizard-CI7K-2Nz.js +357 -0
  201. package/dist/admin-price-wizard-CI7K-2Nz.js.map +1 -0
  202. package/dist/admin-range-picker-Dr2M1EZr.js +192 -0
  203. package/dist/admin-range-picker-Dr2M1EZr.js.map +1 -0
  204. package/dist/admin-reports-CywKLiSA.js +320 -0
  205. package/dist/admin-reports-CywKLiSA.js.map +1 -0
  206. package/dist/admin-select-DBgprVW6.js +81 -0
  207. package/dist/admin-select-DBgprVW6.js.map +1 -0
  208. package/dist/admin-settings-Bmoy95uO.js +1434 -0
  209. package/dist/admin-settings-Bmoy95uO.js.map +1 -0
  210. package/dist/admin-skeleton-DsM7crYi.js +14 -0
  211. package/dist/admin-skeleton-DsM7crYi.js.map +1 -0
  212. package/dist/admin-status-badge-BFPgo71d.js +38 -0
  213. package/dist/admin-status-badge-BFPgo71d.js.map +1 -0
  214. package/dist/admin-subscriptions-CLYc_HEV.js +301 -0
  215. package/dist/admin-subscriptions-CLYc_HEV.js.map +1 -0
  216. package/dist/admin-switch-BJUxLCsa.js +20 -0
  217. package/dist/admin-switch-BJUxLCsa.js.map +1 -0
  218. package/dist/admin-table-CH9TrXJf.js +61 -0
  219. package/dist/admin-table-CH9TrXJf.js.map +1 -0
  220. package/dist/admin-tabs-528FJMjt.js +46 -0
  221. package/dist/admin-tabs-528FJMjt.js.map +1 -0
  222. package/dist/admin-textarea-DEz38RaI.js +15 -0
  223. package/dist/admin-textarea-DEz38RaI.js.map +1 -0
  224. package/dist/admin-typed-confirm-dialog-DU7m9-O7.js +66 -0
  225. package/dist/admin-typed-confirm-dialog-DU7m9-O7.js.map +1 -0
  226. package/dist/admin-utils-BK4Vh1o_.js +1809 -0
  227. package/dist/admin-utils-BK4Vh1o_.js.map +1 -0
  228. package/dist/admin-widget-viz-Da48c-Zf.js +581 -0
  229. package/dist/admin-widget-viz-Da48c-Zf.js.map +1 -0
  230. package/dist/admin.css +3 -0
  231. package/dist/admin.js +2164 -0
  232. package/dist/admin.js.map +1 -0
  233. package/dist/appearance.d.ts +1 -1
  234. package/dist/client/generated/error-codes.d.ts +1 -1
  235. package/dist/client/generated/routes.d.ts +2156 -189
  236. package/dist/client/generated/wire.d.ts +1265 -50
  237. package/dist/client/types.d.ts +0 -1
  238. package/dist/{client-Cxz_miQj.js → client-PjivPHmE.js} +2 -3
  239. package/dist/client-PjivPHmE.js.map +1 -0
  240. package/dist/client.js +1 -1
  241. package/dist/{hooks-aKefXeMO.js → hooks-Ckd8F2JF.js} +8 -8
  242. package/dist/hooks-Ckd8F2JF.js.map +1 -0
  243. package/dist/index.d.ts +1 -1
  244. package/dist/index.js +12 -12
  245. package/dist/index.js.map +1 -1
  246. package/dist/lib/{offer-label.d.ts → price-label.d.ts} +1 -1
  247. package/dist/locales/de.js +1 -1
  248. package/dist/locales/de.js.map +1 -1
  249. package/dist/locales/en.d.ts +1 -1
  250. package/dist/locales/en.js +1 -1
  251. package/dist/locales/en.js.map +1 -1
  252. package/dist/locales/es.js +1 -1
  253. package/dist/locales/es.js.map +1 -1
  254. package/dist/locales/ja.js +1 -1
  255. package/dist/locales/ja.js.map +1 -1
  256. package/dist/locales/ko.js +1 -1
  257. package/dist/locales/ko.js.map +1 -1
  258. package/dist/locales/zh.js +1 -1
  259. package/dist/locales/zh.js.map +1 -1
  260. package/dist/{offers.d.ts → product-list.d.ts} +5 -5
  261. package/dist/react.js +1 -1
  262. package/dist/styles.css +1 -1
  263. package/package.json +28 -6
  264. package/dist/client-Cxz_miQj.js.map +0 -1
  265. package/dist/hooks-aKefXeMO.js.map +0 -1
@@ -0,0 +1 @@
1
+ export declare function useIsMobile(): boolean;
@@ -0,0 +1,5 @@
1
+ export { BillingAdmin } from './billing-admin';
2
+ export type { BillingAdminProps, BillingAdminAuth, BillingAdminMerchant, BillingAdminNavigation, BillingAdminResource, BillingAdminSettingsTab, } from './types';
3
+ export { BillingCustomerSummary, billingConfirmWarnings, billingPermissionHelp, useBillingAdminAccess, } from './summary';
4
+ export type { BillingCustomerSummaryProps } from './summary';
5
+ export { billingAdminMessages } from './messages';
@@ -0,0 +1,4 @@
1
+ import { ReactNode } from 'react';
2
+ export declare function AppLayout({ children }: {
3
+ children: ReactNode;
4
+ }): import("react").JSX.Element;
@@ -0,0 +1,64 @@
1
+ import { BillingAdminAuth, BillingAdminResource } from '../../types';
2
+ import { OpenRailsErrorCode } from '../../../client/generated/error-codes';
3
+ import { ListPage } from '../../../client/generated/wire';
4
+ export interface ApiErrorBody {
5
+ error?: {
6
+ type?: string;
7
+ code?: OpenRailsErrorCode;
8
+ message?: string;
9
+ param?: string;
10
+ metadata?: Record<string, unknown>;
11
+ };
12
+ }
13
+ export declare class ApiError extends Error {
14
+ status: number;
15
+ type?: string;
16
+ code?: OpenRailsErrorCode;
17
+ param?: string;
18
+ metadata?: Record<string, unknown>;
19
+ constructor(status: number, body: ApiErrorBody | null, fallback: string);
20
+ get isPermissionDenied(): boolean;
21
+ get revisionMismatch(): boolean;
22
+ get merchantConfigReadOnly(): boolean;
23
+ }
24
+ export interface RequestOptions {
25
+ method?: string;
26
+ body?: unknown;
27
+ rawBody?: string;
28
+ headers?: Record<string, string>;
29
+ query?: Record<string, string | number | boolean | undefined>;
30
+ signal?: AbortSignal;
31
+ }
32
+ export interface ApiResponse<T> {
33
+ status: number;
34
+ body: T;
35
+ }
36
+ export interface PageRequest {
37
+ limit?: number;
38
+ cursor?: string;
39
+ }
40
+ export declare function collectCursorPages<T>(loadPage: (cursor?: string) => Promise<ListPage<T>>, signal?: AbortSignal): Promise<T[]>;
41
+ export interface CursorEnvelope<T> {
42
+ data: T[];
43
+ next_cursor: string | null;
44
+ }
45
+ export interface AdminClientOptions {
46
+ namespace?: string;
47
+ isCurrent?: () => boolean;
48
+ baseUrl: string;
49
+ auth: BillingAdminAuth;
50
+ merchant?: {
51
+ id: string;
52
+ slug: string;
53
+ };
54
+ exchange?: Omit<BillingAdminResource, "group">;
55
+ }
56
+ /** One immutable transport per component and selected merchant. */
57
+ export declare function createAdminClient(options: AdminClientOptions): {
58
+ namespace: string | undefined;
59
+ api: <T>(path: string, opts?: RequestOptions) => Promise<T>;
60
+ apiResponse: <T>(path: string, opts?: RequestOptions) => Promise<ApiResponse<T>>;
61
+ selectedMerchant: () => string | undefined;
62
+ queryRoot: (requested?: string) => readonly [...string[], "merchant", string];
63
+ };
64
+ export type AdminClient = ReturnType<typeof createAdminClient>;
@@ -0,0 +1,6 @@
1
+ import { AdminClient } from './client';
2
+ import { CatalogAnswer } from '../../../client/generated/wire';
3
+ export type { CatalogAnswer, CatalogDraft, NewPriceDraft, PriceChangeDraft, } from '../../../client/generated/wire';
4
+ export declare function createCopilot(client: AdminClient): {
5
+ askCatalog: (question: string) => Promise<CatalogAnswer>;
6
+ };
@@ -0,0 +1,8 @@
1
+ import { AdminClient } from './client';
2
+ import { CreditGrant, CreditGrantInput, BalanceTransaction, ListPage } from './credit-types';
3
+ export declare function createCreditEndpoints(client: AdminClient): {
4
+ listCreditGrants: (customer: string, currency: string, limit: number, cursor: string, signal?: AbortSignal) => Promise<ListPage<CreditGrant>>;
5
+ createCreditGrant: (customer: string, body: CreditGrantInput) => Promise<CreditGrant>;
6
+ revokeCreditGrant: (grant: string, reason: string) => Promise<CreditGrant>;
7
+ listBalanceTransactions: (customer: string, currency: string, limit: number, cursor: string, signal?: AbortSignal) => Promise<ListPage<BalanceTransaction>>;
8
+ };
@@ -0,0 +1,9 @@
1
+ export type { CreditGrant, BalanceTransaction, ListPage, } from '../../../client/generated/wire';
2
+ export interface CreditGrantInput {
3
+ currency: string;
4
+ amount: string;
5
+ source: "admin";
6
+ source_id: string;
7
+ expires_at?: string;
8
+ description?: string;
9
+ }
@@ -0,0 +1,133 @@
1
+ import { AdminClient, CursorEnvelope, PageRequest } from './client';
2
+ import { AdminAccess, AlertWebhook, Allowance, CatalogApplicationReceipt, CreateAlertWebhookParams, CreatePSPParams, PSPRefresh, CreatePriceParams, Customer, ListPage, MerchantConfigurationState, Meter, PSP, Payment, PaymentAttempt, PaymentMethod, Price, PriceKeyMovement, Product, PublicConfig, RatePrice, Renewal, UpdateAlertWebhookParams, UpdateCustomerParams, UpdateMerchantConfigurationParams, UpdatePSPParams, UpdatePriceParams, UpdateProductParams } from '../../../client/generated/wire';
3
+ import { CustomerEntitlement, Finding, PSPRoutingPreview, RawProductAccessGrant, PriceMigration, PriceMigrationCancel, PriceMigrationPreview, ChangeSubscriptionParams, SubscriptionChange, SubscriptionChangePreview } from './types';
4
+ export interface ProductGrant {
5
+ productId: string;
6
+ hours?: number;
7
+ endsAt?: string;
8
+ reason?: "comp" | "staff";
9
+ note?: string;
10
+ }
11
+ export interface SubscriptionFilters {
12
+ status?: string;
13
+ dunning?: string;
14
+ rail?: string;
15
+ customer_id?: string;
16
+ price_id?: string;
17
+ expires_before?: string;
18
+ canceled_after?: string;
19
+ sort?: string;
20
+ }
21
+ export interface PaymentFilters {
22
+ customer_id?: string;
23
+ subscription_id?: string;
24
+ order_id?: string;
25
+ status?: Payment["status"];
26
+ rail?: string;
27
+ kind?: Payment["kind"];
28
+ transaction_id?: string;
29
+ }
30
+ export type AttemptFilters = Partial<Record<(typeof ATTEMPT_FILTERS)[number], string>>;
31
+ export declare const ATTEMPT_FILTERS: readonly ["kind", "owner", "category", "reason", "response_code", "card_entry", "source", "observed_via", "avs_result", "cvv_result", "psp_id", "customer_id", "payment_id", "order_id", "subscription_id", "cycle_id", "since", "until"];
32
+ export type CycleFilters = Partial<Record<(typeof CYCLE_FILTERS)[number], string>>;
33
+ export declare const CYCLE_FILTERS: readonly ["owner", "first_outcome", "miss_reason", "outcome", "psp_id", "subscription_id", "due_since", "due_until"];
34
+ export declare function filtersFrom<K extends string>(params: URLSearchParams, keys: readonly K[]): Partial<Record<K, string>>;
35
+ export declare const REFUNDABLE_RAILS: string[];
36
+ export declare const PAGE_MAX = 500;
37
+ export interface ProductRequest {
38
+ key: string;
39
+ display_name: string;
40
+ description: string;
41
+ tier_group?: string;
42
+ tier_rank?: number;
43
+ entitlements?: string[];
44
+ }
45
+ export interface UsageMeterRequest {
46
+ event_type: string;
47
+ value_property: string;
48
+ aggregation: "sum" | "count";
49
+ unit?: string;
50
+ group_by: Record<string, string>;
51
+ rate_card?: DefaultUsageRateCardRequest | null;
52
+ expected_revision?: number;
53
+ }
54
+ export interface DefaultUsageRateCardRequest {
55
+ product_id: string;
56
+ filter: Record<string, string[]>;
57
+ price: RatePrice;
58
+ allowance?: Allowance;
59
+ }
60
+ export type { CatalogApplicationReceipt } from '../../../client/generated/wire';
61
+ export declare function createEndpoints(client: AdminClient): {
62
+ listCustomers: (search: string, limit: number, cursor: string, signal?: AbortSignal) => Promise<ListPage<Customer>>;
63
+ getCustomer: (customerId: string, signal?: AbortSignal) => Promise<Customer>;
64
+ listCustomerEntitlements: (customerId: string, page: PageRequest, signal?: AbortSignal) => Promise<ListPage<CustomerEntitlement>>;
65
+ listCustomerProductAccess: (customerId: string, page: PageRequest, signal?: AbortSignal) => Promise<ListPage<RawProductAccessGrant>>;
66
+ listCustomerPaymentMethods: (customerId: string, page: PageRequest, signal?: AbortSignal) => Promise<ListPage<PaymentMethod>>;
67
+ grantProductAccess: (customerId: string, grant: ProductGrant) => Promise<{
68
+ items: RawProductAccessGrant[];
69
+ }>;
70
+ revokeProductAccess: (grantId: string, reason: string) => Promise<void>;
71
+ listSubscriptions: (filters: SubscriptionFilters, limit: number, cursor?: string, signal?: AbortSignal) => Promise<CursorEnvelope<import('./types').RawSubscription>>;
72
+ getSubscription: (id: string, signal?: AbortSignal) => Promise<import('./types').RawSubscription>;
73
+ cancelSubscription: (id: string, reason: string, revokeAccess: boolean) => Promise<import('./types').RawSubscription>;
74
+ resumeSubscription: (id: string) => Promise<import('./types').RawSubscription>;
75
+ changeSubscriptionPaymentMethod: (id: string, paymentMethodId: string | null) => Promise<import('./types').RawSubscription>;
76
+ previewSubscriptionChange: (id: string, change: ChangeSubscriptionParams) => Promise<SubscriptionChangePreview>;
77
+ changeSubscription: (id: string, change: ChangeSubscriptionParams, idempotencyKey: string) => Promise<SubscriptionChange>;
78
+ listPayments: (filters: PaymentFilters, page: PageRequest, signal?: AbortSignal) => Promise<ListPage<Payment>>;
79
+ getPayment: (id: string, signal?: AbortSignal) => Promise<Payment>;
80
+ refundPayment: (id: string, amount: string, reason: string, revokeAccess: boolean) => Promise<Payment>;
81
+ listPaymentAttempts: (filters: AttemptFilters, page: PageRequest, signal?: AbortSignal) => Promise<ListPage<PaymentAttempt>>;
82
+ getPaymentAttempt: (id: string, signal?: AbortSignal) => Promise<PaymentAttempt>;
83
+ listRenewals: (filters: CycleFilters, page: PageRequest, signal?: AbortSignal) => Promise<ListPage<Renewal>>;
84
+ getRenewal: (id: string, signal?: AbortSignal) => Promise<Renewal>;
85
+ listProducts: (limit: number, cursor?: string, archived?: boolean, signal?: AbortSignal) => Promise<ListPage<Product>>;
86
+ getProduct: (id: string, signal?: AbortSignal) => Promise<Product>;
87
+ createProduct: (body: ProductRequest) => Promise<Product>;
88
+ updateProduct: (id: string, body: UpdateProductParams) => Promise<Product>;
89
+ listUsageMeters: (limit?: number, cursor?: string, signal?: AbortSignal) => Promise<ListPage<Meter>>;
90
+ getUsageMeter: (key: string, signal?: AbortSignal) => Promise<Meter>;
91
+ putUsageMeter: (key: string, body: UsageMeterRequest) => Promise<Meter>;
92
+ putUsageMeterRateCard: (meter: Meter, rateCard: DefaultUsageRateCardRequest | null) => Promise<Meter>;
93
+ listPrices: (limit: number, cursor?: string, productId?: string, signal?: AbortSignal) => Promise<ListPage<Price>>;
94
+ createPrice: (body: CreatePriceParams) => Promise<Price>;
95
+ getPrice: (id: string, verify?: boolean, signal?: AbortSignal) => Promise<Price>;
96
+ getProductByKey: (productKey: string) => Promise<Product>;
97
+ updatePrice: (id: string, body: UpdatePriceParams) => Promise<Price>;
98
+ getPriceHistory: (priceId: string, signal?: AbortSignal) => Promise<ListPage<PriceKeyMovement>>;
99
+ previewPriceMigration: (productKey: string, priceKey: string) => Promise<PriceMigrationPreview>;
100
+ createPriceMigration: (productKey: string, priceKey: string, toPriceId: string, effectiveAt: string) => Promise<PriceMigration>;
101
+ listPriceMigrations: (productKey: string, priceKey: string, limit?: number, signal?: AbortSignal) => Promise<CursorEnvelope<PriceMigration>>;
102
+ cancelPriceMigration: (id: string) => Promise<PriceMigrationCancel>;
103
+ applyCatalog: (document: string, force?: boolean) => Promise<CatalogApplicationReceipt>;
104
+ refreshPSPs: () => Promise<PSPRefresh>;
105
+ listFindings: (filters: {
106
+ status?: string;
107
+ severity?: string;
108
+ type?: string;
109
+ }, limit: number, signal?: AbortSignal) => Promise<ListPage<Finding>>;
110
+ getFinding: (id: string) => Promise<Finding>;
111
+ resolveFinding: (id: string, outcome: "approve" | "ignore", notes: string) => Promise<{
112
+ finding: Finding;
113
+ execution?: Record<string, unknown>;
114
+ }>;
115
+ getMerchantConfiguration: (signal?: AbortSignal) => Promise<MerchantConfigurationState>;
116
+ updateMerchantConfiguration: (body: UpdateMerchantConfigurationParams) => Promise<MerchantConfigurationState>;
117
+ listPSPs: (signal?: AbortSignal) => Promise<ListPage<PSP>>;
118
+ listRails: (signal?: AbortSignal) => Promise<import('../../../client/generated/wire').RailDefinition[]>;
119
+ createPSP: (body: CreatePSPParams) => Promise<PSP>;
120
+ updatePSP: (id: string, body: UpdatePSPParams) => Promise<PSP>;
121
+ previewPSPRouting: (body: {
122
+ price_id: string;
123
+ country?: string;
124
+ psp?: string;
125
+ }, signal?: AbortSignal) => Promise<PSPRoutingPreview>;
126
+ getConfig: (signal?: AbortSignal) => Promise<PublicConfig>;
127
+ getAdminAccess: (signal?: AbortSignal) => Promise<AdminAccess>;
128
+ updateCustomer: (customerId: string, params: UpdateCustomerParams) => Promise<Customer>;
129
+ listWebhooks: (signal?: AbortSignal) => Promise<ListPage<AlertWebhook>>;
130
+ createWebhook: (body: CreateAlertWebhookParams) => Promise<AlertWebhook>;
131
+ updateWebhook: (id: string, body: UpdateAlertWebhookParams) => Promise<AlertWebhook>;
132
+ deleteWebhook: (id: string) => Promise<void>;
133
+ };
@@ -0,0 +1,89 @@
1
+ import { AdminClient } from './client';
2
+ export declare function createAdminAPI(client: AdminClient): {
3
+ getInvoiceProfile: (customerId: string, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').InvoiceProfile | null>;
4
+ putInvoiceProfile: (customerId: string, profile: import('../../../client/generated/wire').InvoiceProfile) => Promise<import('../../../client/generated/wire').InvoiceProfile | null>;
5
+ listOrders: (filters: import('./order-endpoints').OrderFilters, page: import('./client').PageRequest, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').Order>>;
6
+ getOrder: (id: string, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').Order>;
7
+ listOrderPayments: (id: string, page: import('./client').PageRequest, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').Payment>>;
8
+ applyUsageAction: (request: import('./order-endpoints').UsageActionRequest) => Promise<import('../../../client/generated/wire').Order | import('../../../client/generated/wire').Payment>;
9
+ listCreditGrants: (customer: string, currency: string, limit: number, cursor: string, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('./credit-types').CreditGrant>>;
10
+ createCreditGrant: (customer: string, body: import('./credit-types').CreditGrantInput) => Promise<import('./credit-types').CreditGrant>;
11
+ revokeCreditGrant: (grant: string, reason: string) => Promise<import('./credit-types').CreditGrant>;
12
+ listBalanceTransactions: (customer: string, currency: string, limit: number, cursor: string, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('./credit-types').BalanceTransaction>>;
13
+ askCatalog: (question: string) => Promise<import('./copilot').CatalogAnswer>;
14
+ metricsQuery: (query: import('./metrics').MetricsQuery, signal?: AbortSignal) => Promise<import('./metrics').MetricsResult>;
15
+ getDashboard: (signal?: AbortSignal) => Promise<import('./metrics').Dashboard>;
16
+ putDashboard: (widgets: import('./metrics').Widget[]) => Promise<import('./metrics').Dashboard>;
17
+ listCustomers: (search: string, limit: number, cursor: string, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').Customer>>;
18
+ getCustomer: (customerId: string, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').Customer>;
19
+ listCustomerEntitlements: (customerId: string, page: import('./client').PageRequest, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('./types').CustomerEntitlement>>;
20
+ listCustomerProductAccess: (customerId: string, page: import('./client').PageRequest, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('./types').RawProductAccessGrant>>;
21
+ listCustomerPaymentMethods: (customerId: string, page: import('./client').PageRequest, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').PaymentMethod>>;
22
+ grantProductAccess: (customerId: string, grant: import('./endpoints').ProductGrant) => Promise<{
23
+ items: import('./types').RawProductAccessGrant[];
24
+ }>;
25
+ revokeProductAccess: (grantId: string, reason: string) => Promise<void>;
26
+ listSubscriptions: (filters: import('./endpoints').SubscriptionFilters, limit: number, cursor?: string, signal?: AbortSignal) => Promise<import('./client').CursorEnvelope<import('./types').RawSubscription>>;
27
+ getSubscription: (id: string, signal?: AbortSignal) => Promise<import('./types').RawSubscription>;
28
+ cancelSubscription: (id: string, reason: string, revokeAccess: boolean) => Promise<import('./types').RawSubscription>;
29
+ resumeSubscription: (id: string) => Promise<import('./types').RawSubscription>;
30
+ changeSubscriptionPaymentMethod: (id: string, paymentMethodId: string | null) => Promise<import('./types').RawSubscription>;
31
+ previewSubscriptionChange: (id: string, change: import('./types').ChangeSubscriptionParams) => Promise<import('./types').SubscriptionChangePreview>;
32
+ changeSubscription: (id: string, change: import('./types').ChangeSubscriptionParams, idempotencyKey: string) => Promise<import('./types').SubscriptionChange>;
33
+ listPayments: (filters: import('./endpoints').PaymentFilters, page: import('./client').PageRequest, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').Payment>>;
34
+ getPayment: (id: string, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').Payment>;
35
+ refundPayment: (id: string, amount: string, reason: string, revokeAccess: boolean) => Promise<import('../../../client/generated/wire').Payment>;
36
+ listPaymentAttempts: (filters: import('./endpoints').AttemptFilters, page: import('./client').PageRequest, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').PaymentAttempt>>;
37
+ getPaymentAttempt: (id: string, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').PaymentAttempt>;
38
+ listRenewals: (filters: import('./endpoints').CycleFilters, page: import('./client').PageRequest, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').Renewal>>;
39
+ getRenewal: (id: string, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').Renewal>;
40
+ listProducts: (limit: number, cursor?: string, archived?: boolean, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').Product>>;
41
+ getProduct: (id: string, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').Product>;
42
+ createProduct: (body: import('./endpoints').ProductRequest) => Promise<import('../../../client/generated/wire').Product>;
43
+ updateProduct: (id: string, body: import('../../../client/generated/wire').UpdateProductParams) => Promise<import('../../../client/generated/wire').Product>;
44
+ listUsageMeters: (limit?: number, cursor?: string, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').Meter>>;
45
+ getUsageMeter: (key: string, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').Meter>;
46
+ putUsageMeter: (key: string, body: import('./endpoints').UsageMeterRequest) => Promise<import('../../../client/generated/wire').Meter>;
47
+ putUsageMeterRateCard: (meter: import('../../../client/generated/wire').Meter, rateCard: import('./endpoints').DefaultUsageRateCardRequest | null) => Promise<import('../../../client/generated/wire').Meter>;
48
+ listPrices: (limit: number, cursor?: string, productId?: string, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').Price>>;
49
+ createPrice: (body: import('../../../client/generated/wire').CreatePriceParams) => Promise<import('../../../client/generated/wire').Price>;
50
+ getPrice: (id: string, verify?: boolean, signal?: AbortSignal) => Promise<import('../../../client/generated/wire').Price>;
51
+ getProductByKey: (productKey: string) => Promise<import('../../../client/generated/wire').Product>;
52
+ updatePrice: (id: string, body: import('../../../client/generated/wire').UpdatePriceParams) => Promise<import('../../../client/generated/wire').Price>;
53
+ getPriceHistory: (priceId: string, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('../../../client/generated/wire').PriceKeyMovement>>;
54
+ previewPriceMigration: (productKey: string, priceKey: string) => Promise<import('./types').PriceMigrationPreview>;
55
+ createPriceMigration: (productKey: string, priceKey: string, toPriceId: string, effectiveAt: string) => Promise<import('./types').PriceMigration>;
56
+ listPriceMigrations: (productKey: string, priceKey: string, limit?: number, signal?: AbortSignal) => Promise<import('./client').CursorEnvelope<import('./types').PriceMigration>>;
57
+ cancelPriceMigration: (id: string) => Promise<import('./types').PriceMigrationCancel>;
58
+ applyCatalog: (document: string, force?: boolean) => Promise<import('./endpoints').CatalogApplicationReceipt>;
59
+ refreshPSPs: () => Promise<import('../../../client/generated/wire').PSPRefresh>;
60
+ listFindings: (filters: {
61
+ status?: string;
62
+ severity?: string;
63
+ type?: string;
64
+ }, limit: number, signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('./types').Finding>>;
65
+ getFinding: (id: string) => Promise<import('./types').Finding>;
66
+ resolveFinding: (id: string, outcome: "approve" | "ignore", notes: string) => Promise<{
67
+ finding: import('./types').Finding;
68
+ execution?: Record<string, unknown>;
69
+ }>;
70
+ getMerchantConfiguration: (signal?: AbortSignal) => Promise<import('./types').MerchantConfigurationState>;
71
+ updateMerchantConfiguration: (body: import('../../../client/generated/wire').UpdateMerchantConfigurationParams) => Promise<import('./types').MerchantConfigurationState>;
72
+ listPSPs: (signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('./types').PSP>>;
73
+ listRails: (signal?: AbortSignal) => Promise<import('./types').RailDefinition[]>;
74
+ createPSP: (body: import('../../../client/generated/wire').CreatePSPParams) => Promise<import('./types').PSP>;
75
+ updatePSP: (id: string, body: import('../../../client/generated/wire').UpdatePSPParams) => Promise<import('./types').PSP>;
76
+ previewPSPRouting: (body: {
77
+ price_id: string;
78
+ country?: string;
79
+ psp?: string;
80
+ }, signal?: AbortSignal) => Promise<import('./types').PSPRoutingPreview>;
81
+ getConfig: (signal?: AbortSignal) => Promise<import('../../../client/generated/wire').PublicConfig>;
82
+ getAdminAccess: (signal?: AbortSignal) => Promise<import('../../../client/generated/wire').AdminAccess>;
83
+ updateCustomer: (customerId: string, params: import('../../../client/generated/wire').UpdateCustomerParams) => Promise<import('../../../client/generated/wire').Customer>;
84
+ listWebhooks: (signal?: AbortSignal) => Promise<import('./credit-types').ListPage<import('./types').AlertWebhook>>;
85
+ createWebhook: (body: import('../../../client/generated/wire').CreateAlertWebhookParams) => Promise<import('./types').AlertWebhook>;
86
+ updateWebhook: (id: string, body: import('../../../client/generated/wire').UpdateAlertWebhookParams) => Promise<import('./types').AlertWebhook>;
87
+ deleteWebhook: (id: string) => Promise<void>;
88
+ };
89
+ export type AdminAPI = ReturnType<typeof createAdminAPI>;
@@ -0,0 +1,6 @@
1
+ import { createEndpoints } from './endpoints';
2
+ import { InvoiceProfile } from '../../../client/generated/wire';
3
+ export declare function createInvoiceProfileEndpoints(endpoints: ReturnType<typeof createEndpoints>): {
4
+ getInvoiceProfile: (customerId: string, signal?: AbortSignal) => Promise<InvoiceProfile | null>;
5
+ putInvoiceProfile: (customerId: string, profile: InvoiceProfile) => Promise<InvoiceProfile | null>;
6
+ };
@@ -0,0 +1,68 @@
1
+ import { AdminClient } from './client';
2
+ export interface MetricsRange {
3
+ from?: string;
4
+ to?: string;
5
+ last?: string;
6
+ }
7
+ export interface OrderTerm {
8
+ measure?: string;
9
+ dimension?: string;
10
+ dir?: "asc" | "desc";
11
+ }
12
+ export interface MetricsQuery {
13
+ measures: string[];
14
+ by?: string[];
15
+ grain?: string;
16
+ range: MetricsRange;
17
+ filters?: Record<string, string[]>;
18
+ order?: OrderTerm[];
19
+ limit?: number;
20
+ compare?: "previous_period";
21
+ }
22
+ export interface MetricsColumn {
23
+ name: string;
24
+ kind: "time" | "dimension" | "measure";
25
+ unit?: string;
26
+ }
27
+ export type MetricsCell = string | number | null;
28
+ export interface MetricsResult {
29
+ grain?: string;
30
+ range: {
31
+ from: string;
32
+ to: string;
33
+ };
34
+ columns: MetricsColumn[];
35
+ rows: MetricsCell[][];
36
+ compare_range?: {
37
+ from: string;
38
+ to: string;
39
+ };
40
+ compare_rows?: MetricsCell[][];
41
+ }
42
+ export type WidgetViz = "stat" | "line" | "area" | "bar" | "donut" | "table";
43
+ export declare const WIDGET_VIZ: WidgetViz[];
44
+ export interface WidgetGrid {
45
+ x: number;
46
+ y: number;
47
+ w: number;
48
+ h: number;
49
+ }
50
+ export interface Widget {
51
+ id: string;
52
+ title: string;
53
+ viz: WidgetViz;
54
+ query: MetricsQuery;
55
+ grid: WidgetGrid;
56
+ fixed_range: boolean;
57
+ }
58
+ export interface Dashboard {
59
+ widgets: Widget[];
60
+ is_default: boolean;
61
+ updated_at?: string;
62
+ updated_by?: string;
63
+ }
64
+ export declare function createMetrics(client: AdminClient): {
65
+ metricsQuery: (query: MetricsQuery, signal?: AbortSignal) => Promise<MetricsResult>;
66
+ getDashboard: (signal?: AbortSignal) => Promise<Dashboard>;
67
+ putDashboard: (widgets: Widget[]) => Promise<Dashboard>;
68
+ };
@@ -0,0 +1,21 @@
1
+ import { AdminClient, PageRequest } from './client';
2
+ import { ListPage, Order, Payment } from '../../../client/generated/wire';
3
+ export interface OrderFilters {
4
+ customer_id?: string;
5
+ origin?: string;
6
+ status?: string;
7
+ overdue?: string;
8
+ }
9
+ export type UsageAction = "waive_balance" | "mark_uncollectible" | "record_payment";
10
+ export interface UsageActionRequest {
11
+ id: string;
12
+ action: UsageAction;
13
+ amount?: string;
14
+ reference?: string;
15
+ }
16
+ export declare function createOrderEndpoints(client: AdminClient): {
17
+ listOrders: (filters: OrderFilters, page: PageRequest, signal?: AbortSignal) => Promise<ListPage<Order>>;
18
+ getOrder: (id: string, signal?: AbortSignal) => Promise<Order>;
19
+ listOrderPayments: (id: string, page: PageRequest, signal?: AbortSignal) => Promise<ListPage<Payment>>;
20
+ applyUsageAction: (request: UsageActionRequest) => Promise<Order | Payment>;
21
+ };
@@ -0,0 +1,122 @@
1
+ import { SubscriptionDunning } from '../../../client/generated/wire';
2
+ export type SubscriptionStatus = "pending" | "active" | "past_due" | "awaiting_method" | "unverified" | "canceled";
3
+ export type Rail = "nmi" | "ccbill" | "solana" | "stripe" | string;
4
+ export interface RawSubscription {
5
+ id: string;
6
+ customer_id: string;
7
+ psp_id?: string;
8
+ product_id: string;
9
+ price_id: string;
10
+ scheduled_change?: import('../../../client/generated/wire').ScheduledChange | null;
11
+ quantity: number | null;
12
+ collection_policy?: string;
13
+ status: SubscriptionStatus;
14
+ started_at: string;
15
+ ended_at: string | null;
16
+ current_period_starts_at: string | null;
17
+ current_period_ends_at: string | null;
18
+ rail: Rail;
19
+ rail_subscription_id: string | null;
20
+ payment_method_id: string | null;
21
+ dunning: SubscriptionDunning | null;
22
+ cancel_type: string | null;
23
+ cancel_feedback: string | null;
24
+ canceled_at: string | null;
25
+ price?: RawPrice;
26
+ created_at: string;
27
+ updated_at: string;
28
+ }
29
+ export interface RawPrice {
30
+ id: string;
31
+ product_id?: string;
32
+ unit_amount?: string;
33
+ currency?: string;
34
+ archived?: boolean;
35
+ key?: string;
36
+ access_duration_hours?: number;
37
+ billing_interval_hours?: number;
38
+ [k: string]: unknown;
39
+ }
40
+ export interface CustomerEntitlement {
41
+ customer_id: string;
42
+ entitlement: string;
43
+ quantity: number | null;
44
+ }
45
+ export interface RawProductAccessGrant {
46
+ id: string;
47
+ customer_id?: string;
48
+ product_id: string;
49
+ product_key: string;
50
+ product_name: string;
51
+ source_type: string;
52
+ source_id: string;
53
+ payment_id?: string | null;
54
+ grant_reason?: string | null;
55
+ granted_by?: string | null;
56
+ note?: string | null;
57
+ status: string;
58
+ starts_at: string;
59
+ ends_at?: string | null;
60
+ revoked_at?: string | null;
61
+ revoke_reason?: string | null;
62
+ }
63
+ export interface Page<T> {
64
+ data: T[];
65
+ next_cursor: string | null;
66
+ }
67
+ export type AdminSubscription = RawSubscription;
68
+ export type { ChangeSubscriptionParams, SubscriptionChange, SubscriptionChangePreview, } from '../../../client/generated/wire';
69
+ export type UsageAggregation = "sum" | "count" | "max" | "min" | "unique_count" | "latest";
70
+ export type UsagePriceModel = "per_unit" | "tiered" | "package";
71
+ export type PSPRoutingSkip = "unknown_selector" | "ambiguous_selector" | "not_armed" | "credentials_missing" | "link_missing" | "mode_unsupported" | "posture_disarmed" | "service_unavailable" | "resolve_failed";
72
+ export interface PSPRoutingCandidate {
73
+ psp: string;
74
+ rail: Rail;
75
+ skip: PSPRoutingSkip | null;
76
+ }
77
+ export interface PSPRoutingPreview {
78
+ policy: string;
79
+ rule: number | null;
80
+ psp: string | null;
81
+ rail: Rail | null;
82
+ mode: string | null;
83
+ candidates: PSPRoutingCandidate[];
84
+ }
85
+ export type { PriceMigration, PriceMigrationCancel, PriceMigrationPreview, ScheduledChange, } from '../../../client/generated/wire';
86
+ export interface Recommendation {
87
+ action: string;
88
+ params?: Record<string, unknown>;
89
+ }
90
+ export interface Finding {
91
+ id: string;
92
+ provider: string | null;
93
+ psp_id?: string | null;
94
+ resource_type?: string | null;
95
+ resource_id?: string | null;
96
+ external_resource_id?: string | null;
97
+ field?: string | null;
98
+ openrails_value?: string | null;
99
+ external_value?: string | null;
100
+ finding_type: string;
101
+ subject_key: string;
102
+ severity: "critical" | "high" | "medium" | "low";
103
+ status: string;
104
+ requires_review?: boolean;
105
+ recommended_action?: string;
106
+ evidence?: Record<string, unknown>;
107
+ last_seen_at: string;
108
+ resolved_at?: string;
109
+ resolution?: string;
110
+ operator_notes?: string;
111
+ created_at: string;
112
+ updated_at: string;
113
+ recommendation?: Recommendation;
114
+ }
115
+ export interface FindingsGauges {
116
+ total_open: number;
117
+ orphaned_members: number;
118
+ freeloaders: number;
119
+ duplicate_coverage: number;
120
+ }
121
+ export type { AlertWebhook, MerchantConfigurationState, MerchantSettings, PSP, RailDefinition, } from '../../../client/generated/wire';
122
+ export type AlertSeverity = "warning" | "critical";
@@ -0,0 +1,6 @@
1
+ export declare function useAuth(): {
2
+ merchants: import('..').BillingAdminMerchant[];
3
+ activeMerchant: import('..').BillingAdminMerchant | undefined;
4
+ selectMerchant: (slug: string) => void;
5
+ };
6
+ export declare function useSelectedMerchant(): string | undefined;
@@ -0,0 +1,13 @@
1
+ import { AdminAccess } from '../../client/generated/wire';
2
+ export declare function useAccess(): AdminAccess | undefined;
3
+ export declare function hasAnyArea(access: AdminAccess): boolean;
4
+ export declare function useAdminArea(): boolean;
5
+ export declare function useAdminUpdates(): boolean;
6
+ export declare function useCatalogArea(): boolean;
7
+ export declare function useMerchantConfigEdits(): boolean;
8
+ export declare function useCatalogWrites(): boolean;
9
+ export declare function useMerchantConfig(): boolean;
10
+ export declare function useMerchantConfigUpdates(): boolean;
11
+ export declare function useMetrics(): boolean;
12
+ export declare function useDashboardLayout(): boolean;
13
+ export declare function settingsTab(requested: string | null, config: boolean, admin: boolean, others?: string[]): string;
@@ -0,0 +1 @@
1
+ export declare function isChunkLoadError(error: unknown): boolean;
@@ -0,0 +1,11 @@
1
+ import * as React from "react";
2
+ export interface ConfirmOptions {
3
+ title: string;
4
+ description?: React.ReactNode;
5
+ confirmLabel?: string;
6
+ cancelLabel?: string;
7
+ tone?: "default" | "destructive";
8
+ }
9
+ export type Confirm = (options: ConfirmOptions) => Promise<boolean>;
10
+ export declare const ConfirmContext: React.Context<Confirm | null>;
11
+ export declare function useConfirm(): Confirm;
@@ -0,0 +1,23 @@
1
+ import { AdminClient } from './api/client';
2
+ import { AdminAPI } from './api';
3
+ import { QueryClient } from '@tanstack/react-query';
4
+ import { CreditGrantInput } from './api/credit-types';
5
+ export declare const creditCustomerKey: (merchant: string, customer: string) => readonly ["merchant", string, "customers", string];
6
+ export declare function createCreditQueries(client: AdminClient, api: AdminAPI): {
7
+ assertMerchant: (merchant: string) => void;
8
+ creditQueries: {
9
+ grants: (merchant: string, customer: string, currency: string, limit: number, cursor: string) => import('@tanstack/react-query').OmitKeyof<import('@tanstack/react-query').UseQueryOptions<import('./api/credit-types').ListPage<import('./api/credit-types').CreditGrant>, Error, import('./api/credit-types').ListPage<import('./api/credit-types').CreditGrant>, (string | number)[]>, "queryFn"> & {
10
+ queryFn?: import('@tanstack/react-query').QueryFunction<import('./api/credit-types').ListPage<import('./api/credit-types').CreditGrant>, (string | number)[], never> | undefined;
11
+ } & import('@tanstack/react-query').QueryKeyWithDataTag<(string | number)[], import('./api/credit-types').ListPage<import('./api/credit-types').CreditGrant>, Error>;
12
+ transactions: (merchant: string, customer: string, currency: string, limit: number, cursor: string) => import('@tanstack/react-query').OmitKeyof<import('@tanstack/react-query').UseQueryOptions<import('./api/credit-types').ListPage<import('./api/credit-types').BalanceTransaction>, Error, import('./api/credit-types').ListPage<import('./api/credit-types').BalanceTransaction>, (string | number)[]>, "queryFn"> & {
13
+ queryFn?: import('@tanstack/react-query').QueryFunction<import('./api/credit-types').ListPage<import('./api/credit-types').BalanceTransaction>, (string | number)[], never> | undefined;
14
+ } & import('@tanstack/react-query').QueryKeyWithDataTag<(string | number)[], import('./api/credit-types').ListPage<import('./api/credit-types').BalanceTransaction>, Error>;
15
+ };
16
+ creditMutations: {
17
+ grant: (client: QueryClient, merchant: string, customer: string) => Omit<import('@tanstack/react-query').UseMutationOptions<import('./api/credit-types').CreditGrant, Error, CreditGrantInput, unknown>, "mutationKey">;
18
+ revoke: (client: QueryClient, merchant: string, customer: string) => Omit<import('@tanstack/react-query').UseMutationOptions<import('./api/credit-types').CreditGrant, Error, {
19
+ grant: string;
20
+ reason: string;
21
+ }, unknown>, "mutationKey">;
22
+ };
23
+ };
@@ -0,0 +1,3 @@
1
+ export declare function csvEscape(v: unknown): string;
2
+ export declare function toCsv(header: string[], rows: unknown[][]): string;
3
+ export declare function downloadCsv(filename: string, header: string[], rows: unknown[][]): void;