mcp-usage-control 1.0.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 (47) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +141 -0
  3. package/dist/index.d.ts +533 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +2131 -0
  6. package/dist/index.js.map +1 -0
  7. package/dist/observability.d.ts +154 -0
  8. package/dist/observability.d.ts.map +1 -0
  9. package/dist/observability.js +171 -0
  10. package/dist/observability.js.map +1 -0
  11. package/dist/operational.d.ts +87 -0
  12. package/dist/operational.d.ts.map +1 -0
  13. package/dist/operational.js +193 -0
  14. package/dist/operational.js.map +1 -0
  15. package/dist/progressive-store-conformance.d.ts +4 -0
  16. package/dist/progressive-store-conformance.d.ts.map +1 -0
  17. package/dist/progressive-store-conformance.js +333 -0
  18. package/dist/progressive-store-conformance.js.map +1 -0
  19. package/dist/reconciliation-conformance.d.ts +36 -0
  20. package/dist/reconciliation-conformance.d.ts.map +1 -0
  21. package/dist/reconciliation-conformance.js +211 -0
  22. package/dist/reconciliation-conformance.js.map +1 -0
  23. package/dist/settlement-outcomes.d.ts +24 -0
  24. package/dist/settlement-outcomes.d.ts.map +1 -0
  25. package/dist/settlement-outcomes.js +68 -0
  26. package/dist/settlement-outcomes.js.map +1 -0
  27. package/dist/store-conformance.d.ts +50 -0
  28. package/dist/store-conformance.d.ts.map +1 -0
  29. package/dist/store-conformance.js +378 -0
  30. package/dist/store-conformance.js.map +1 -0
  31. package/dist/thresholds.d.ts +26 -0
  32. package/dist/thresholds.d.ts.map +1 -0
  33. package/dist/thresholds.js +56 -0
  34. package/dist/thresholds.js.map +1 -0
  35. package/dist/vector-store-conformance.d.ts +4 -0
  36. package/dist/vector-store-conformance.d.ts.map +1 -0
  37. package/dist/vector-store-conformance.js +297 -0
  38. package/dist/vector-store-conformance.js.map +1 -0
  39. package/dist/weighted-credits.d.ts +41 -0
  40. package/dist/weighted-credits.d.ts.map +1 -0
  41. package/dist/weighted-credits.js +143 -0
  42. package/dist/weighted-credits.js.map +1 -0
  43. package/dist/windowed-budget-keys.d.ts +36 -0
  44. package/dist/windowed-budget-keys.d.ts.map +1 -0
  45. package/dist/windowed-budget-keys.js +178 -0
  46. package/dist/windowed-budget-keys.js.map +1 -0
  47. package/package.json +113 -0
