@sly-rentals/core 1.2.0 → 3.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 (136) hide show
  1. package/dist/api.json +12695 -9074
  2. package/dist/cjs/calculator/ContestTimeline.js +407 -0
  3. package/dist/cjs/calculator/ContestTimeline.js.map +1 -0
  4. package/dist/cjs/calculator/MinBidChart.js +424 -0
  5. package/dist/cjs/calculator/MinBidChart.js.map +1 -0
  6. package/dist/cjs/calculator/dom.js +39 -0
  7. package/dist/cjs/calculator/dom.js.map +1 -0
  8. package/dist/cjs/calculator/emitter.js +36 -0
  9. package/dist/cjs/calculator/emitter.js.map +1 -0
  10. package/dist/cjs/calculator/index.js +20 -0
  11. package/dist/cjs/calculator/index.js.map +1 -0
  12. package/dist/cjs/cost/constants.js +54 -6
  13. package/dist/cjs/cost/constants.js.map +1 -1
  14. package/dist/cjs/cost/estimate.js +7 -4
  15. package/dist/cjs/cost/estimate.js.map +1 -1
  16. package/dist/cjs/cost/estimate.test.js +16 -4
  17. package/dist/cjs/cost/estimate.test.js.map +1 -1
  18. package/dist/cjs/cost/index.js +32 -17
  19. package/dist/cjs/cost/index.js.map +1 -1
  20. package/dist/cjs/cost/sizes.js +20 -3
  21. package/dist/cjs/cost/sizes.js.map +1 -1
  22. package/dist/cjs/generated/codama/errors/srsly.js +13 -16
  23. package/dist/cjs/generated/codama/errors/srsly.js.map +1 -1
  24. package/dist/cjs/idl/srsly.json +300 -2396
  25. package/dist/cjs/instructions/closeContract.js +3 -37
  26. package/dist/cjs/instructions/closeContract.js.map +1 -1
  27. package/dist/cjs/instructions/createContract.js +2 -4
  28. package/dist/cjs/instructions/createContract.js.map +1 -1
  29. package/dist/cjs/instructions/createContractThread.js +1 -2
  30. package/dist/cjs/instructions/createContractThread.js.map +1 -1
  31. package/dist/cjs/instructions/index.js +65 -42
  32. package/dist/cjs/instructions/index.js.map +1 -1
  33. package/dist/cjs/kit/index.js +5 -27
  34. package/dist/cjs/kit/index.js.map +1 -1
  35. package/dist/cjs/legacy/index.js +5 -3
  36. package/dist/cjs/legacy/index.js.map +1 -1
  37. package/dist/cjs/package.json +10 -3
  38. package/dist/cjs/react/ContestTimeline.js +59 -0
  39. package/dist/cjs/react/ContestTimeline.js.map +1 -0
  40. package/dist/cjs/react/MinBidChart.js +34 -0
  41. package/dist/cjs/react/MinBidChart.js.map +1 -0
  42. package/dist/cjs/react/index.js +18 -0
  43. package/dist/cjs/react/index.js.map +1 -0
  44. package/dist/cjs/utils/contestChain.js +222 -0
  45. package/dist/cjs/utils/contestChain.js.map +1 -0
  46. package/dist/cjs/utils/index.js +8 -1
  47. package/dist/cjs/utils/index.js.map +1 -1
  48. package/dist/cjs/version.js +1 -1
  49. package/dist/esm/calculator/ContestTimeline.js +403 -0
  50. package/dist/esm/calculator/ContestTimeline.js.map +1 -0
  51. package/dist/esm/calculator/MinBidChart.js +417 -0
  52. package/dist/esm/calculator/MinBidChart.js.map +1 -0
  53. package/dist/esm/calculator/dom.js +35 -0
  54. package/dist/esm/calculator/dom.js.map +1 -0
  55. package/dist/esm/calculator/emitter.js +32 -0
  56. package/dist/esm/calculator/emitter.js.map +1 -0
  57. package/dist/esm/calculator/index.js +13 -0
  58. package/dist/esm/calculator/index.js.map +1 -0
  59. package/dist/esm/cost/constants.js +52 -5
  60. package/dist/esm/cost/constants.js.map +1 -1
  61. package/dist/esm/cost/estimate.js +9 -6
  62. package/dist/esm/cost/estimate.js.map +1 -1
  63. package/dist/esm/cost/estimate.test.js +18 -6
  64. package/dist/esm/cost/estimate.test.js.map +1 -1
  65. package/dist/esm/cost/index.js +13 -3
  66. package/dist/esm/cost/index.js.map +1 -1
  67. package/dist/esm/cost/sizes.js +19 -2
  68. package/dist/esm/cost/sizes.js.map +1 -1
  69. package/dist/esm/generated/codama/errors/srsly.js +14 -17
  70. package/dist/esm/generated/codama/errors/srsly.js.map +1 -1
  71. package/dist/esm/idl/srsly.json +300 -2396
  72. package/dist/esm/instructions/closeContract.js +1 -2
  73. package/dist/esm/instructions/closeContract.js.map +1 -1
  74. package/dist/esm/instructions/createContract.js +2 -4
  75. package/dist/esm/instructions/createContract.js.map +1 -1
  76. package/dist/esm/instructions/createContractThread.js +2 -3
  77. package/dist/esm/instructions/createContractThread.js.map +1 -1
  78. package/dist/esm/instructions/index.js +36 -28
  79. package/dist/esm/instructions/index.js.map +1 -1
  80. package/dist/esm/kit/index.js +4 -4
  81. package/dist/esm/kit/index.js.map +1 -1
  82. package/dist/esm/legacy/index.js +4 -2
  83. package/dist/esm/legacy/index.js.map +1 -1
  84. package/dist/esm/package.json +10 -3
  85. package/dist/esm/react/ContestTimeline.js +56 -0
  86. package/dist/esm/react/ContestTimeline.js.map +1 -0
  87. package/dist/esm/react/MinBidChart.js +30 -0
  88. package/dist/esm/react/MinBidChart.js.map +1 -0
  89. package/dist/esm/react/index.js +12 -0
  90. package/dist/esm/react/index.js.map +1 -0
  91. package/dist/esm/utils/contestChain.js +214 -0
  92. package/dist/esm/utils/contestChain.js.map +1 -0
  93. package/dist/esm/utils/index.js +2 -0
  94. package/dist/esm/utils/index.js.map +1 -1
  95. package/dist/esm/version.js +1 -1
  96. package/dist/idl/srsly.json +301 -2397
  97. package/dist/types/calculator/ContestTimeline.d.ts +69 -0
  98. package/dist/types/calculator/ContestTimeline.d.ts.map +1 -0
  99. package/dist/types/calculator/MinBidChart.d.ts +73 -0
  100. package/dist/types/calculator/MinBidChart.d.ts.map +1 -0
  101. package/dist/types/calculator/dom.d.ts +16 -0
  102. package/dist/types/calculator/dom.d.ts.map +1 -0
  103. package/dist/types/calculator/emitter.d.ts +13 -0
  104. package/dist/types/calculator/emitter.d.ts.map +1 -0
  105. package/dist/types/calculator/index.d.ts +13 -0
  106. package/dist/types/calculator/index.d.ts.map +1 -0
  107. package/dist/types/cost/constants.d.ts +49 -5
  108. package/dist/types/cost/constants.d.ts.map +1 -1
  109. package/dist/types/cost/estimate.d.ts +12 -1
  110. package/dist/types/cost/estimate.d.ts.map +1 -1
  111. package/dist/types/cost/index.d.ts +13 -3
  112. package/dist/types/cost/index.d.ts.map +1 -1
  113. package/dist/types/cost/sizes.d.ts +19 -2
  114. package/dist/types/cost/sizes.d.ts.map +1 -1
  115. package/dist/types/generated/codama/errors/srsly.d.ts +11 -13
  116. package/dist/types/generated/codama/errors/srsly.d.ts.map +1 -1
  117. package/dist/types/instructions/closeContract.d.ts.map +1 -1
  118. package/dist/types/instructions/createContract.d.ts.map +1 -1
  119. package/dist/types/instructions/index.d.ts +36 -28
  120. package/dist/types/instructions/index.d.ts.map +1 -1
  121. package/dist/types/kit/index.d.ts +0 -2
  122. package/dist/types/kit/index.d.ts.map +1 -1
  123. package/dist/types/legacy/index.d.ts +0 -2
  124. package/dist/types/legacy/index.d.ts.map +1 -1
  125. package/dist/types/react/ContestTimeline.d.ts +17 -0
  126. package/dist/types/react/ContestTimeline.d.ts.map +1 -0
  127. package/dist/types/react/MinBidChart.d.ts +12 -0
  128. package/dist/types/react/MinBidChart.d.ts.map +1 -0
  129. package/dist/types/react/index.d.ts +12 -0
  130. package/dist/types/react/index.d.ts.map +1 -0
  131. package/dist/types/utils/contestChain.d.ts +130 -0
  132. package/dist/types/utils/contestChain.d.ts.map +1 -0
  133. package/dist/types/utils/index.d.ts +1 -0
  134. package/dist/types/utils/index.d.ts.map +1 -1
  135. package/dist/types/version.d.ts +1 -1
  136. package/package.json +38 -2
