@clocknext/sdk 0.4.0 → 0.6.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/index.d.cts CHANGED
@@ -103,6 +103,18 @@ interface SerializedOutcomeAttribution {
103
103
  progressSteps: string[];
104
104
  totalSteps: number;
105
105
  }
106
+ /** The customer's remaining balance for the dimension a signal metered, AFTER
107
+ * the signal was applied — update an on-screen meter straight from the record
108
+ * response. Populated on recorded (inline / `{ wait: true }`) signals; `null`
109
+ * on dry runs and on read-back. */
110
+ interface UsageBalance {
111
+ dimension: "credit" | "outcome" | "wallet";
112
+ /** Post-signal remaining. `null` when the meter is uncapped — an ARREAR
113
+ * (pay-as-you-go) credit or outcome has no fixed allowance. */
114
+ remaining: number | null;
115
+ /** The credit / outcome name; `null` for the wallet. */
116
+ name: string | null;
117
+ }
106
118
  interface SerializedUsageLog {
107
119
  id: string;
108
120
  customerId: string;
@@ -121,6 +133,9 @@ interface SerializedUsageLog {
121
133
  status: SignalStatus;
122
134
  appliedRules: SerializedRuleApplication[];
123
135
  outcome: SerializedOutcomeAttribution | null;
136
+ /** Post-signal balance for the metered dimension. Null on dry runs and
137
+ * read-back. */
138
+ balance: UsageBalance | null;
124
139
  createdAt: string;
125
140
  }
126
141
  /** Result of a single signal send (sync mode, or `{ wait: true }`). */
@@ -185,7 +200,6 @@ interface CustomerProfileInput {
185
200
  taxId?: string | null;
186
201
  notes?: string | null;
187
202
  logoUrl?: string | null;
188
- creditAllowance?: number;
189
203
  /** ISO 4217 (3 letters); must be enabled for the org. */
190
204
  currencyCode?: string;
191
205
  }
@@ -198,10 +212,46 @@ interface CustomerList {
198
212
  customers: ApiCustomer[];
199
213
  nextCursor: string | null;
200
214
  }
201
- type RevenueRange = "30d" | "6m" | "1y" | "all";
202
- /** Loosely typed insight payloads (revenue/balances/plan) — server shapes the
203
- * detail; we surface the whole envelope minus the `ok` flag. */
204
- type CustomerBalances = {
215
+ /** One credit type's running balance for a customer (an element of
216
+ * `customers.balances().credits`). */
217
+ interface CreditBalance {
218
+ creditId: string;
219
+ /** The credit's stable agent key — the same key used to record usage and to
220
+ * adjust this balance. */
221
+ agentKey: string;
222
+ creditName: string;
223
+ granted: number;
224
+ used: number;
225
+ remaining: number;
226
+ }
227
+ /** One outcome's running balance for a customer. Unlike a credit balance it
228
+ * has no `used`, and it carries the outcome's ordered step list. */
229
+ interface OutcomeBalance {
230
+ outcomeId: string;
231
+ outcomeName: string;
232
+ granted: number;
233
+ remaining: number;
234
+ /** Each step's `agentKey` is what `signals.outcome()` and the outcome adjust
235
+ * API use to address this outcome (outcomes have no key of their own). */
236
+ steps: {
237
+ id: string;
238
+ name: string;
239
+ agentKey: string;
240
+ }[];
241
+ }
242
+ /** One unit's advance allowance for a customer. No `used` field. */
243
+ interface UnitBalance {
244
+ unitId: string;
245
+ /** The unit's stable agent key — the same key used to record usage and to
246
+ * adjust this balance. */
247
+ agentKey: string;
248
+ unitName: string;
249
+ granted: number;
250
+ remaining: number;
251
+ }
252
+ /** Wallet / credit / outcome / unit balances for a customer's active plan
253
+ * (`customers.balances()`). */
254
+ interface CustomerBalances {
205
255
  customerId: string;
206
256
  currency: {
207
257
  code: string;
@@ -211,34 +261,40 @@ type CustomerBalances = {
211
261
  wallet: {
212
262
  balanceUsd: number;
213
263
  } | null;
214
- credits: unknown[];
215
- outcomes: unknown[];
216
- units: unknown[];
217
- };
218
- type CustomerPlan = {
219
- customerId: string;
220
- currency: {
221
- code: string;
222
- rateUsd: number;
264
+ credits: CreditBalance[];
265
+ outcomes: OutcomeBalance[];
266
+ units: UnitBalance[];
267
+ }
268
+ /** The customer's active plan (the `plan` field of `customers.plan()`);
269
+ * `null` when the customer is unsubscribed. */
270
+ interface CustomerPlanDetails {
271
+ purchaseId: string;
272
+ planId: string | null;
273
+ planName: string;
274
+ planType: PlanType;
275
+ planKind: PlanKind;
276
+ seatScope: "CUSTOMER" | "MEMBER" | null;
277
+ billingCycle: BillingCycle;
278
+ cost: number;
279
+ status: "SCHEDULED" | "ACTIVE";
280
+ billingDate: string;
281
+ spendingLimit: number | null;
282
+ spentThisCycle: number | null;
283
+ meters: {
284
+ wallet: boolean;
285
+ credit: boolean;
286
+ outcome: boolean;
287
+ unit: boolean;
223
288
  };
224
- plan: Record<string, unknown> | null;
225
- };
226
- type CustomerRevenue = {
289
+ }
290
+ interface CustomerPlan {
227
291
  customerId: string;
228
- range: RevenueRange;
229
- window: unknown;
230
- bucket: unknown;
231
292
  currency: {
232
293
  code: string;
233
294
  rateUsd: number;
234
295
  };
235
- revenue: number;
236
- cost: number;
237
- profit: number;
238
- grossMargin: number;
239
- deltas: Record<string, unknown>;
240
- trend: unknown[];
241
- };
296
+ plan: CustomerPlanDetails | null;
297
+ }
242
298
  interface PortalTokenInput {
243
299
  customerId: string;
244
300
  ttlSeconds?: number;
@@ -354,6 +410,8 @@ interface Plan {
354
410
  kind: PlanKind;
355
411
  billingCycle: BillingCycle;
356
412
  cost: number;
413
+ /** Signed adjustment applied to the plan's headline price (default 0). */
414
+ priceAdjustment: number;
357
415
  currencyCode: string;
358
416
  isActive: boolean;
359
417
  components: PlanComponent[];
@@ -364,6 +422,7 @@ interface PlanDetail extends Plan {
364
422
  createdByName: string | null;
365
423
  customerCount: number;
366
424
  invoiceCount: number;
425
+ openInvoiceCount: number;
367
426
  stats: {
368
427
  totalInvoiced: number;
369
428
  totalCollected: number;
@@ -386,6 +445,7 @@ interface Purchase {
386
445
  purchaseNumber: string;
387
446
  customerId: string;
388
447
  customerName: string;
448
+ customerLogoUrl: string | null;
389
449
  planId: string | null;
390
450
  planName: string;
391
451
  planType: PlanType;
@@ -397,9 +457,12 @@ interface Purchase {
397
457
  cost: number;
398
458
  currencyCode: string;
399
459
  billingDate: string;
460
+ nextBillingDate: string;
400
461
  status: PurchaseStatus;
462
+ voidAfterMinutes: number;
401
463
  autoPayment: boolean;
402
464
  autoPaymentPauseReason: string | null;
465
+ notes: string | null;
403
466
  createdAt: string;
404
467
  }
405
468
  /** The purchase returned by `purchases.get()` — a different, detail-oriented shape. */
@@ -417,7 +480,10 @@ interface PurchaseDetail {
417
480
  customer: {
418
481
  id: string;
419
482
  name: string;
483
+ logoUrl: string | null;
420
484
  };
485
+ voidAfterMinutes: number;
486
+ notes: string | null;
421
487
  autoPayment: boolean;
422
488
  autoPaymentPauseReason: string | null;
423
489
  autoPaymentPausedAt: string | null;
@@ -612,21 +678,28 @@ interface WalletEntryInput {
612
678
  amount: number;
613
679
  notes?: string;
614
680
  }
615
- /** Grant (positive) or claw back (negative) a credit balance. `delta` must be a non-zero whole number. */
681
+ /** Grant (positive) or claw back (negative) a credit balance. `delta` must be a
682
+ * non-zero whole number. The credit is addressed by its stable `agentKey`. */
616
683
  interface CreditAdjustInput {
617
- creditId: string;
684
+ /** The credit's stable agent key (the same key used to record usage). */
685
+ agentKey: string;
618
686
  delta: number;
619
687
  notes?: string;
620
688
  }
621
- /** Grant/claw an outcome balance. `delta` is a non-zero whole number; floored at 0. */
689
+ /** Grant/claw an outcome balance. `delta` is a non-zero whole number; floored at
690
+ * 0. The outcome is addressed by a STEP's `agentKey` (outcomes have no key of
691
+ * their own). */
622
692
  interface OutcomeAdjustInput {
623
- outcomeId: string;
693
+ /** An outcome step's stable agent key — identifies the parent outcome. */
694
+ agentKey: string;
624
695
  delta: number;
625
696
  notes?: string;
626
697
  }
627
- /** Grant/claw a unit balance. `delta` is non-zero (fractional allowed); floored at 0. */
698
+ /** Grant/claw a unit balance. `delta` is non-zero (fractional allowed); floored
699
+ * at 0. The unit is addressed by its stable `agentKey`. */
628
700
  interface UnitAdjustInput {
629
- unitId: string;
701
+ /** The unit's stable agent key (the same key used to record usage). */
702
+ agentKey: string;
630
703
  delta: number;
631
704
  notes?: string;
632
705
  }
@@ -640,6 +713,43 @@ interface ModelBundleEntry {
640
713
  output: number;
641
714
  cache: number;
642
715
  }
716
+ /** One point on a cost-over-time analytics series. */
717
+ interface CostPoint {
718
+ /** UTC day, `YYYY-MM-DD`. */
719
+ dateIso: string;
720
+ /** Short display label, e.g. "Jun 24". */
721
+ label: string;
722
+ /** Average cost that day, or `null` on days with no usage. */
723
+ cost: number | null;
724
+ reqs: number;
725
+ }
726
+ /** Summary stats across a cost-over-time series. */
727
+ interface CostStats {
728
+ activeDays: number;
729
+ avgCost: number | null;
730
+ peakCost: number | null;
731
+ troughCost: number | null;
732
+ deviationPct: number | null;
733
+ }
734
+ /** Cost-over-time analytics for a credit (`credits.get().analytics`). */
735
+ interface CreditAnalytics {
736
+ basePrice: number;
737
+ pricePerCredit: number;
738
+ marginPercent: number;
739
+ points: CostPoint[];
740
+ stats: CostStats;
741
+ }
742
+ /** Cost-over-time analytics for an outcome (`outcomes.get().analytics`).
743
+ * Each point adds `completions` (workflows finished that day). */
744
+ interface OutcomeAnalytics {
745
+ basePrice: number;
746
+ pricePerOutcome: number;
747
+ marginPercent: number;
748
+ points: (CostPoint & {
749
+ completions: number;
750
+ })[];
751
+ stats: CostStats;
752
+ }
643
753
  interface Credit {
644
754
  id: string;
645
755
  name: string;
@@ -664,8 +774,7 @@ interface CreditDetail extends Credit {
664
774
  revenue: number;
665
775
  usageLogCount: number;
666
776
  };
667
- /** Cost-over-time analytics; shape is server-defined. */
668
- analytics: Record<string, unknown>;
777
+ analytics: CreditAnalytics;
669
778
  }
670
779
  interface CreateCreditInput {
671
780
  name: string;
@@ -714,7 +823,7 @@ interface OutcomeDetail extends Outcome {
714
823
  completed: number;
715
824
  totalRemaining: number;
716
825
  };
717
- analytics: Record<string, unknown>;
826
+ analytics: OutcomeAnalytics;
718
827
  }
719
828
  interface CreateOutcomeInput {
720
829
  name: string;
@@ -742,6 +851,9 @@ interface UnitTier {
742
851
  }
743
852
  interface Unit {
744
853
  id: string;
854
+ /** Stable per-org report key — what `signals.unit({ agentKey })` sends.
855
+ * The ONLY identifier accepted when reporting unit consumption. */
856
+ agentKey: string;
745
857
  name: string;
746
858
  description: string | null;
747
859
  pricingType: UnitPricingType;
@@ -749,10 +861,23 @@ interface Unit {
749
861
  tiers: UnitTier[];
750
862
  isActive: boolean;
751
863
  createdAt: string;
864
+ createdByName: string | null;
865
+ }
866
+ /** One row in a unit's linked-customer sample (`units.get().customers`). */
867
+ interface UnitCustomerRow {
868
+ customerId: string;
869
+ name: string;
870
+ legalName: string | null;
871
+ slug: string;
872
+ logoUrl: string | null;
873
+ granted: number;
874
+ used: number;
875
+ remaining: number;
876
+ currentlyMetered: boolean;
752
877
  }
753
- /** `units.get()` — adds linked-customer sample plus stats. */
878
+ /** `units.get()` — adds linked-customer sample plus stats.
879
+ * `createdByName` is inherited from `Unit`. */
754
880
  interface UnitDetail extends Unit {
755
- createdByName: string | null;
756
881
  stats: {
757
882
  planCount: number;
758
883
  customerCount: number;
@@ -760,7 +885,7 @@ interface UnitDetail extends Unit {
760
885
  totalUsed: number;
761
886
  };
762
887
  /** First page (≤10) of customers currently metered on this unit. */
763
- customers: Record<string, unknown>[];
888
+ customers: UnitCustomerRow[];
764
889
  }
765
890
  /** Flat per-event pricing — a single `flatPrice` (defaults to 0), no tiers. */
766
891
  interface FlatUnitInput {
@@ -802,6 +927,22 @@ interface UnitInput {
802
927
  agentKey: string;
803
928
  member?: string;
804
929
  }
930
+ /** One serialized unit-consumption event — the result of `signals.unit()` and
931
+ * each element of `UnitUsageList.events`. */
932
+ interface SerializedUnitUsage {
933
+ id: string;
934
+ customerId: string;
935
+ /** Display name of the unit. */
936
+ unit: string;
937
+ /** The unit's stable agent key; `null` if the unit was deleted. */
938
+ agentKey: string | null;
939
+ billingMode: BillingMode;
940
+ /** Remaining ADVANCE allowance after this event; `null` for ARREAR. */
941
+ remaining: number | null;
942
+ customerCost: number;
943
+ member: string | null;
944
+ createdAt: string;
945
+ }
805
946
  interface UnitUsageRow {
806
947
  unit: string;
807
948
  /** The unit's stable agent key — what to send to report against it. */
@@ -817,7 +958,7 @@ interface UnitUsageList {
817
958
  name: string;
818
959
  };
819
960
  units: UnitUsageRow[];
820
- events: unknown[];
961
+ events: SerializedUnitUsage[];
821
962
  }
822
963
  type ThresholdKind = "CREDIT" | "OUTCOME" | "WALLET";
823
964
  interface Webhook {
@@ -959,12 +1100,12 @@ declare class Credits {
959
1100
  list(params?: {
960
1101
  active?: boolean;
961
1102
  }): Promise<Credit[]>;
962
- /** Create a credit type. `POST /api/v1/credits`. */
963
- create(input: CreateCreditInput): Promise<void>;
1103
+ /** Create a credit type; returns the created credit. `POST /api/v1/credits`. */
1104
+ create(input: CreateCreditInput): Promise<Credit>;
964
1105
  /** Fetch one credit type with usage stats. `GET /api/v1/credits/:id`. */
965
1106
  get(id: string): Promise<CreditDetail>;
966
- /** Update a credit type's definition. `PATCH /api/v1/credits/:id`. */
967
- update(id: string, input: UpdateCreditInput): Promise<void>;
1107
+ /** Update a credit type's definition; returns the updated credit. `PATCH /api/v1/credits/:id`. */
1108
+ update(id: string, input: UpdateCreditInput): Promise<Credit>;
968
1109
  /** Activate or deactivate a credit type. */
969
1110
  setActive(id: string, isActive: boolean): Promise<Credit>;
970
1111
  /** Delete a credit type. Refused while a customer is linked to it. */
@@ -973,9 +1114,9 @@ declare class Credits {
973
1114
 
974
1115
  /**
975
1116
  * The `customers` resource — full CRUD over the org's customers plus the
976
- * read-only insight endpoints (usage / balances / plan / revenue). Every call
977
- * is scoped to the API key's organisation server-side; a customer in another
978
- * org resolves as a NotFoundError.
1117
+ * read-only insight endpoints (usage / balances / plan). Every call is scoped
1118
+ * to the API key's organisation server-side; a customer in another org
1119
+ * resolves as a NotFoundError.
979
1120
  */
980
1121
  declare class Customers {
981
1122
  private readonly transport;
@@ -1002,18 +1143,39 @@ declare class Customers {
1002
1143
  update(id: string, input: CustomerProfileInput): Promise<ApiCustomer>;
1003
1144
  /** Delete a customer (members, invitations, usage logs cascade). */
1004
1145
  delete(id: string): Promise<void>;
1005
- /** A customer's usage history. `GET /api/v1/customers/:id/usage`. */
1146
+ /** A customer's usage history. `GET /api/v1/usage?customerId=`. */
1006
1147
  usage(id: string, params?: {
1007
1148
  limit?: number;
1008
1149
  }): Promise<UsageList>;
1009
1150
  /** Wallet / credit / outcome / unit balances. `GET …/:id/balances`. */
1010
1151
  balances(id: string): Promise<CustomerBalances>;
1152
+ /**
1153
+ * One credit balance for a customer, matched by `creditId` or `creditName`;
1154
+ * `null` when the customer has no plan or no matching credit. Convenience
1155
+ * over `balances()` + `Array.find` — it fetches the FULL balances under the
1156
+ * hood (there is no server-side scoped read), so prefer `balances()` when you
1157
+ * need several rows from the same customer.
1158
+ */
1159
+ creditBalance(customerId: string, match: {
1160
+ creditId?: string;
1161
+ creditName?: string;
1162
+ }): Promise<CreditBalance | null>;
1163
+ /** One outcome balance for a customer, matched by `outcomeId` or
1164
+ * `outcomeName`; `null` when absent. See {@link creditBalance} for the
1165
+ * fetch-then-filter caveat. */
1166
+ outcomeBalance(customerId: string, match: {
1167
+ outcomeId?: string;
1168
+ outcomeName?: string;
1169
+ }): Promise<OutcomeBalance | null>;
1170
+ /** One unit balance for a customer, matched by `unitId` or `unitName`;
1171
+ * `null` when absent. See {@link creditBalance} for the fetch-then-filter
1172
+ * caveat. */
1173
+ unitBalance(customerId: string, match: {
1174
+ unitId?: string;
1175
+ unitName?: string;
1176
+ }): Promise<UnitBalance | null>;
1011
1177
  /** The customer's current plan. `GET …/:id/plan`. */
1012
1178
  plan(id: string): Promise<CustomerPlan>;
1013
- /** Revenue / cost / profit / margin over a window. `GET …/:id/revenue`. */
1014
- revenue(id: string, params?: {
1015
- range?: RevenueRange;
1016
- }): Promise<CustomerRevenue>;
1017
1179
  /** List a customer's members. `GET …/:id/members`. */
1018
1180
  listMembers(id: string): Promise<Member[]>;
1019
1181
  /** Add a member to a customer. Duplicate `employeeId` → ConflictError. */
@@ -1087,8 +1249,8 @@ declare class Outcomes {
1087
1249
  get(id: string): Promise<OutcomeDetail>;
1088
1250
  /** Update an outcome type's definition. `PATCH /api/v1/outcomes/:id`. */
1089
1251
  update(id: string, input: UpdateOutcomeInput): Promise<Outcome>;
1090
- /** Activate or deactivate an outcome type. */
1091
- setActive(id: string, isActive: boolean): Promise<void>;
1252
+ /** Activate or deactivate an outcome type; returns the updated outcome. */
1253
+ setActive(id: string, isActive: boolean): Promise<Outcome>;
1092
1254
  /** Delete an outcome type. */
1093
1255
  delete(id: string): Promise<void>;
1094
1256
  }
@@ -1263,7 +1425,7 @@ declare class Signals {
1263
1425
  * events are not buffered. `POST /api/v1/units`.
1264
1426
  */
1265
1427
  unit(input: UnitInput): Promise<{
1266
- unitUsage: Record<string, unknown>;
1428
+ unitUsage: SerializedUnitUsage;
1267
1429
  }>;
1268
1430
  /** A customer's unit balances + recent unit events. `GET /api/v1/units`. */
1269
1431
  unitUsage(params: {
@@ -1430,4 +1592,4 @@ declare class NetworkError extends ClockNextError {
1430
1592
  constructor(message: string);
1431
1593
  }
1432
1594
 
1433
- export { type AddMemberInput, AllowanceError, type ApiCustomer, AuthError, type BillingCycle, type BillingMode, ClockNext, type ClockNextConfig, ClockNextError, type ComponentType, ConflictError, type CreateCreditInput, type CreateCustomerInput, type CreateOutcomeInput, type CreatePlanInput, type CreatePurchaseInput, type CreateUnitInput, type Credit, type CreditAdjustInput, type CreditComponentInput, type CreditDetail, type CreditInput, type CreditSignal, type CustomerBalances, type CustomerList, type CustomerPlan, type CustomerProfileInput, type CustomerRevenue, type DropReason, type FetchLike, type FlatComponentInput, type FlatUnitInput, type Invoice, type InvoiceDetail, type InvoiceLineItem, type InvoiceListRow, type InvoiceParty, type InvoicePlanSnapshot, type InvoiceStatus, type Logger, type Member, type MemberRole, type Model, type ModelBundleEntry, NetworkError, NotFoundError, type Outcome, type OutcomeAdjustInput, type OutcomeComponentInput, type OutcomeDetail, type OutcomeInput, type OutcomeSignal, type OutcomeStepInput, type PayLink, type PaymentDetail, type PaymentRow, type Plan, type PlanComponent, type PlanComponentInput, type PlanDetail, PlanError, type PlanKind, type PlanRef, type PlanType, type PortalToken, type PortalTokenInput, type Purchase, type PurchaseDetail, type PurchaseStatus, RateLimitError, type RevenueRange, type SerializedOutcomeAttribution, type SerializedRuleApplication, type SerializedUsageLog, ServerError, type Signal, type SignalStatus, type SignalType, type ThresholdKind, type TieredUnitInput, type Tokens, type TrackResult, type Unit, type UnitAdjustInput, type UnitComponentInput, type UnitDetail, type UnitInput, type UnitPricingType, type UnitTier, type UnitTierInput, type UnitUsageList, type UnitUsageRow, type UpdateCreditInput, type UpdateMemberInput, type UpdateOutcomeInput, type UpdatePlanInput, type UpdateUnitInput, type UpsertWebhookInput, type UsageList, ValidationError, type WalletComponentInput, type WalletEntryInput, type WalletInput, type WalletList, type WalletSignal, type WalletTransaction, type WalletTransactionType, type Webhook, type WorkspaceIdentity, signalToWire };
1595
+ export { type AddMemberInput, AllowanceError, type ApiCustomer, AuthError, type BillingCycle, type BillingMode, ClockNext, type ClockNextConfig, ClockNextError, type ComponentType, ConflictError, type CostPoint, type CostStats, type CreateCreditInput, type CreateCustomerInput, type CreateOutcomeInput, type CreatePlanInput, type CreatePurchaseInput, type CreateUnitInput, type Credit, type CreditAdjustInput, type CreditAnalytics, type CreditBalance, type CreditComponentInput, type CreditDetail, type CreditInput, type CreditSignal, type CustomerBalances, type CustomerList, type CustomerPlan, type CustomerPlanDetails, type CustomerProfileInput, type DropReason, type FetchLike, type FlatComponentInput, type FlatUnitInput, type Invoice, type InvoiceDetail, type InvoiceLineItem, type InvoiceListRow, type InvoiceParty, type InvoicePlanSnapshot, type InvoiceStatus, type Logger, type Member, type MemberRole, type Model, type ModelBundleEntry, NetworkError, NotFoundError, type Outcome, type OutcomeAdjustInput, type OutcomeAnalytics, type OutcomeBalance, type OutcomeComponentInput, type OutcomeDetail, type OutcomeInput, type OutcomeSignal, type OutcomeStepInput, type PayLink, type PaymentDetail, type PaymentRow, type Plan, type PlanComponent, type PlanComponentInput, type PlanDetail, PlanError, type PlanKind, type PlanRef, type PlanType, type PortalToken, type PortalTokenInput, type Purchase, type PurchaseDetail, type PurchaseStatus, RateLimitError, type SerializedOutcomeAttribution, type SerializedRuleApplication, type SerializedUnitUsage, type SerializedUsageLog, ServerError, type Signal, type SignalStatus, type SignalType, type ThresholdKind, type TieredUnitInput, type Tokens, type TrackResult, type Unit, type UnitAdjustInput, type UnitBalance, type UnitComponentInput, type UnitCustomerRow, type UnitDetail, type UnitInput, type UnitPricingType, type UnitTier, type UnitTierInput, type UnitUsageList, type UnitUsageRow, type UpdateCreditInput, type UpdateMemberInput, type UpdateOutcomeInput, type UpdatePlanInput, type UpdateUnitInput, type UpsertWebhookInput, type UsageBalance, type UsageList, ValidationError, type WalletComponentInput, type WalletEntryInput, type WalletInput, type WalletList, type WalletSignal, type WalletTransaction, type WalletTransactionType, type Webhook, type WorkspaceIdentity, signalToWire };