@@ -0,0 +1,533 @@
1
+ import { type UsageEventMetadata, type UsageObserver } from './observability.js';
2
+ export * from './observability.js';
3
+ export * from './weighted-credits.js';
4
+ export * from './windowed-budget-keys.js';
5
+ export declare const USAGE_INPUT_LIMITS: Readonly<{
6
+ identifierBytes: 1024;
7
+ scalarBudgets: 64;
8
+ vectorDimensions: 32;
9
+ vectorBudgetsPerDimension: 32;
10
+ vectorBudgetsTotal: 128;
11
+ }>;
12
+ export declare function assertUsageIdentifier(value: unknown, name: string): asserts value is string;
13
+ export declare function validateUsageRequestEnvelope(request: UsageRequest): void;
14
+ export declare function validateUsageBudgetEnvelope(budgets: readonly Budget[]): void;
15
+ export declare function validateUsageVectorEnvelope(dimensions: readonly UsageDimension[]): void;
16
+ export declare function validateUsageVectorGrowthEnvelope(dimensions: readonly UsageDimensionGrowth[]): void;
17
+ export interface Principal {
18
+ id: string;
19
+ tenantId?: string;
20
+ plan?: string;
21
+ }
22
+ export interface UsageRequest<TArgs = unknown> {
23
+ operationId: string;
24
+ principal: Principal;
25
+ tool: string;
26
+ args: TArgs;
27
+ }
28
+ export interface Budget {
29
+ key: string;
30
+ limit: number;
31
+ }
32
+ export interface BudgetRemaining {
33
+ key: string;
34
+ remaining: number;
35
+ }
36
+ /** One metering dimension inside a single logical vector admission. */
37
+ export interface UsageDimension {
38
+ key: string;
39
+ units: number;
40
+ budgets: readonly Budget[];
41
+ }
42
+ export interface UsageDimensionGrowth {
43
+ key: string;
44
+ additionalUnits: number;
45
+ budgets: readonly Budget[];
46
+ }
47
+ export interface UsageDimensionActual {
48
+ key: string;
49
+ actualUnits: number;
50
+ }
51
+ export interface UsageDimensionReserved {
52
+ key: string;
53
+ reservedUnits: number;
54
+ }
55
+ /** Current balance for one budget, qualified by its vector dimension. */
56
+ export interface VectorBudgetRemaining {
57
+ dimensionKey: string;
58
+ budgetKey: string;
59
+ remaining: number;
60
+ }
61
+ export interface VectorReservationDimension {
62
+ key: string;
63
+ budgetKeys: string[];
64
+ reservedUnits: number;
65
+ }
66
+ export interface VectorReservationRecord {
67
+ id: string;
68
+ operationId: string;
69
+ principalId: string;
70
+ tenantId?: string;
71
+ plan?: string;
72
+ tool: string;
73
+ dimensions: VectorReservationDimension[];
74
+ expiresAt: number;
75
+ /** One opaque replay fence serializes growth across the whole vector. */
76
+ growthCursor?: string;
77
+ }
78
+ export type VectorUsageQuote = {
79
+ decision: 'allow';
80
+ dimensions: readonly UsageDimension[];
81
+ reservationTtlMs?: number;
82
+ } | {
83
+ decision: 'deny';
84
+ reason: string;
85
+ };
86
+ export interface VectorUsagePolicy {
87
+ quote(request: UsageRequest): VectorUsageQuote | Promise<VectorUsageQuote>;
88
+ }
89
+ type AllowUsageQuoteBase = {
90
+ decision: 'allow';
91
+ units: number;
92
+ reservationTtlMs?: number;
93
+ };
94
+ /**
95
+ * `budgets` is the v0.1 form. `budget` remains accepted as a source-compatibility
96
+ * convenience for single-budget callers and is normalized to a one-element list.
97
+ */
98
+ export type UsageQuote = (AllowUsageQuoteBase & {
99
+ budgets: readonly Budget[];
100
+ budget?: never;
101
+ }) | (AllowUsageQuoteBase & {
102
+ budget: Budget;
103
+ budgets?: never;
104
+ }) | {
105
+ decision: 'deny';
106
+ reason: string;
107
+ };
108
+ export interface UsagePolicy {
109
+ quote(request: UsageRequest): UsageQuote | Promise<UsageQuote>;
110
+ }
111
+ export interface ReservationRecord {
112
+ id: string;
113
+ operationId: string;
114
+ principalId: string;
115
+ tenantId?: string;
116
+ plan?: string;
117
+ tool: string;
118
+ budgetKeys: string[];
119
+ reservedUnits: number;
120
+ expiresAt: number;
121
+ /** Opaque replay fence present only on reservations created by growth-capable Stores. */
122
+ growthCursor?: string;
123
+ }
124
+ export type StoreReserveResult = {
125
+ accepted: true;
126
+ reservation: ReservationRecord;
127
+ remainingByBudget: BudgetRemaining[];
128
+ } | {
129
+ accepted: false;
130
+ reason: 'quota_exceeded' | 'duplicate_operation';
131
+ limitingBudgetKey?: string;
132
+ remaining?: number;
133
+ };
134
+ export interface MarkLiableInput {
135
+ reservationId: string;
136
+ }
137
+ export interface MarkLiableResult {
138
+ reservationId: string;
139
+ expiresAt: number;
140
+ }
141
+ export interface RenewInput {
142
+ reservationId: string;
143
+ ttlMs: number;
144
+ }
145
+ export interface RenewResult {
146
+ reservationId: string;
147
+ expiresAt: number;
148
+ }
149
+ export interface SettleInput {
150
+ reservationId: string;
151
+ actualUnits: number;
152
+ outcome: string;
153
+ }
154
+ export interface SettlementResult {
155
+ reservationId: string;
156
+ reservedUnits: number;
157
+ actualUnits: number;
158
+ releasedUnits: number;
159
+ outcome: string;
160
+ }
161
+ export interface UsageOperationReconciliationInput {
162
+ /** The exact trusted logical operation identity of the scalar reservation being reconciled. */
163
+ request: UsageRequest;
164
+ /** The expected currently retained scalar reserved units. */
165
+ units: number;
166
+ /** Expected budget identities. Limits are current policy inputs, not historical retained state. */
167
+ budgets: readonly Budget[];
168
+ }
169
+ /**
170
+ * Read-only authoritative status for one retained scalar logical operation.
171
+ *
172
+ * `absent` means only that the Store has no retained state at lookup time. It is
173
+ * not proof that the operation never existed once the Store's retention horizon
174
+ * may have elapsed, so callers must not turn `absent` into an automatic replay.
175
+ */
176
+ export type UsageOperationReconciliation = {
177
+ status: 'absent';
178
+ reservationId: string;
179
+ } | {
180
+ status: 'active';
181
+ state: 'pending' | 'liable';
182
+ reservation: ReservationRecord;
183
+ } | {
184
+ status: 'expired';
185
+ state: 'pending' | 'liable';
186
+ reservationId: string;
187
+ expiredAt: number;
188
+ } | {
189
+ status: 'settled';
190
+ reservationId: string;
191
+ reservedUnits: number;
192
+ actualUnits: number;
193
+ tombstoneExpiresAt: number;
194
+ };
195
+ export interface VectorUsageOperationReconciliationInput {
196
+ /** Exact trusted logical operation identity of the vector reservation being reconciled. */
197
+ request: UsageRequest;
198
+ /** Expected vector topology and currently retained reserved units. */
199
+ dimensions: readonly UsageDimension[];
200
+ }
201
+ /** Read-only authoritative status for one retained vector logical operation. */
202
+ export type VectorUsageOperationReconciliation = {
203
+ status: 'absent';
204
+ reservationId: string;
205
+ } | {
206
+ status: 'active';
207
+ state: 'pending' | 'liable';
208
+ reservation: VectorReservationRecord;
209
+ } | {
210
+ status: 'expired';
211
+ state: 'pending' | 'liable';
212
+ reservationId: string;
213
+ expiredAt: number;
214
+ } | {
215
+ status: 'settled';
216
+ reservationId: string;
217
+ reservedByDimension: UsageDimensionReserved[];
218
+ actualByDimension: UsageDimensionActual[];
219
+ tombstoneExpiresAt: number;
220
+ };
221
+ export interface UsageStore {
222
+ reserve(input: {
223
+ request: UsageRequest;
224
+ units: number;
225
+ budgets: readonly Budget[];
226
+ ttlMs: number;
227
+ }): Promise<StoreReserveResult>;
228
+ markLiable(input: MarkLiableInput): Promise<MarkLiableResult>;
229
+ renew(input: RenewInput): Promise<RenewResult>;
230
+ settle(input: SettleInput): Promise<SettlementResult>;
231
+ }
232
+ /** Optional scalar-only read capability; it never admits, renews, releases, or settles usage. */
233
+ export interface OperationReconciliationStore extends UsageStore {
234
+ reconcileOperation(input: UsageOperationReconciliationInput): Promise<UsageOperationReconciliation>;
235
+ }
236
+ export interface GrowReservationInput {
237
+ reservationId: string;
238
+ incrementId: string;
239
+ expectedGrowthCursor: string;
240
+ additionalUnits: number;
241
+ budgets: readonly Budget[];
242
+ }
243
+ export type StoreGrowResult = {
244
+ accepted: true;
245
+ replayed: boolean;
246
+ reservationId: string;
247
+ incrementId: string;
248
+ previousReservedUnits: number;
249
+ reservedUnits: number;
250
+ growthCursor: string;
251
+ remainingByBudget: BudgetRemaining[];
252
+ } | {
253
+ accepted: false;
254
+ reason: 'quota_exceeded';
255
+ replayed: boolean;
256
+ reservationId: string;
257
+ incrementId: string;
258
+ growthCursor: string;
259
+ limitingBudgetKey: string;
260
+ remaining: number;
261
+ };
262
+ /** Optional Store capability. Existing fixed-reservation UsageStore implementations remain valid. */
263
+ export interface ProgressiveUsageStore extends UsageStore {
264
+ growReservation(input: GrowReservationInput): Promise<StoreGrowResult>;
265
+ }
266
+ export interface ReservationGrowthRequest {
267
+ incrementId: string;
268
+ additionalUnits: number;
269
+ budgets: readonly Budget[];
270
+ }
271
+ export interface VectorReserveInput {
272
+ request: UsageRequest;
273
+ dimensions: readonly UsageDimension[];
274
+ ttlMs: number;
275
+ }
276
+ export type StoreVectorReserveResult = {
277
+ accepted: true;
278
+ reservation: VectorReservationRecord;
279
+ remainingByBudget: VectorBudgetRemaining[];
280
+ } | {
281
+ accepted: false;
282
+ reason: 'quota_exceeded' | 'duplicate_operation';
283
+ limitingDimensionKey?: string;
284
+ limitingBudgetKey?: string;
285
+ remaining?: number;
286
+ };
287
+ export interface VectorGrowReservationInput {
288
+ reservationId: string;
289
+ incrementId: string;
290
+ expectedGrowthCursor: string;
291
+ dimensions: readonly UsageDimensionGrowth[];
292
+ }
293
+ export type StoreVectorGrowResult = {
294
+ accepted: true;
295
+ replayed: boolean;
296
+ reservationId: string;
297
+ incrementId: string;
298
+ previousReservedByDimension: UsageDimensionReserved[];
299
+ reservedByDimension: UsageDimensionReserved[];
300
+ growthCursor: string;
301
+ remainingByBudget: VectorBudgetRemaining[];
302
+ } | {
303
+ accepted: false;
304
+ reason: 'quota_exceeded';
305
+ replayed: boolean;
306
+ reservationId: string;
307
+ incrementId: string;
308
+ growthCursor: string;
309
+ limitingDimensionKey: string;
310
+ limitingBudgetKey: string;
311
+ remaining: number;
312
+ };
313
+ export interface VectorSettleInput {
314
+ reservationId: string;
315
+ actualByDimension: readonly UsageDimensionActual[];
316
+ outcome: string;
317
+ }
318
+ export interface VectorSettlementDimension {
319
+ key: string;
320
+ reservedUnits: number;
321
+ actualUnits: number;
322
+ releasedUnits: number;
323
+ }
324
+ export interface VectorSettlementResult {
325
+ reservationId: string;
326
+ dimensions: VectorSettlementDimension[];
327
+ outcome: string;
328
+ }
329
+ /**
330
+ * Optional atomic vector capability. Scalar UsageStore methods remain unchanged.
331
+ * Implementations must keep scalar and vector reservations in one operation-idempotency domain.
332
+ */
333
+ export interface VectorUsageStore extends UsageStore {
334
+ reserveVector(input: VectorReserveInput): Promise<StoreVectorReserveResult>;
335
+ growVectorReservation(input: VectorGrowReservationInput): Promise<StoreVectorGrowResult>;
336
+ settleVector(input: VectorSettleInput): Promise<VectorSettlementResult>;
337
+ }
338
+ /** Optional read-only vector lost-ACK reconciliation capability. */
339
+ export interface VectorOperationReconciliationStore extends VectorUsageStore {
340
+ reconcileVectorOperation(input: VectorUsageOperationReconciliationInput): Promise<VectorUsageOperationReconciliation>;
341
+ }
342
+ export interface VectorReservationGrowthRequest {
343
+ incrementId: string;
344
+ dimensions: readonly UsageDimensionGrowth[];
345
+ }
346
+ export type VectorAdmissionResult = {
347
+ allowed: true;
348
+ lease: VectorUsageLease;
349
+ remainingByBudget: VectorBudgetRemaining[];
350
+ } | {
351
+ allowed: false;
352
+ reason: string;
353
+ limitingDimensionKey?: string;
354
+ limitingBudgetKey?: string;
355
+ remaining?: number;
356
+ };
357
+ export type AdmissionResult = {
358
+ allowed: true;
359
+ lease: UsageLease;
360
+ remainingByBudget: BudgetRemaining[];
361
+ } | {
362
+ allowed: false;
363
+ reason: string;
364
+ limitingBudgetKey?: string;
365
+ remaining?: number;
366
+ };
367
+ export declare class UsageStateError extends Error {
368
+ constructor(message: string);
369
+ }
370
+ export declare class UsageDeniedError extends Error {
371
+ readonly reason: string;
372
+ constructor(reason: string);
373
+ }
374
+ export interface UsageControlOptions {
375
+ defaultReservationTtlMs?: number;
376
+ observer?: UsageObserver;
377
+ /** Explicit metadata only. Request args are never copied into events automatically. */
378
+ metadata?: UsageEventMetadata | ((request: UsageRequest) => UsageEventMetadata | undefined);
379
+ }
380
+ /**
381
+ * Serializable server-side state required to reattach to an already-reserved lease.
382
+ *
383
+ * This state is trusted application data, not a client credential. Do not send it to
384
+ * an untrusted client. Adapters that need a client round-trip should keep this state
385
+ * server-side and expose only an integrity-protected opaque reference.
386
+ */
387
+ export interface UsageLeaseResumeState {
388
+ reservation: ReservationRecord;
389
+ ttlMs: number;
390
+ metadata?: UsageEventMetadata;
391
+ /** Retained only after an ambiguous growth call so the same attempt must be retried. */
392
+ unresolvedGrowth?: ReservationGrowthRequest;
393
+ }
394
+ export interface VectorUsageLeaseResumeState {
395
+ reservation: VectorReservationRecord;
396
+ ttlMs: number;
397
+ metadata?: UsageEventMetadata;
398
+ /** Retained only after an ambiguous vector growth call so exact retry is mandatory. */
399
+ unresolvedGrowth?: VectorReservationGrowthRequest;
400
+ }
401
+ export declare class UsageLease {
402
+ private readonly store;
403
+ readonly reservation: ReservationRecord;
404
+ readonly ttlMs: number;
405
+ private readonly observer?;
406
+ private readonly metadata?;
407
+ private unresolvedGrowth;
408
+ constructor(store: UsageStore, reservation: ReservationRecord, ttlMs: number, observer?: UsageObserver, metadata?: UsageEventMetadata | undefined, unresolvedGrowth?: ReservationGrowthRequest);
409
+ get reservedUnits(): number;
410
+ /** Export a detached snapshot for trusted server-side suspend/resume workflows. */
411
+ toResumeState(): UsageLeaseResumeState;
412
+ /**
413
+ * Increase capacity on the same logical reservation.
414
+ *
415
+ * A thrown Store/provider error is ambiguous. After one, this lease permits only an exact
416
+ * retry of the same increment until an authoritative accepted/denied result is returned.
417
+ */
418
+ grow(input: ReservationGrowthRequest): Promise<StoreGrowResult>;
419
+ markLiable(): Promise<MarkLiableResult>;
420
+ renew(ttlMs?: number): Promise<RenewResult>;
421
+ settle(actualUnits: number, outcome: string): Promise<SettlementResult>;
422
+ }
423
+ export declare class VectorUsageLease {
424
+ private readonly store;
425
+ readonly reservation: VectorReservationRecord;
426
+ readonly ttlMs: number;
427
+ private readonly observer?;
428
+ private readonly metadata?;
429
+ private unresolvedGrowth;
430
+ constructor(store: UsageStore, reservation: VectorReservationRecord, ttlMs: number, observer?: UsageObserver, metadata?: UsageEventMetadata | undefined, unresolvedGrowth?: VectorReservationGrowthRequest);
431
+ get reservedByDimension(): UsageDimensionReserved[];
432
+ toResumeState(): VectorUsageLeaseResumeState;
433
+ grow(input: VectorReservationGrowthRequest): Promise<StoreVectorGrowResult>;
434
+ markLiable(): Promise<MarkLiableResult>;
435
+ renew(ttlMs?: number): Promise<RenewResult>;
436
+ settle(actualByDimension: readonly UsageDimensionActual[], outcome: string): Promise<VectorSettlementResult>;
437
+ }
438
+ export declare class UsageControl {
439
+ private readonly store;
440
+ private readonly policy;
441
+ private readonly defaultReservationTtlMs;
442
+ private readonly observer?;
443
+ private readonly metadata?;
444
+ constructor(store: UsageStore, policy: UsagePolicy, optionsOrTtl?: number | UsageControlOptions);
445
+ /**
446
+ * Reattach to an existing reservation without calling policy.quote() or reserve().
447
+ *
448
+ * The caller must obtain `state` from a trusted server-side `UsageLease` snapshot.
449
+ * The underlying store remains authoritative: the first renew/settle still fails
450
+ * closed if the reservation expired, was settled, or otherwise conflicts.
451
+ */
452
+ resumeLease(state: UsageLeaseResumeState): UsageLease;
453
+ reserve<TArgs>(request: UsageRequest<TArgs>): Promise<AdmissionResult>;
454
+ }
455
+ export declare class VectorUsageControl {
456
+ private readonly store;
457
+ private readonly policy;
458
+ private readonly defaultReservationTtlMs;
459
+ private readonly observer?;
460
+ private readonly metadata?;
461
+ constructor(store: UsageStore, policy: VectorUsagePolicy, optionsOrTtl?: number | UsageControlOptions);
462
+ resumeLease(state: VectorUsageLeaseResumeState): VectorUsageLease;
463
+ reserve<TArgs>(request: UsageRequest<TArgs>): Promise<VectorAdmissionResult>;
464
+ }
465
+ export interface MemoryUsageStoreOptions {
466
+ /** How long a settled operation remains replay-protected. Defaults to 24 hours. */
467
+ idempotencyTtlMs?: number;
468
+ /**
469
+ * Maximum active reservations plus settled replay tombstones retained in-process.
470
+ * Defaults to 100,000. Capacity exhaustion fails closed instead of evicting state.
471
+ */
472
+ maxRetainedOperations?: number;
473
+ /**
474
+ * Maximum distinct budget keys with non-zero retained usage. Defaults to 100,000.
475
+ * Capacity exhaustion fails closed instead of silently resetting a budget.
476
+ */
477
+ maxRetainedBudgetKeys?: number;
478
+ /** Optional best-effort observer for expiry/recovery events. */
479
+ observer?: UsageObserver;
480
+ }
481
+ export interface MemoryUsageStoreStats {
482
+ retainedOperations: number;
483
+ retainedBudgetKeys: number;
484
+ maxRetainedOperations: number;
485
+ maxRetainedBudgetKeys: number;
486
+ }
487
+ export declare class MemoryUsageStoreCapacityError extends UsageStateError {
488
+ readonly resource: 'operations' | 'budget_keys';
489
+ readonly limit: number;
490
+ constructor(resource: 'operations' | 'budget_keys', limit: number);
491
+ }
492
+ export declare class MemoryUsageStore implements ProgressiveUsageStore, VectorOperationReconciliationStore, OperationReconciliationStore {
493
+ private readonly used;
494
+ private readonly reservations;
495
+ private readonly operations;
496
+ private readonly idempotencyTtlMs;
497
+ private readonly maxRetainedOperations;
498
+ private readonly maxRetainedBudgetKeys;
499
+ private readonly observer?;
500
+ private nextRecoveryAt;
501
+ constructor(options?: MemoryUsageStoreOptions);
502
+ /** Current bounded-retention counters for health checks and operational monitoring. */
503
+ stats(): MemoryUsageStoreStats;
504
+ /**
505
+ * Explicitly retire one budget key after its accounting window is permanently over.
506
+ *
507
+ * This is never automatic because forgetting non-zero usage can reset quota semantics.
508
+ * Active reservations block retirement. Callers must ensure the same key will not later
509
+ * be reused for the same accounting window.
510
+ */
511
+ retireBudgetKey(budgetKey: string): boolean;
512
+ reconcileOperation(input: UsageOperationReconciliationInput): Promise<UsageOperationReconciliation>;
513
+ reconcileVectorOperation(input: VectorUsageOperationReconciliationInput): Promise<VectorUsageOperationReconciliation>;
514
+ reserve(input: {
515
+ request: UsageRequest;
516
+ units: number;
517
+ budgets: readonly Budget[];
518
+ ttlMs: number;
519
+ }): Promise<StoreReserveResult>;
520
+ reserveVector(input: VectorReserveInput): Promise<StoreVectorReserveResult>;
521
+ growVectorReservation(input: VectorGrowReservationInput): Promise<StoreVectorGrowResult>;
522
+ settleVector(input: VectorSettleInput): Promise<VectorSettlementResult>;
523
+ markLiable(input: MarkLiableInput): Promise<MarkLiableResult>;
524
+ growReservation(input: GrowReservationInput): Promise<StoreGrowResult>;
525
+ renew(input: RenewInput): Promise<RenewResult>;
526
+ settle(input: SettleInput): Promise<SettlementResult>;
527
+ private recoverExpired;
528
+ private assertOperationCapacity;
529
+ private assertBudgetCapacity;
530
+ private trackRecoveryAt;
531
+ private releaseAcrossBudgets;
532
+ }
533
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAE5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,2BAA2B,CAAC;AAE1C,eAAO,MAAM,kBAAkB;;;;;;EAM7B,CAAC;AAEH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM,CAO3F;AAED,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI,CAgBxE;AAED,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAY5E;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,SAAS,cAAc,EAAE,GAAG,IAAI,CA4BvF;AAED,wBAAgB,iCAAiC,CAAC,UAAU,EAAE,SAAS,oBAAoB,EAAE,GAAG,IAAI,CAMnG;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY,CAAC,KAAK,GAAG,OAAO;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,KAAK,CAAC;CACb;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,uEAAuE;AACvE,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,yEAAyE;AACzE,MAAM,WAAW,qBAAqB;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA0B;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,0BAA0B,EAAE,CAAC;IACzC,SAAS,EAAE,MAAM,CAAC;IAClB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,gBAAgB,GACxB;IACE,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IACtC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,GACD;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC5E;AAED,KAAK,mBAAmB,GAAG;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,UAAU,GAClB,CAAC,mBAAmB,GAAG;IAAE,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GACtE,CAAC,mBAAmB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,KAAK,CAAA;CAAE,CAAC,GAC3D;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,yFAAyF;IACzF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,kBAAkB,GAC1B;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,iBAAiB,CAAC;IAC/B,iBAAiB,EAAE,eAAe,EAAE,CAAC;CACtC,GACD;IACE,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,CAAC;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iCAAiC;IAChD,+FAA+F;IAC/F,OAAO,EAAE,YAAY,CAAC;IACtB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,4BAA4B,GACpC;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC3C;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,WAAW,EAAE,iBAAiB,CAAC;CAChC,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAGN,MAAM,WAAW,uCAAuC;IACtD,2FAA2F;IAC3F,OAAO,EAAE,YAAY,CAAC;IACtB,sEAAsE;IACtE,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;CACvC;AAED,gFAAgF;AAChF,MAAM,MAAM,kCAAkC,GAC1C;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,GAC3C;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,WAAW,EAAE,uBAAuB,CAAC;CACtC,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,SAAS,GAAG,QAAQ,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CACnB,GACD;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,mBAAmB,EAAE,sBAAsB,EAAE,CAAC;IAC9C,iBAAiB,EAAE,oBAAoB,EAAE,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEN,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,KAAK,EAAE;QACb,OAAO,EAAE,YAAY,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAChC,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9D,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;CACvD;AAED,iGAAiG;AACjG,MAAM,WAAW,4BAA6B,SAAQ,UAAU;IAC9D,kBAAkB,CAChB,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,4BAA4B,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,eAAe,GACvB;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,eAAe,EAAE,CAAC;CACtC,GACD;IACE,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,qGAAqG;AACrG,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;CACxE;AAED,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,YAAY,CAAC;IACtB,UAAU,EAAE,SAAS,cAAc,EAAE,CAAC;IACtC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,wBAAwB,GAChC;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,uBAAuB,CAAC;IACrC,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;CAC5C,GACD;IACE,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,gBAAgB,GAAG,qBAAqB,CAAC;IACjD,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,MAAM,WAAW,0BAA0B;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,QAAQ,EAAE,IAAI,CAAC;IACf,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B,EAAE,sBAAsB,EAAE,CAAC;IACtD,mBAAmB,EAAE,sBAAsB,EAAE,CAAC;IAC9C,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;CAC5C,GACD;IACE,QAAQ,EAAE,KAAK,CAAC;IAChB,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;CACnB,CAAC;AAEN,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACnD,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAiB,SAAQ,UAAU;IAClD,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAC5E,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACzF,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;CACzE;AAED,oEAAoE;AACpE,MAAM,WAAW,kCAAmC,SAAQ,gBAAgB;IAC1E,wBAAwB,CACtB,KAAK,EAAE,uCAAuC,GAC7C,OAAO,CAAC,kCAAkC,CAAC,CAAC;CAChD;AAED,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,SAAS,oBAAoB,EAAE,CAAC;CAC7C;AAED,MAAM,MAAM,qBAAqB,GAC7B;IACE,OAAO,EAAE,IAAI,CAAC;IACd,KAAK,EAAE,gBAAgB,CAAC;IACxB,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;CAC5C,GACD;IACE,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,MAAM,MAAM,eAAe,GACvB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,iBAAiB,EAAE,eAAe,EAAE,CAAA;CAAE,GAC1E;IACE,OAAO,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEN,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;aACb,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM;CAI3C;AAED,MAAM,WAAW,mBAAmB;IAClC,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,OAAO,EAAE,YAAY,KAAK,kBAAkB,GAAG,SAAS,CAAC,CAAC;CAC7F;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,iBAAiB,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,wFAAwF;IACxF,gBAAgB,CAAC,EAAE,wBAAwB,CAAC;CAC7C;AAED,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,uBAAuB,CAAC;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,uFAAuF;IACvF,gBAAgB,CAAC,EAAE,8BAA8B,CAAC;CACnD;AAED,qBAAa,UAAU;IAInB,OAAO,CAAC,QAAQ,CAAC,KAAK;aACN,WAAW,EAAE,iBAAiB;aAC9B,KAAK,EAAE,MAAM;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAP5B,OAAO,CAAC,gBAAgB,CAAuC;gBAG5C,KAAK,EAAE,UAAU,EAClB,WAAW,EAAE,iBAAiB,EAC9B,KAAK,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,aAAa,EACxB,QAAQ,CAAC,EAAE,kBAAkB,YAAA,EAC9C,gBAAgB,CAAC,EAAE,wBAAwB;IAM7C,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,mFAAmF;IACnF,aAAa,IAAI,qBAAqB;IAWtC;;;;;OAKG;IACG,IAAI,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,eAAe,CAAC;IA0C/D,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAoBvC,KAAK,CAAC,KAAK,SAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAqB/C,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAkC9E;AAED,qBAAa,gBAAgB;IAIzB,OAAO,CAAC,QAAQ,CAAC,KAAK;aACN,WAAW,EAAE,uBAAuB;aACpC,KAAK,EAAE,MAAM;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC;IAP5B,OAAO,CAAC,gBAAgB,CAA6C;gBAGlD,KAAK,EAAE,UAAU,EAClB,WAAW,EAAE,uBAAuB,EACpC,KAAK,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,aAAa,EACxB,QAAQ,CAAC,EAAE,kBAAkB,YAAA,EAC9C,gBAAgB,CAAC,EAAE,8BAA8B;IAQnD,IAAI,mBAAmB,IAAI,sBAAsB,EAAE,CAKlD;IAED,aAAa,IAAI,2BAA2B;IAWtC,IAAI,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA8C3E,UAAU,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAoBvC,KAAK,CAAC,KAAK,SAAa,GAAG,OAAO,CAAC,WAAW,CAAC;IAqB/C,MAAM,CACV,iBAAiB,EAAE,SAAS,oBAAoB,EAAE,EAClD,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,sBAAsB,CAAC;CAmCnC;AAED,qBAAa,YAAY;IAMrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAkC;gBAGzC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,EACpC,YAAY,GAAE,MAAM,GAAG,mBAA4B;IAYrD;;;;;;OAMG;IACH,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,UAAU;IAa/C,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;CAoG7E;AAED,qBAAa,kBAAkB;IAM3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,MAAM;IANzB,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAS;IACjD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAgB;IAC1C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAkC;gBAGzC,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,iBAAiB,EAC1C,YAAY,GAAE,MAAM,GAAG,mBAA4B;IAYrD,WAAW,CAAC,KAAK,EAAE,2BAA2B,GAAG,gBAAgB;IAe3D,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAgHnF;AAKD,MAAM,WAAW,uBAAuB;IACtC,mFAAmF;IACnF,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;OAGG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,gEAAgE;IAChE,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,6BAA8B,SAAQ,eAAe;aAE9C,QAAQ,EAAE,YAAY,GAAG,aAAa;aACtC,KAAK,EAAE,MAAM;gBADb,QAAQ,EAAE,YAAY,GAAG,aAAa,EACtC,KAAK,EAAE,MAAM;CAShC;AAyCD,qBAAa,gBAAiB,YAAW,qBAAqB,EAAE,kCAAkC,EAAE,4BAA4B;IAC9H,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA6B;IAClD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA0C;IACvE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAC1C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAS;IAC/C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAgB;IAC1C,OAAO,CAAC,cAAc,CAA4B;gBAEtC,OAAO,GAAE,uBAA4B;IAYjD,uFAAuF;IACvF,KAAK,IAAI,qBAAqB;IAU9B;;;;;;OAMG;IACH,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAgBrC,kBAAkB,CACtB,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAAC,4BAA4B,CAAC;IA6DlC,wBAAwB,CAC5B,KAAK,EAAE,uCAAuC,GAC7C,OAAO,CAAC,kCAAkC,CAAC;IAsDxC,OAAO,CAAC,KAAK,EAAE;QACnB,OAAO,EAAE,YAAY,CAAC;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;QAC3B,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAqEzB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC;IA2F3E,qBAAqB,CACzB,KAAK,EAAE,0BAA0B,GAChC,OAAO,CAAC,qBAAqB,CAAC;IA4I3B,YAAY,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAmCvE,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAW7D,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,eAAe,CAAC;IA8GtE,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC;IAgB9C,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgC3D,OAAO,CAAC,cAAc;IAkHtB,OAAO,CAAC,uBAAuB;IAM/B,OAAO,CAAC,oBAAoB;IAU5B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,oBAAoB;CAO7B"}