@@ -0,0 +1,222 @@
1
+ "use strict";
2
+ /**
3
+ * @purpose Pure-math chain-of-contests simulator.
4
+ *
5
+ * Walks a sequence of reservation events (calc defender + user-added
6
+ * takeovers) and produces per-row floor / bonus / owner-take values
7
+ * plus the segment breakdown UIs use to render piecewise curves.
8
+ *
9
+ * No React, no IO, no RPC. Feeds a calculator/visualization layer
10
+ * (`@sly-rentals/core/react/calculator`) but is callable standalone
11
+ * from any environment.
12
+ */
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.nextKnobId = void 0;
15
+ exports.stardustToDisplay = stardustToDisplay;
16
+ exports.computeContestChain = computeContestChain;
17
+ exports.distributeEven = distributeEven;
18
+ exports.distributeSnipeHeavy = distributeSnipeHeavy;
19
+ const bidMath_1 = require("./bidMath");
20
+ function clamp(n, lo, hi) {
21
+ return Math.max(lo, Math.min(hi, n));
22
+ }
23
+ /**
24
+ * Convert a stardust value into the caller's display currency.
25
+ *
26
+ * ATLAS: stardust / stardustPerAtlas.
27
+ * POINTS: stardust / (stardustPerAtlas × atlasPerPoint), with a
28
+ * min-capture floor since the on-chain threshold rejects sub-floor bids.
29
+ */
30
+ function stardustToDisplay(stardust, cur, stardustPerAtlas, atlasPerPoint, minCaptureThresholdPoints) {
31
+ const atlas = Number(stardust) / stardustPerAtlas;
32
+ if (cur === 'ATLAS')
33
+ return atlas;
34
+ return Math.max(atlas / atlasPerPoint, minCaptureThresholdPoints);
35
+ }
36
+ /**
37
+ * Walk a chain of contest events and produce per-contest math + segment
38
+ * breakdown.
39
+ *
40
+ * The chain begins with an optional calc defender row (the simulator's
41
+ * "your bid" entry). Subsequent takeover knobs are computed via
42
+ * `computeMinimumBid` against the previous row's bid.
43
+ *
44
+ * v1 assumes same-currency ATLAS knockoffs; tier-upgrade compensation
45
+ * is not modeled.
46
+ */
47
+ function computeContestChain(args) {
48
+ const { cfg, rateStardust, activeDays, userDefender, defenderCur, takeoverKnobs, displayCur, stardustPerAtlas, atlasPerPoint, minCaptureThresholdPoints, contestedThreshold, contestedCountStart, } = args;
49
+ // Same-currency POINTS rotation: on-chain bonus formula evaluates to
50
+ // zero (no ATLAS escrow movement) and the owner takes nothing. Gate
51
+ // the chain math so downstream rows + totals reflect that.
52
+ const pointsOnly = displayCur === 'POINTS' && (defenderCur ?? displayCur) === 'POINTS';
53
+ const safeSpan = Math.max(0.0001, activeDays);
54
+ const sorted = [...takeoverKnobs].sort((a, b) => a.atDay - b.atDay);
55
+ const rows = [];
56
+ const segments = [];
57
+ const toDisplay = (s) => stardustToDisplay(s, displayCur, stardustPerAtlas, atlasPerPoint, minCaptureThresholdPoints);
58
+ const callMinBid = (closeness, defenderBidStardust) => (0, bidMath_1.computeMinimumBid)({
59
+ rateStardust,
60
+ defenderBidStardust,
61
+ contestedMultiplierMaxBps: cfg.contestedMultiplierMaxBps,
62
+ captureRateBps: cfg.captureRateBps,
63
+ closenessFraction: closeness,
64
+ });
65
+ const tmp = [];
66
+ if (userDefender) {
67
+ tmp.push({
68
+ id: '__calc',
69
+ atDay: userDefender.atDay,
70
+ bidStardust: userDefender.bidStardust,
71
+ bidDisplay: toDisplay(userDefender.bidStardust),
72
+ defenderBidStardust: 0n,
73
+ defenderAtDay: 0,
74
+ source: 'calc',
75
+ });
76
+ }
77
+ const firstEventAt = tmp[0]?.atDay ?? 0;
78
+ if (firstEventAt > 0) {
79
+ segments.push({
80
+ startDay: 0,
81
+ endDay: firstEventAt,
82
+ defenderBidStardust: 0n,
83
+ hasDefender: false,
84
+ });
85
+ }
86
+ let cursorBid = userDefender?.bidStardust ?? 0n;
87
+ let cursorAt = userDefender?.atDay ?? 0;
88
+ for (const k of sorted) {
89
+ segments.push({
90
+ startDay: cursorAt,
91
+ endDay: k.atDay,
92
+ defenderBidStardust: cursorBid,
93
+ hasDefender: true,
94
+ });
95
+ const closeness = clamp(k.atDay / safeSpan, 0, 1);
96
+ const floor = callMinBid(closeness, cursorBid);
97
+ tmp.push({
98
+ id: k.id,
99
+ atDay: k.atDay,
100
+ bidStardust: floor,
101
+ bidDisplay: toDisplay(floor),
102
+ defenderBidStardust: cursorBid,
103
+ defenderAtDay: cursorAt,
104
+ source: 'knob',
105
+ });
106
+ cursorBid = floor;
107
+ cursorAt = k.atDay;
108
+ }
109
+ if (tmp.length > 0) {
110
+ segments.push({
111
+ startDay: cursorAt,
112
+ endDay: activeDays,
113
+ defenderBidStardust: cursorBid,
114
+ hasDefender: true,
115
+ });
116
+ }
117
+ // Bonus multiplier — config knob, scales the same-cur knockoff bonus.
118
+ // 100 bps = 1× = no-op (current on-chain formula).
119
+ // TODO(bonus_multiplier_bps): drop the `?? 100` fallback once the
120
+ // on-chain field is guaranteed present.
121
+ const bonusMult = (cfg.bonusMultiplierBps ?? 100) / 100;
122
+ const bonusByIdx = tmp.map((_, i) => {
123
+ // POINTS-only chain: no bonus path on-chain.
124
+ if (pointsOnly)
125
+ return 0;
126
+ const next = tmp[i + 1];
127
+ if (!next)
128
+ return 0;
129
+ const closeness = clamp((next.atDay - tmp[i].atDay) / safeSpan, 0, 1);
130
+ const raw = Math.max(0, (next.bidDisplay - tmp[i].bidDisplay) * closeness * bonusMult);
131
+ // Match on-chain `b.min(bid_atlas)` — bonus capped at challenger's bid.
132
+ return Math.min(next.bidDisplay, raw);
133
+ });
134
+ // Owner-take is realized only by the LAST contester in the chain — every
135
+ // earlier contester gets their bid back as refund when outbid, plus a
136
+ // bonus from the next challenger's bid. Net contract escrow at end of
137
+ // chain = bid_last − Σ bonuses paid across the chain (the deficit on
138
+ // each refund is covered by the next challenger's bid). Intermediate
139
+ // rows therefore contribute 0 to owner take.
140
+ const totalBonusForOwner = bonusByIdx.reduce((acc, b) => acc + b, 0);
141
+ const lastIdx = tmp.length - 1;
142
+ let contestedCount = contestedCountStart;
143
+ let bumpFlagged = false;
144
+ for (let i = 0; i < tmp.length; i++) {
145
+ const t = tmp[i];
146
+ const bonusEarned = bonusByIdx[i];
147
+ // POINTS-only chain routes nothing to the owner — the points stake
148
+ // is forfeited to the protocol's points sink, not the owner's escrow.
149
+ const ownerTake = pointsOnly
150
+ ? 0
151
+ : i === lastIdx
152
+ ? Math.max(0, t.bidDisplay - totalBonusForOwner)
153
+ : 0;
154
+ contestedCount = contestedCount + 1;
155
+ const isInitial = i === 0;
156
+ const triggersRateBump = !bumpFlagged && contestedThreshold > 0 && contestedCount >= contestedThreshold && !isInitial;
157
+ if (triggersRateBump)
158
+ bumpFlagged = true;
159
+ // Min bid required to beat THIS row at its atDay — i.e. the floor
160
+ // curve's y-value at `t.atDay` going forward. For takeover rows the
161
+ // row's bid equals the floor it cleared, so this matches `bidDisplay`.
162
+ // For seat-zero rows whose bid is below the floor (e.g. a first
163
+ // reservation at 0 or any on-chain defender that beat a lower prior),
164
+ // this is strictly greater than the row's own bid — and matches the
165
+ // value the chart's cyan curve takes at `atDay`.
166
+ const curveCloseness = clamp(t.atDay / safeSpan, 0, 1);
167
+ const curveAtAtDay = callMinBid(curveCloseness, t.bidStardust);
168
+ rows.push({
169
+ id: t.id,
170
+ idx: i + 1,
171
+ atDay: t.atDay,
172
+ floorStardust: t.bidStardust,
173
+ floorDisplay: t.bidDisplay,
174
+ bonusDisplay: bonusEarned,
175
+ ownerTakeDisplay: ownerTake,
176
+ defenderBidStardust: t.defenderBidStardust,
177
+ defenderAtDay: t.defenderAtDay,
178
+ source: t.source,
179
+ isInitial,
180
+ contestedCountAfter: contestedCount,
181
+ triggersRateBump,
182
+ curveAtAtDayDisplay: toDisplay(curveAtAtDay),
183
+ });
184
+ }
185
+ const baselineAtlas = (Number(rateStardust) / stardustPerAtlas) * activeDays;
186
+ const baselineDisplay = displayCur === 'ATLAS'
187
+ ? baselineAtlas
188
+ : Math.max(baselineAtlas / atlasPerPoint, minCaptureThresholdPoints);
189
+ const totalOwnerDisplay = rows.reduce((acc, r) => acc + r.ownerTakeDisplay, 0);
190
+ const totalBonusDisplay = rows.reduce((acc, r) => acc + r.bonusDisplay, 0);
191
+ const multiplier = baselineDisplay > 0 ? totalOwnerDisplay / baselineDisplay : 0;
192
+ return {
193
+ segments,
194
+ rows,
195
+ totalOwnerDisplay,
196
+ totalBonusDisplay,
197
+ baselineDisplay,
198
+ multiplier,
199
+ };
200
+ }
201
+ /** Even spacing across [from, to] excluding endpoints. */
202
+ function distributeEven(count, from, to) {
203
+ if (count <= 0 || to <= from)
204
+ return [];
205
+ const step = (to - from) / (count + 1);
206
+ return Array.from({ length: count }, (_, i) => from + step * (i + 1));
207
+ }
208
+ /** Quadratic bias toward `to` — clusters knobs near the snipe window. */
209
+ function distributeSnipeHeavy(count, from, to) {
210
+ if (count <= 0 || to <= from)
211
+ return [];
212
+ const span = to - from;
213
+ return Array.from({ length: count }, (_, i) => {
214
+ const t = (i + 1) / (count + 1);
215
+ const skewed = 1 - Math.pow(1 - t, 2);
216
+ return from + span * skewed;
217
+ });
218
+ }
219
+ let knobCounter = 0;
220
+ const nextKnobId = () => `k${++knobCounter}`;
221
+ exports.nextKnobId = nextKnobId;
222
+ //# sourceMappingURL=contestChain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contestChain.js","sourceRoot":"","sources":["../../../src/utils/contestChain.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * @module utils
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.requireValidReferrer = exports.resolveReferrer = exports.deserializeDiscountAuth = exports.createDiscount = exports.getMinimumBid = exports.computeMinimumBidFromSnapshot = exports.resolveContractSnapshot = exports.getContractSnapshot = exports.computeMinimumBid = exports.hasQueuedRental = exports.hasActiveRental = exports.getLookupTableAddress = exports.fetchLookupTable = exports.isRpcDebugEnabled = exports.setRpcDebug = exports.createRpc = exports.InstructionResult = exports.prepareInstructions = exports.toAddress = exports.toWeb3Instruction = exports.isAddressString = exports.isKitSigner = exports.isWeb3jsSigner = exports.validateAddress = exports.toTransactionSigner = exports.ATLASNET_ADDRESSES = exports.MAINNET_ADDRESSES = exports.ATLASNET_GENESIS = exports.DEVNET_GENESIS = exports.MAINNET_GENESIS = exports.resolveGenesisHash = exports.isValidNetwork = exports.isValidProgramSet = exports.getNetworkAddresses = exports.getProgramAddresses = exports.detectProgramSet = exports.getRpcUrl = exports.getAffiliateConfig = exports.getAddresses = exports.mergeConfig = exports.clearSdkConfig = exports.getSdkConfig = exports.setSdkConfig = void 0;
7
+ exports.requireValidReferrer = exports.resolveReferrer = exports.deserializeDiscountAuth = exports.createDiscount = exports.getMinimumBid = exports.computeMinimumBidFromSnapshot = exports.resolveContractSnapshot = exports.getContractSnapshot = exports.nextKnobId = exports.distributeSnipeHeavy = exports.distributeEven = exports.stardustToDisplay = exports.computeContestChain = exports.computeMinimumBid = exports.hasQueuedRental = exports.hasActiveRental = exports.getLookupTableAddress = exports.fetchLookupTable = exports.isRpcDebugEnabled = exports.setRpcDebug = exports.createRpc = exports.InstructionResult = exports.prepareInstructions = exports.toAddress = exports.toWeb3Instruction = exports.isAddressString = exports.isKitSigner = exports.isWeb3jsSigner = exports.validateAddress = exports.toTransactionSigner = exports.ATLASNET_ADDRESSES = exports.MAINNET_ADDRESSES = exports.ATLASNET_GENESIS = exports.DEVNET_GENESIS = exports.MAINNET_GENESIS = exports.resolveGenesisHash = exports.isValidNetwork = exports.isValidProgramSet = exports.getNetworkAddresses = exports.getProgramAddresses = exports.detectProgramSet = exports.getRpcUrl = exports.getAffiliateConfig = exports.getAddresses = exports.mergeConfig = exports.clearSdkConfig = exports.getSdkConfig = exports.setSdkConfig = void 0;
8
8
  // Configuration
9
9
  var config_1 = require("./config");
10
10
  Object.defineProperty(exports, "setSdkConfig", { enumerable: true, get: function () { return config_1.setSdkConfig; } });
@@ -60,6 +60,13 @@ Object.defineProperty(exports, "hasQueuedRental", { enumerable: true, get: funct
60
60
  // Bid Math (pure formula + type)
61
61
  var bidMath_1 = require("./bidMath");
62
62
  Object.defineProperty(exports, "computeMinimumBid", { enumerable: true, get: function () { return bidMath_1.computeMinimumBid; } });
63
+ // Contest Chain (multi-contest simulator, pure math)
64
+ var contestChain_1 = require("./contestChain");
65
+ Object.defineProperty(exports, "computeContestChain", { enumerable: true, get: function () { return contestChain_1.computeContestChain; } });
66
+ Object.defineProperty(exports, "stardustToDisplay", { enumerable: true, get: function () { return contestChain_1.stardustToDisplay; } });
67
+ Object.defineProperty(exports, "distributeEven", { enumerable: true, get: function () { return contestChain_1.distributeEven; } });
68
+ Object.defineProperty(exports, "distributeSnipeHeavy", { enumerable: true, get: function () { return contestChain_1.distributeSnipeHeavy; } });
69
+ Object.defineProperty(exports, "nextKnobId", { enumerable: true, get: function () { return contestChain_1.nextKnobId; } });
63
70
  // Contract Snapshot (aggregated one-shot fetch + derived bid)
64
71
  var contractSnapshot_1 = require("./contractSnapshot");
65
72
  Object.defineProperty(exports, "getContractSnapshot", { enumerable: true, get: function () { return contractSnapshot_1.getContractSnapshot; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gBAAgB;AAChB,mCAYkB;AAXhB,sGAAA,YAAY,OAAA;AACZ,sGAAA,YAAY,OAAA;AACZ,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,4GAAA,kBAAkB,OAAA;AAClB,mGAAA,SAAS,OAAA;AACT,0GAAA,gBAAgB,OAAA;AAMlB,oBAAoB;AACpB,yCAeqB;AAdnB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAChB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAOpB,mBAAmB;AACnB,mCAOkB;AANhB,6GAAA,mBAAmB,OAAA;AACnB,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AAIjB,wBAAwB;AACxB,mCAMkB;AALhB,2GAAA,iBAAiB,OAAA;AACjB,mGAAA,SAAS,OAAA;AAMX,wBAAwB;AACxB,+CAAsF;AAA7E,mHAAA,mBAAmB,OAAA;AAE5B,qBAAqB;AACrB,yDAAgF;AAAvE,sHAAA,iBAAiB,OAAA;AAE1B,gBAAgB;AAChB,6BAAkE;AAAzD,gGAAA,SAAS,OAAA;AAAE,kGAAA,WAAW,OAAA;AAAE,wGAAA,iBAAiB,OAAA;AAElD,iCAAiC;AACjC,6CAIuB;AAHrB,+GAAA,gBAAgB,OAAA;AAChB,oHAAA,qBAAqB,OAAA;AAIvB,mBAAmB;AACnB,mCAA4D;AAAnD,yGAAA,eAAe,OAAA;AAAE,yGAAA,eAAe,OAAA;AAEzC,iCAAiC;AACjC,qCAA+D;AAAtD,4GAAA,iBAAiB,OAAA;AAE1B,8DAA8D;AAC9D,uDAO4B;AAN1B,uHAAA,mBAAmB,OAAA;AACnB,2HAAA,uBAAuB,OAAA;AACvB,iIAAA,6BAA6B,OAAA;AAC7B,iHAAA,aAAa,OAAA;AAKf,yBAAyB;AACzB,+CAMwB;AALtB,8GAAA,cAAc,OAAA;AACd,uHAAA,uBAAuB,OAAA;AAMzB,8CAA8C;AAC9C,uCAAmE;AAA1D,2GAAA,eAAe,OAAA;AAAE,gHAAA,oBAAoB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,gBAAgB;AAChB,mCAYkB;AAXhB,sGAAA,YAAY,OAAA;AACZ,sGAAA,YAAY,OAAA;AACZ,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AACX,sGAAA,YAAY,OAAA;AACZ,4GAAA,kBAAkB,OAAA;AAClB,mGAAA,SAAS,OAAA;AACT,0GAAA,gBAAgB,OAAA;AAMlB,oBAAoB;AACpB,yCAeqB;AAdnB,gHAAA,mBAAmB,OAAA;AACnB,gHAAA,mBAAmB,OAAA;AACnB,8GAAA,iBAAiB,OAAA;AACjB,2GAAA,cAAc,OAAA;AACd,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,2GAAA,cAAc,OAAA;AACd,6GAAA,gBAAgB,OAAA;AAChB,8GAAA,iBAAiB,OAAA;AACjB,+GAAA,kBAAkB,OAAA;AAOpB,mBAAmB;AACnB,mCAOkB;AANhB,6GAAA,mBAAmB,OAAA;AACnB,yGAAA,eAAe,OAAA;AACf,wGAAA,cAAc,OAAA;AACd,qGAAA,WAAW,OAAA;AACX,yGAAA,eAAe,OAAA;AAIjB,wBAAwB;AACxB,mCAMkB;AALhB,2GAAA,iBAAiB,OAAA;AACjB,mGAAA,SAAS,OAAA;AAMX,wBAAwB;AACxB,+CAAsF;AAA7E,mHAAA,mBAAmB,OAAA;AAE5B,qBAAqB;AACrB,yDAAgF;AAAvE,sHAAA,iBAAiB,OAAA;AAE1B,gBAAgB;AAChB,6BAAkE;AAAzD,gGAAA,SAAS,OAAA;AAAE,kGAAA,WAAW,OAAA;AAAE,wGAAA,iBAAiB,OAAA;AAElD,iCAAiC;AACjC,6CAIuB;AAHrB,+GAAA,gBAAgB,OAAA;AAChB,oHAAA,qBAAqB,OAAA;AAIvB,mBAAmB;AACnB,mCAA4D;AAAnD,yGAAA,eAAe,OAAA;AAAE,yGAAA,eAAe,OAAA;AAEzC,iCAAiC;AACjC,qCAA+D;AAAtD,4GAAA,iBAAiB,OAAA;AAE1B,qDAAqD;AACrD,+CAawB;AAZtB,mHAAA,mBAAmB,OAAA;AACnB,iHAAA,iBAAiB,OAAA;AACjB,8GAAA,cAAc,OAAA;AACd,oHAAA,oBAAoB,OAAA;AACpB,0GAAA,UAAU,OAAA;AAUZ,8DAA8D;AAC9D,uDAO4B;AAN1B,uHAAA,mBAAmB,OAAA;AACnB,2HAAA,uBAAuB,OAAA;AACvB,iIAAA,6BAA6B,OAAA;AAC7B,iHAAA,aAAa,OAAA;AAKf,yBAAyB;AACzB,+CAMwB;AALtB,8GAAA,cAAc,OAAA;AACd,uHAAA,uBAAuB,OAAA;AAMzB,8CAA8C;AAC9C,uCAAmE;AAA1D,2GAAA,eAAe,OAAA;AAAE,gHAAA,oBAAoB,OAAA"}
@@ -3,5 +3,5 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
4
  // Auto-generated from package.json - DO NOT EDIT
5
5
  // Run "pnpm run generate:version" to update
6
- exports.VERSION = '1.2.0';
6
+ exports.VERSION = '3.0.0';
7
7
  //# sourceMappingURL=version.js.map