@sly-rentals/core 5.0.0 → 5.1.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 (177) hide show
  1. package/dist/api.json +10435 -7765
  2. package/dist/cjs/accounts/contract.js +60 -29
  3. package/dist/cjs/accounts/contract.js.map +1 -1
  4. package/dist/cjs/cost/estimate.js +18 -4
  5. package/dist/cjs/cost/estimate.js.map +1 -1
  6. package/dist/cjs/cost/estimate.test.js +11 -1
  7. package/dist/cjs/cost/estimate.test.js.map +1 -1
  8. package/dist/cjs/generated/codama/accounts/contractState.js +4 -4
  9. package/dist/cjs/generated/codama/accounts/contractState.js.map +1 -1
  10. package/dist/cjs/generated/codama/instructions/createContract.js +2 -2
  11. package/dist/cjs/generated/codama/instructions/createContract.js.map +1 -1
  12. package/dist/cjs/generated/codama/instructions/updateContract.js +2 -2
  13. package/dist/cjs/generated/codama/instructions/updateContract.js.map +1 -1
  14. package/dist/cjs/generated/codama/types/contractCreated.js +2 -2
  15. package/dist/cjs/generated/codama/types/contractCreated.js.map +1 -1
  16. package/dist/cjs/generated/codama/types/fleet.js +0 -14
  17. package/dist/cjs/generated/codama/types/fleet.js.map +1 -1
  18. package/dist/cjs/generated/codama/types/index.js +0 -1
  19. package/dist/cjs/generated/codama/types/index.js.map +1 -1
  20. package/dist/cjs/generated/codama/types/shipStats.js +0 -2
  21. package/dist/cjs/generated/codama/types/shipStats.js.map +1 -1
  22. package/dist/cjs/generated/codama/types/staleDecayApplied.js +2 -2
  23. package/dist/cjs/generated/codama/types/staleDecayApplied.js.map +1 -1
  24. package/dist/cjs/idl/srsly.json +23 -118
  25. package/dist/cjs/instructions/createContract.js +1 -1
  26. package/dist/cjs/instructions/createContract.js.map +1 -1
  27. package/dist/cjs/instructions/index.js +5 -1
  28. package/dist/cjs/instructions/index.js.map +1 -1
  29. package/dist/cjs/instructions/migrateConfig.js +41 -0
  30. package/dist/cjs/instructions/migrateConfig.js.map +1 -0
  31. package/dist/cjs/instructions/migrateContract.js +47 -0
  32. package/dist/cjs/instructions/migrateContract.js.map +1 -0
  33. package/dist/cjs/instructions/reserveRental.js +4 -3
  34. package/dist/cjs/instructions/reserveRental.js.map +1 -1
  35. package/dist/cjs/instructions/updateContract.js +2 -2
  36. package/dist/cjs/instructions/updateContract.js.map +1 -1
  37. package/dist/cjs/kit/index.js +6 -1
  38. package/dist/cjs/kit/index.js.map +1 -1
  39. package/dist/cjs/legacy/index.js +3 -1
  40. package/dist/cjs/legacy/index.js.map +1 -1
  41. package/dist/cjs/package.json +1 -2
  42. package/dist/cjs/params/index.js +1 -0
  43. package/dist/cjs/params/index.js.map +1 -1
  44. package/dist/cjs/params/points.js +110 -0
  45. package/dist/cjs/params/points.js.map +1 -0
  46. package/dist/cjs/utils/clock.js +42 -0
  47. package/dist/cjs/utils/clock.js.map +1 -0
  48. package/dist/cjs/utils/contractSnapshot.js +46 -5
  49. package/dist/cjs/utils/contractSnapshot.js.map +1 -1
  50. package/dist/cjs/utils/contractSnapshot.test.js +28 -3
  51. package/dist/cjs/utils/contractSnapshot.test.js.map +1 -1
  52. package/dist/cjs/utils/index.js +7 -1
  53. package/dist/cjs/utils/index.js.map +1 -1
  54. package/dist/cjs/utils/staleDecay.js +47 -0
  55. package/dist/cjs/utils/staleDecay.js.map +1 -0
  56. package/dist/cjs/utils/staleDecay.test.js +71 -0
  57. package/dist/cjs/utils/staleDecay.test.js.map +1 -0
  58. package/dist/cjs/version.js +1 -1
  59. package/dist/esm/accounts/contract.js +59 -29
  60. package/dist/esm/accounts/contract.js.map +1 -1
  61. package/dist/esm/cost/estimate.js +18 -4
  62. package/dist/esm/cost/estimate.js.map +1 -1
  63. package/dist/esm/cost/estimate.test.js +11 -1
  64. package/dist/esm/cost/estimate.test.js.map +1 -1
  65. package/dist/esm/generated/codama/accounts/contractState.js +4 -4
  66. package/dist/esm/generated/codama/accounts/contractState.js.map +1 -1
  67. package/dist/esm/generated/codama/instructions/createContract.js +2 -2
  68. package/dist/esm/generated/codama/instructions/createContract.js.map +1 -1
  69. package/dist/esm/generated/codama/instructions/updateContract.js +2 -2
  70. package/dist/esm/generated/codama/instructions/updateContract.js.map +1 -1
  71. package/dist/esm/generated/codama/types/contractCreated.js +2 -2
  72. package/dist/esm/generated/codama/types/contractCreated.js.map +1 -1
  73. package/dist/esm/generated/codama/types/fleet.js +1 -15
  74. package/dist/esm/generated/codama/types/fleet.js.map +1 -1
  75. package/dist/esm/generated/codama/types/index.js +0 -1
  76. package/dist/esm/generated/codama/types/index.js.map +1 -1
  77. package/dist/esm/generated/codama/types/shipStats.js +1 -3
  78. package/dist/esm/generated/codama/types/shipStats.js.map +1 -1
  79. package/dist/esm/generated/codama/types/staleDecayApplied.js +2 -2
  80. package/dist/esm/generated/codama/types/staleDecayApplied.js.map +1 -1
  81. package/dist/esm/idl/srsly.json +23 -118
  82. package/dist/esm/instructions/createContract.js +1 -1
  83. package/dist/esm/instructions/createContract.js.map +1 -1
  84. package/dist/esm/instructions/index.js +2 -0
  85. package/dist/esm/instructions/index.js.map +1 -1
  86. package/dist/esm/instructions/migrateConfig.js +38 -0
  87. package/dist/esm/instructions/migrateConfig.js.map +1 -0
  88. package/dist/esm/instructions/migrateContract.js +44 -0
  89. package/dist/esm/instructions/migrateContract.js.map +1 -0
  90. package/dist/esm/instructions/reserveRental.js +4 -3
  91. package/dist/esm/instructions/reserveRental.js.map +1 -1
  92. package/dist/esm/instructions/updateContract.js +2 -2
  93. package/dist/esm/instructions/updateContract.js.map +1 -1
  94. package/dist/esm/kit/index.js +4 -0
  95. package/dist/esm/kit/index.js.map +1 -1
  96. package/dist/esm/legacy/index.js +2 -0
  97. package/dist/esm/legacy/index.js.map +1 -1
  98. package/dist/esm/package.json +1 -2
  99. package/dist/esm/params/index.js +1 -0
  100. package/dist/esm/params/index.js.map +1 -1
  101. package/dist/esm/params/points.js +104 -0
  102. package/dist/esm/params/points.js.map +1 -0
  103. package/dist/esm/utils/clock.js +39 -0
  104. package/dist/esm/utils/clock.js.map +1 -0
  105. package/dist/esm/utils/contractSnapshot.js +46 -5
  106. package/dist/esm/utils/contractSnapshot.js.map +1 -1
  107. package/dist/esm/utils/contractSnapshot.test.js +28 -3
  108. package/dist/esm/utils/contractSnapshot.test.js.map +1 -1
  109. package/dist/esm/utils/index.js +4 -0
  110. package/dist/esm/utils/index.js.map +1 -1
  111. package/dist/esm/utils/staleDecay.js +44 -0
  112. package/dist/esm/utils/staleDecay.js.map +1 -0
  113. package/dist/esm/utils/staleDecay.test.js +69 -0
  114. package/dist/esm/utils/staleDecay.test.js.map +1 -0
  115. package/dist/esm/version.js +1 -1
  116. package/dist/idl/srsly.json +23 -118
  117. package/dist/types/accounts/contract.d.ts +11 -5
  118. package/dist/types/accounts/contract.d.ts.map +1 -1
  119. package/dist/types/cost/estimate.d.ts +17 -2
  120. package/dist/types/cost/estimate.d.ts.map +1 -1
  121. package/dist/types/generated/codama/accounts/configState.d.ts +4 -4
  122. package/dist/types/generated/codama/accounts/contractState.d.ts +16 -16
  123. package/dist/types/generated/codama/accounts/contractState.d.ts.map +1 -1
  124. package/dist/types/generated/codama/instructions/createContract.d.ts +4 -4
  125. package/dist/types/generated/codama/instructions/createContract.d.ts.map +1 -1
  126. package/dist/types/generated/codama/instructions/updateConfig.d.ts +2 -2
  127. package/dist/types/generated/codama/instructions/updateContract.d.ts +14 -14
  128. package/dist/types/generated/codama/instructions/updateContract.d.ts.map +1 -1
  129. package/dist/types/generated/codama/types/contractCreated.d.ts +2 -2
  130. package/dist/types/generated/codama/types/contractCreated.d.ts.map +1 -1
  131. package/dist/types/generated/codama/types/fleet.d.ts +0 -14
  132. package/dist/types/generated/codama/types/fleet.d.ts.map +1 -1
  133. package/dist/types/generated/codama/types/index.d.ts +0 -1
  134. package/dist/types/generated/codama/types/index.d.ts.map +1 -1
  135. package/dist/types/generated/codama/types/shipStats.d.ts +1 -3
  136. package/dist/types/generated/codama/types/shipStats.d.ts.map +1 -1
  137. package/dist/types/generated/codama/types/staleDecayApplied.d.ts +4 -4
  138. package/dist/types/generated/codama/types/staleDecayApplied.d.ts.map +1 -1
  139. package/dist/types/instructions/createContract.d.ts +6 -6
  140. package/dist/types/instructions/createContract.d.ts.map +1 -1
  141. package/dist/types/instructions/index.d.ts +2 -0
  142. package/dist/types/instructions/index.d.ts.map +1 -1
  143. package/dist/types/instructions/migrateConfig.d.ts +39 -0
  144. package/dist/types/instructions/migrateConfig.d.ts.map +1 -0
  145. package/dist/types/instructions/migrateContract.d.ts +44 -0
  146. package/dist/types/instructions/migrateContract.d.ts.map +1 -0
  147. package/dist/types/instructions/reserveRental.d.ts +10 -2
  148. package/dist/types/instructions/reserveRental.d.ts.map +1 -1
  149. package/dist/types/instructions/updateConfig.d.ts +1 -1
  150. package/dist/types/instructions/updateContract.d.ts +5 -5
  151. package/dist/types/instructions/updateContract.d.ts.map +1 -1
  152. package/dist/types/kit/index.d.ts +1 -0
  153. package/dist/types/kit/index.d.ts.map +1 -1
  154. package/dist/types/legacy/index.d.ts +2 -0
  155. package/dist/types/legacy/index.d.ts.map +1 -1
  156. package/dist/types/params/index.d.ts +1 -0
  157. package/dist/types/params/index.d.ts.map +1 -1
  158. package/dist/types/params/points.d.ts +71 -0
  159. package/dist/types/params/points.d.ts.map +1 -0
  160. package/dist/types/utils/clock.d.ts +24 -0
  161. package/dist/types/utils/clock.d.ts.map +1 -0
  162. package/dist/types/utils/contractSnapshot.d.ts +24 -1
  163. package/dist/types/utils/contractSnapshot.d.ts.map +1 -1
  164. package/dist/types/utils/index.d.ts +2 -0
  165. package/dist/types/utils/index.d.ts.map +1 -1
  166. package/dist/types/utils/staleDecay.d.ts +21 -0
  167. package/dist/types/utils/staleDecay.d.ts.map +1 -0
  168. package/dist/types/utils/staleDecay.test.d.ts +2 -0
  169. package/dist/types/utils/staleDecay.test.d.ts.map +1 -0
  170. package/dist/types/version.d.ts +1 -1
  171. package/package.json +3 -4
  172. package/dist/cjs/generated/codama/types/combatStats.js +0 -49
  173. package/dist/cjs/generated/codama/types/combatStats.js.map +0 -1
  174. package/dist/esm/generated/codama/types/combatStats.js +0 -44
  175. package/dist/esm/generated/codama/types/combatStats.js.map +0 -1
  176. package/dist/types/generated/codama/types/combatStats.d.ts +0 -28
  177. package/dist/types/generated/codama/types/combatStats.d.ts.map +0 -1
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ /**
3
+ * @purpose Points parameter conversion utilities
4
+ *
5
+ * Converts user-friendly point amounts to dust (smallest unit) for use with Solana programs.
6
+ * 1 point = 100,000,000 dust (8 decimal places — same precision as ATLAS/stardust).
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.DUST_PER_POINT = void 0;
10
+ exports.convertPoints = convertPoints;
11
+ exports.dustToPoints = dustToPoints;
12
+ exports.formatPoints = formatPoints;
13
+ /**
14
+ * Dust per point (8 decimal places). Mirrors the on-chain precision —
15
+ * the `bid_points` u64 the SRSLY program sees is always dust-scaled.
16
+ */
17
+ exports.DUST_PER_POINT = 100_000_000;
18
+ const MAX_U64 = 18446744073709551615n;
19
+ /**
20
+ * Convert points parameter to dust (smallest unit)
21
+ *
22
+ * @param amount - Amount in any supported format
23
+ * @returns Amount in dust (u64 for Solana program)
24
+ * @throws Error if amount is invalid, negative, or non-integer dust
25
+ *
26
+ * @example
27
+ * ```typescript
28
+ * convertPoints(100_000_000) // 100_000_000n dust (1 point)
29
+ * convertPoints({ points: 1 }) // 100_000_000n dust (1 point)
30
+ * convertPoints({ dust: 1_000_000 }) // 1_000_000n dust (0.01 points)
31
+ * ```
32
+ */
33
+ function convertPoints(amount) {
34
+ if (typeof amount === 'number' || typeof amount === 'bigint') {
35
+ return toDustBigInt(amount, 'dust');
36
+ }
37
+ if (typeof amount !== 'object' || amount === null) {
38
+ throw new Error(`Invalid points type. Expected number, bigint, or object. Got: ${typeof amount}`);
39
+ }
40
+ if ('points' in amount && amount.points !== undefined) {
41
+ if (amount.points < 0) {
42
+ throw new Error(`Points must be non-negative, got ${amount.points}`);
43
+ }
44
+ return toDustBigInt(amount.points * exports.DUST_PER_POINT, 'points');
45
+ }
46
+ if ('dust' in amount && amount.dust !== undefined) {
47
+ return toDustBigInt(amount.dust, 'dust');
48
+ }
49
+ throw new Error(`Invalid points format. Expected number, bigint, { points: number }, or { dust: number | bigint }. ` +
50
+ `Got: ${JSON.stringify(amount)}`);
51
+ }
52
+ function toDustBigInt(raw, unit) {
53
+ if (typeof raw === 'bigint') {
54
+ if (raw < 0n)
55
+ throw new Error(`Points must be non-negative, got ${raw}`);
56
+ if (raw > MAX_U64)
57
+ throw new Error(`Points too large. Max u64: ${MAX_U64}, got: ${raw}`);
58
+ return raw;
59
+ }
60
+ if (!Number.isFinite(raw)) {
61
+ throw new Error(`Points must be a finite number, got ${raw}`);
62
+ }
63
+ if (raw < 0) {
64
+ throw new Error(`Points must be non-negative, got ${raw}`);
65
+ }
66
+ // `{ points: ... }` arrives here already multiplied by 1e8 — round to
67
+ // absorb floating-point drift (e.g. 1.5 * 1e8 → 150000000.00000003).
68
+ const value = unit === 'points' ? Math.round(raw) : raw;
69
+ if (!Number.isInteger(value)) {
70
+ throw new Error(`Dust must be a whole number, got ${raw}. ` +
71
+ `For sub-dust precision use \`{ points: ${raw / exports.DUST_PER_POINT} }\` instead.`);
72
+ }
73
+ const big = BigInt(value);
74
+ if (big > MAX_U64)
75
+ throw new Error(`Points too large. Max u64: ${MAX_U64}, got: ${big}`);
76
+ return big;
77
+ }
78
+ /**
79
+ * Convert dust to points for display
80
+ *
81
+ * @param dust - Amount in dust
82
+ * @returns Amount in points (decimal)
83
+ *
84
+ * @example
85
+ * ```typescript
86
+ * dustToPoints(100_000_000n) // 1.0
87
+ * dustToPoints(50_000_000n) // 0.5
88
+ * ```
89
+ */
90
+ function dustToPoints(dust) {
91
+ const dustNum = typeof dust === 'bigint' ? Number(dust) : dust;
92
+ return dustNum / exports.DUST_PER_POINT;
93
+ }
94
+ /**
95
+ * Format dust amount for display
96
+ *
97
+ * @param dust - Amount in dust
98
+ * @param decimals - Number of decimal places (default: 8)
99
+ * @returns Formatted points string
100
+ *
101
+ * @example
102
+ * ```typescript
103
+ * formatPoints(100_000_000n) // "1.00000000 points"
104
+ * formatPoints(50_000_000n, 2) // "0.50 points"
105
+ * ```
106
+ */
107
+ function formatPoints(dust, decimals = 8) {
108
+ return `${dustToPoints(dust).toFixed(decimals)} points`;
109
+ }
110
+ //# sourceMappingURL=points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"points.js","sourceRoot":"","sources":["../../../src/params/points.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ /**
3
+ * @purpose Read the on-chain Clock sysvar to get `unix_timestamp`.
4
+ *
5
+ * Use this instead of `Date.now()` whenever the SDK quotes a value the
6
+ * on-chain program would compute against `Clock::get()` — wall-clock skew
7
+ * between the client and the cluster can otherwise produce a stale or
8
+ * future-dated answer (matters for `rate_after_stale_decay` and any time
9
+ * projection that crosses the `stale_since` sentinel).
10
+ *
11
+ * Layout (offsets, little-endian):
12
+ * 0 slot u64
13
+ * 8 epoch_start_timestamp i64
14
+ * 16 epoch u64
15
+ * 24 leader_schedule_epoch u64
16
+ * 32 unix_timestamp i64 ← this is what callers want
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.fetchChainNowSeconds = fetchChainNowSeconds;
20
+ const kit_1 = require("@solana/kit");
21
+ const rpc_1 = require("./rpc");
22
+ const config_1 = require("./config");
23
+ const CLOCK_SYSVAR = (0, kit_1.address)('SysvarC1ock11111111111111111111111111111111');
24
+ /**
25
+ * Fetch the cluster's `Clock::unix_timestamp` as a JS `number` (seconds).
26
+ *
27
+ * One RPC round-trip (`getAccountInfo` on the sysvar). Safe to call in
28
+ * parallel with other fetches.
29
+ */
30
+ async function fetchChainNowSeconds(rpcUrl) {
31
+ const rpc = (0, rpc_1.createRpc)(rpcUrl ?? (0, config_1.getRpcUrl)());
32
+ const response = await rpc.getAccountInfo(CLOCK_SYSVAR, { encoding: 'base64' }).send();
33
+ const info = response.value;
34
+ if (!info) {
35
+ throw new Error('Clock sysvar account not found');
36
+ }
37
+ const data = info.data[0];
38
+ const bytes = (0, kit_1.getBase64Encoder)().encode(data);
39
+ const view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
40
+ return Number(view.getBigInt64(32, true));
41
+ }
42
+ //# sourceMappingURL=clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../../src/utils/clock.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAcH,oDAWC;AAvBD,qCAAwD;AACxD,+BAAkC;AAClC,qCAAqC;AAErC,MAAM,YAAY,GAAG,IAAA,aAAO,EAAC,6CAA6C,CAAC,CAAC;AAE5E;;;;;GAKG;AACI,KAAK,UAAU,oBAAoB,CAAC,MAAe;IACxD,MAAM,GAAG,GAAG,IAAA,eAAS,EAAC,MAAM,IAAI,IAAA,kBAAS,GAAE,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvF,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,MAAM,IAAI,GAAI,IAAI,CAAC,IAAyB,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAA,sBAAgB,GAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -25,6 +25,8 @@ const rental_1 = require("../accounts/rental");
25
25
  const srsly_1 = require("../pda/srsly");
26
26
  const config_2 = require("./config");
27
27
  const bidMath_1 = require("./bidMath");
28
+ const clock_1 = require("./clock");
29
+ const staleDecay_1 = require("./staleDecay");
28
30
  const SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';
29
31
  /**
30
32
  * Fetch a contract and every account directly attached to it in one shot,
@@ -52,9 +54,10 @@ const SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';
52
54
  */
53
55
  async function getContractSnapshot(args) {
54
56
  const rpcUrl = args.rpcUrl ?? (0, config_2.getRpcUrl)();
55
- const [config, contract] = await Promise.all([
57
+ const [config, contract, nowSeconds] = await Promise.all([
56
58
  (0, config_1.fetchConfig)(rpcUrl),
57
59
  (0, contract_1.fetchContract)(args.contractAddress, rpcUrl),
60
+ (0, clock_1.fetchChainNowSeconds)(rpcUrl),
58
61
  ]);
59
62
  const contractData = contract.data;
60
63
  const activePromise = contractData.activeRental && contractData.activeRental.toString() !== SYSTEM_PROGRAM_ID
@@ -68,9 +71,10 @@ async function getContractSnapshot(args) {
68
71
  .catch(() => null)
69
72
  : Promise.resolve(null);
70
73
  const [activeRental, queuedRental] = await Promise.all([activePromise, queuedPromise]);
71
- const partialSnap = { config, contract, activeRental, queuedRental };
74
+ const partialSnap = { config, contract, activeRental, queuedRental, nowSeconds };
72
75
  const minimumBid = computeMinimumBidFromSnapshot(partialSnap);
73
- return { ...partialSnap, minimumBid };
76
+ const effectiveRate = (0, staleDecay_1.rateAfterStaleDecay)(contractData, config.data, nowSeconds);
77
+ return { ...partialSnap, minimumBid, effectiveRate };
74
78
  }
75
79
  /**
76
80
  * Resolve a `ContractSnapshot` from caller-supplied data or fetch fresh.
@@ -123,6 +127,18 @@ function isSnapshotStale(snap) {
123
127
  * projection (`delaySeconds` / `nowSeconds`) or with an overridden
124
128
  * `atlasPerPoint` ratio. For the at-fetch-time floor, read
125
129
  * `snap.minimumBid` directly.
130
+ *
131
+ * Both `.atlas` and `.points` are on-chain-ready bid values — callers
132
+ * can feed them straight into `reserveRental(...)` without further
133
+ * conversion or threshold-clamping:
134
+ *
135
+ * - First-reservation contracts (`current === null`): both fields are
136
+ * clamped up to `config.min_capture_threshold` (and its atlas
137
+ * equivalent) so a bid built from either field clears the
138
+ * `bid_threshold` check.
139
+ * - Contested contracts (`current !== null`): `.atlas` is the
140
+ * rate-derived ramp floor only; `.points` additionally clamps to
141
+ * `min_capture_threshold` (the ramp dominates atlas by design).
126
142
  */
127
143
  function computeMinimumBidFromSnapshot(snap, opts = {}) {
128
144
  const cfgData = snap.config.data;
@@ -149,7 +165,7 @@ function computeMinimumBidFromSnapshot(snap, opts = {}) {
149
165
  }
150
166
  const now = opts.nowSeconds !== undefined
151
167
  ? Math.floor(opts.nowSeconds)
152
- : Math.floor(Date.now() / 1000) + Math.max(0, opts.delaySeconds ?? 0);
168
+ : snap.nowSeconds + Math.max(0, opts.delaySeconds ?? 0);
153
169
  let closeness = 0;
154
170
  if (activeStart !== null && activeEnd !== null && activeEnd > activeStart) {
155
171
  const span = activeEnd - activeStart;
@@ -176,9 +192,34 @@ function computeMinimumBidFromSnapshot(snap, opts = {}) {
176
192
  const pointsBid = pointsDenom > 0n && minBidStardust > 0n
177
193
  ? (minBidStardust * 100000000n + pointsDenom - 1n) / pointsDenom
178
194
  : 0n;
195
+ // Apply on-chain clamping by `config.min_capture_threshold`. The rule
196
+ // is asymmetric across the two reserve paths
197
+ // (`rust/programs/srsly/src/instructions/rental_reserve.rs`):
198
+ //
199
+ // - First reservation (no queued rental, `current === null`): both
200
+ // axes pass through `bid_threshold = max(rate / atlas_per_point,
201
+ // min_capture_threshold)` in dust. Atlas is checked transitively
202
+ // via `bid_atlas / atlas_per_point >= threshold` (`:222-225`), so
203
+ // the effective atlas floor is `threshold × atlas_per_point` stardust.
204
+ // - Contested reservation (`current !== null`): only points get the
205
+ // threshold clamp (`:456`). Atlas only needs to clear
206
+ // `floor_stardust` from the rate-derived ramp — the ramp already
207
+ // dominates the threshold by design.
208
+ const minCaptureThresholdDust = BigInt(cfgData.minCaptureThreshold);
209
+ if (current === null) {
210
+ const rateAsPointsDust = atlasPerPoint > 0n ? rateStardust / atlasPerPoint : 0n;
211
+ const thresholdDust = rateAsPointsDust > minCaptureThresholdDust ? rateAsPointsDust : minCaptureThresholdDust;
212
+ return {
213
+ atlas: thresholdDust * atlasPerPoint,
214
+ points: thresholdDust,
215
+ current,
216
+ now,
217
+ };
218
+ }
219
+ const clampedPoints = pointsBid > minCaptureThresholdDust ? pointsBid : minCaptureThresholdDust;
179
220
  return {
180
221
  atlas: minBidStardust,
181
- points: pointsBid,
222
+ points: clampedPoints,
182
223
  current,
183
224
  now,
184
225
  };
@@ -1 +1 @@
1
- {"version":3,"file":"contractSnapshot.js","sourceRoot":"","sources":["../../../src/utils/contractSnapshot.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contractSnapshot.js","sourceRoot":"","sources":["../../../src/utils/contractSnapshot.ts"],"names":[],"mappings":"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"}
@@ -17,10 +17,14 @@ vitest_1.vi.mock('../pda/srsly', () => ({
17
17
  vitest_1.vi.mock('./config', () => ({
18
18
  getRpcUrl: () => 'http://localhost:8899',
19
19
  }));
20
+ vitest_1.vi.mock('./clock', () => ({
21
+ fetchChainNowSeconds: vitest_1.vi.fn(),
22
+ }));
20
23
  const config_1 = require("../accounts/config");
21
24
  const contract_1 = require("../accounts/contract");
22
25
  const rental_1 = require("../accounts/rental");
23
26
  const srsly_1 = require("../pda/srsly");
27
+ const clock_1 = require("./clock");
24
28
  const contractSnapshot_1 = require("./contractSnapshot");
25
29
  const SYSTEM = '11111111111111111111111111111111';
26
30
  // Real validated 32-byte base58 addresses for test fixtures.
@@ -34,6 +38,7 @@ const makeConfig = (overrides = {}) => ({
34
38
  atlasPerPoint: 100n,
35
39
  captureRateBps: 10500n,
36
40
  contestedMultiplierMaxBps: 465,
41
+ minCaptureThreshold: 100000000n, // 1 point in dust — matches on-chain default
37
42
  slyvault: VAULT_ADDR,
38
43
  atlasMint: VAULT_ADDR,
39
44
  ...overrides,
@@ -45,6 +50,8 @@ const makeContract = (overrides = {}) => ({
45
50
  fleet: VAULT_ADDR,
46
51
  gameId: VAULT_ADDR,
47
52
  thread: SYSTEM,
53
+ staleSince: 0n,
54
+ staleDiscountMaxBps: 0,
48
55
  ...overrides,
49
56
  });
50
57
  const makeRental = (overrides = {}) => ({
@@ -58,6 +65,7 @@ const makeRental = (overrides = {}) => ({
58
65
  vitest_1.vi.clearAllMocks();
59
66
  vitest_1.vi.mocked(srsly_1.deriveActiveRental).mockResolvedValue(ACTIVE_ADDR);
60
67
  vitest_1.vi.mocked(srsly_1.deriveQueuedRental).mockResolvedValue(QUEUED_ADDR);
68
+ vitest_1.vi.mocked(clock_1.fetchChainNowSeconds).mockResolvedValue(1_700_000_000);
61
69
  });
62
70
  (0, vitest_1.describe)('getContractSnapshot', () => {
63
71
  (0, vitest_1.it)('returns null rentals when contract pointers are SystemProgram', async () => {
@@ -101,6 +109,7 @@ const makeRental = (overrides = {}) => ({
101
109
  });
102
110
  (0, vitest_1.describe)('computeMinimumBidFromSnapshot', () => {
103
111
  const buildSnap = (parts) => ({
112
+ nowSeconds: 1_700_000_000,
104
113
  config: { data: makeConfig(), address: 'CFG' },
105
114
  contract: {
106
115
  data: makeContract({
@@ -131,12 +140,28 @@ const makeRental = (overrides = {}) => ({
131
140
  }
132
141
  : null,
133
142
  });
134
- (0, vitest_1.it)('no current reservation → floor = rate × captureRate cap', async () => {
143
+ (0, vitest_1.it)('no current reservation → bid_threshold floor (mirrors first-reservation on-chain check)', async () => {
135
144
  const snap = buildSnap({ rate: 100000000n });
136
145
  const bid = (0, contractSnapshot_1.computeMinimumBidFromSnapshot)(snap);
137
146
  (0, vitest_1.expect)(bid.current).toBeNull();
138
- // rate * captureRateBps / baseBps = 100M * 10500 / 10000 = 105M
139
- (0, vitest_1.expect)(bid.atlas).toBe(105000000n);
147
+ // First-reservation path uses `bid_threshold = max(rate / atlas_per_point,
148
+ // min_capture_threshold)` in dust, with the atlas check transitively
149
+ // requiring `bid_atlas >= threshold × atlas_per_point` stardust.
150
+ // With defaults (rate=100M stardust, atlas_per_point=100, min_capture=100M dust):
151
+ // threshold_dust = max(100M/100, 100M) = 100M dust = 1 point
152
+ // atlas_floor = 100M × 100 = 10_000_000_000 stardust = 100 ATLAS
153
+ (0, vitest_1.expect)(bid.atlas).toBe(10000000000n);
154
+ (0, vitest_1.expect)(bid.points).toBe(100000000n);
155
+ });
156
+ (0, vitest_1.it)('no current reservation, threshold dominated by rate → atlas floor = rate × atlas_per_point', async () => {
157
+ // Rate large enough that rate/atlas_per_point overruns min_capture_threshold.
158
+ // rate = 50 ATLAS = 5_000_000_000 stardust; rate/100 = 50_000_000 dust < 100M → still clamped.
159
+ // rate = 200 ATLAS = 20_000_000_000 stardust; rate/100 = 200M dust > 100M → rate-derived wins.
160
+ const snap = buildSnap({ rate: 20000000000n });
161
+ const bid = (0, contractSnapshot_1.computeMinimumBidFromSnapshot)(snap);
162
+ (0, vitest_1.expect)(bid.current).toBeNull();
163
+ (0, vitest_1.expect)(bid.points).toBe(200000000n); // 2 points
164
+ (0, vitest_1.expect)(bid.atlas).toBe(20000000000n); // 200 ATLAS
140
165
  });
141
166
  (0, vitest_1.it)('existing ATLAS bid raises floor above rate when bid > rate', async () => {
142
167
  const snap = buildSnap({ rate: 100000000n, queuedBidAtlas: 200000000n });
@@ -1 +1 @@
1
- {"version":3,"file":"contractSnapshot.test.js","sourceRoot":"","sources":["../../../src/utils/contractSnapshot.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contractSnapshot.test.js","sourceRoot":"","sources":["../../../src/utils/contractSnapshot.test.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.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;
7
+ exports.requireValidReferrer = exports.resolveReferrer = exports.deserializeDiscountAuth = exports.createDiscount = exports.rateAfterStaleDecay = exports.fetchChainNowSeconds = 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; } });
@@ -73,6 +73,12 @@ Object.defineProperty(exports, "getContractSnapshot", { enumerable: true, get: f
73
73
  Object.defineProperty(exports, "resolveContractSnapshot", { enumerable: true, get: function () { return contractSnapshot_1.resolveContractSnapshot; } });
74
74
  Object.defineProperty(exports, "computeMinimumBidFromSnapshot", { enumerable: true, get: function () { return contractSnapshot_1.computeMinimumBidFromSnapshot; } });
75
75
  Object.defineProperty(exports, "getMinimumBid", { enumerable: true, get: function () { return contractSnapshot_1.getMinimumBid; } });
76
+ // Clock sysvar (chain time)
77
+ var clock_1 = require("./clock");
78
+ Object.defineProperty(exports, "fetchChainNowSeconds", { enumerable: true, get: function () { return clock_1.fetchChainNowSeconds; } });
79
+ // Stale-discount math (mirror of on-chain rate_after_stale_decay)
80
+ var staleDecay_1 = require("./staleDecay");
81
+ Object.defineProperty(exports, "rateAfterStaleDecay", { enumerable: true, get: function () { return staleDecay_1.rateAfterStaleDecay; } });
76
82
  // Discount Authorization
77
83
  var discountAuth_1 = require("./discountAuth");
78
84
  Object.defineProperty(exports, "createDiscount", { enumerable: true, get: function () { return discountAuth_1.createDiscount; } });
@@ -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,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"}
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,4BAA4B;AAC5B,iCAA+C;AAAtC,6GAAA,oBAAoB,OAAA;AAE7B,kEAAkE;AAClE,2CAAmD;AAA1C,iHAAA,mBAAmB,OAAA;AAE5B,yBAAyB;AACzB,+CAMwB;AALtB,8GAAA,cAAc,OAAA;AACd,uHAAA,uBAAuB,OAAA;AAMzB,8CAA8C;AAC9C,uCAAmE;AAA1D,2GAAA,eAAe,OAAA;AAAE,gHAAA,oBAAoB,OAAA"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ /**
3
+ * @purpose TS mirror of `ContractState::rate_after_stale_decay` (rust).
4
+ *
5
+ * Computes the rate a future `rental_accept` would write back, given the
6
+ * contract + config state at a specific moment in chain time. Pure — no
7
+ * RPC, no `Date.now()`. Caller supplies `nowSeconds` from the Clock
8
+ * sysvar (`fetchChainNowSeconds`) or any other authoritative source.
9
+ *
10
+ * Returns `contract.rate` unchanged when any of the on-chain short-circuits
11
+ * fire: active rental present, `stale_since == 0` sentinel,
12
+ * `stale_discount_max_bps == 0` (per-contract opt-out), or
13
+ * `stale_discount_per_day_bps == 0` (protocol-wide opt-out).
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.rateAfterStaleDecay = rateAfterStaleDecay;
17
+ const SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';
18
+ const SECONDS_PER_DAY = 86400n;
19
+ const BPS_BASE = 10000n;
20
+ /**
21
+ * Mirrors `rust/programs/srsly/src/state/contract.rs::rate_after_stale_decay`
22
+ * byte-for-byte. Any change there must be reflected here.
23
+ */
24
+ function rateAfterStaleDecay(contract, config, nowSeconds) {
25
+ const rate = BigInt(contract.rate);
26
+ if (contract.activeRental.toString() !== SYSTEM_PROGRAM_ID)
27
+ return rate;
28
+ const staleSince = BigInt(contract.staleSince);
29
+ if (staleSince === 0n)
30
+ return rate;
31
+ const maxBps = BigInt(contract.staleDiscountMaxBps);
32
+ if (maxBps === 0n)
33
+ return rate;
34
+ const perDay = BigInt(config.staleDiscountPerDayBps);
35
+ if (perDay === 0n)
36
+ return rate;
37
+ const now = typeof nowSeconds === 'bigint' ? nowSeconds : BigInt(Math.floor(nowSeconds));
38
+ const stale = now - staleSince;
39
+ const clampedStale = stale < 0n ? 0n : stale;
40
+ const rawDecay = (perDay * clampedStale) / SECONDS_PER_DAY;
41
+ const decay = rawDecay < maxBps ? rawDecay : maxBps;
42
+ const mult = BPS_BASE - decay;
43
+ const candidate = (rate * mult) / BPS_BASE;
44
+ const minRate = BigInt(config.stardustToAtlas);
45
+ return candidate < minRate ? minRate : candidate;
46
+ }
47
+ //# sourceMappingURL=staleDecay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staleDecay.js","sourceRoot":"","sources":["../../../src/utils/staleDecay.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;AAaH,kDA4BC;AApCD,MAAM,iBAAiB,GAAG,kCAAkC,CAAC;AAC7D,MAAM,eAAe,GAAG,MAAO,CAAC;AAChC,MAAM,QAAQ,GAAG,MAAO,CAAC;AAEzB;;;GAGG;AACH,SAAgB,mBAAmB,CACjC,QAAuB,EACvB,MAAmB,EACnB,UAA2B;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,QAAQ,CAAC,YAAY,CAAC,QAAQ,EAAE,KAAK,iBAAiB;QAAE,OAAO,IAAI,CAAC;IAExE,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAC/C,IAAI,UAAU,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACrD,IAAI,MAAM,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,GAAG,GAAG,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IACzF,MAAM,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC;IAC/B,MAAM,YAAY,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAC7C,MAAM,QAAQ,GAAG,CAAC,MAAM,GAAG,YAAY,CAAC,GAAG,eAAe,CAAC;IAC3D,MAAM,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IACpD,MAAM,IAAI,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC9B,MAAM,SAAS,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC;IAE3C,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/C,OAAO,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AACnD,CAAC"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const vitest_1 = require("vitest");
4
+ const staleDecay_1 = require("./staleDecay");
5
+ const SYSTEM = '11111111111111111111111111111111';
6
+ const ACTIVE = 'So11111111111111111111111111111111111111112';
7
+ const baseConfig = (overrides = {}) => ({
8
+ stardustToAtlas: 100000000n,
9
+ staleDiscountPerDayBps: 1_000, // 10% / day
10
+ ...overrides,
11
+ });
12
+ const baseContract = (overrides = {}) => ({
13
+ rate: 500000000n,
14
+ activeRental: SYSTEM,
15
+ staleSince: 1700000000n,
16
+ staleDiscountMaxBps: 10_000, // unlimited per-contract cap
17
+ ...overrides,
18
+ });
19
+ const ONE_DAY = 86_400;
20
+ (0, vitest_1.describe)('rateAfterStaleDecay (TS mirror of on-chain helper)', () => {
21
+ (0, vitest_1.describe)('short-circuits return stored rate', () => {
22
+ (0, vitest_1.it)('active rental → returns rate untouched', () => {
23
+ const c = baseContract({ activeRental: ACTIVE });
24
+ (0, vitest_1.expect)((0, staleDecay_1.rateAfterStaleDecay)(c, baseConfig(), 1_700_000_000 + ONE_DAY)).toBe(500000000n);
25
+ });
26
+ (0, vitest_1.it)('staleSince == 0 sentinel → returns rate untouched', () => {
27
+ const c = baseContract({ staleSince: 0n });
28
+ (0, vitest_1.expect)((0, staleDecay_1.rateAfterStaleDecay)(c, baseConfig(), 1_700_000_000 + ONE_DAY)).toBe(500000000n);
29
+ });
30
+ (0, vitest_1.it)('staleDiscountMaxBps == 0 (per-contract opt-out) → returns rate', () => {
31
+ const c = baseContract({ staleDiscountMaxBps: 0 });
32
+ (0, vitest_1.expect)((0, staleDecay_1.rateAfterStaleDecay)(c, baseConfig(), 1_700_000_000 + ONE_DAY)).toBe(500000000n);
33
+ });
34
+ (0, vitest_1.it)('config.staleDiscountPerDayBps == 0 (protocol opt-out) → returns rate', () => {
35
+ const cfg = baseConfig({ staleDiscountPerDayBps: 0 });
36
+ (0, vitest_1.expect)((0, staleDecay_1.rateAfterStaleDecay)(baseContract(), cfg, 1_700_000_000 + ONE_DAY)).toBe(500000000n);
37
+ });
38
+ });
39
+ (0, vitest_1.describe)('decay math', () => {
40
+ (0, vitest_1.it)('one full day at 1000 bps/day → 10% off (× 9000/10000)', () => {
41
+ const decayed = (0, staleDecay_1.rateAfterStaleDecay)(baseContract(), baseConfig(), 1_700_000_000 + ONE_DAY);
42
+ (0, vitest_1.expect)(decayed).toBe((500000000n * 9000n) / 10000n);
43
+ });
44
+ (0, vitest_1.it)('half a day → 5% off (per-second precision)', () => {
45
+ const decayed = (0, staleDecay_1.rateAfterStaleDecay)(baseContract(), baseConfig(), 1_700_000_000 + ONE_DAY / 2);
46
+ (0, vitest_1.expect)(decayed).toBe((500000000n * 9500n) / 10000n);
47
+ });
48
+ (0, vitest_1.it)('per-contract cap clamps total decay', () => {
49
+ const c = baseContract({ staleDiscountMaxBps: 5_000 }); // 50% max off
50
+ const wayStale = 1_700_000_000 + 100 * ONE_DAY;
51
+ (0, vitest_1.expect)((0, staleDecay_1.rateAfterStaleDecay)(c, baseConfig(), wayStale)).toBe((500000000n * 5000n) / 10000n);
52
+ });
53
+ (0, vitest_1.it)('program-wide minimum (stardustToAtlas) shadows the cap', () => {
54
+ // rate=200M (2× the program min), unlimited per-contract cap.
55
+ // After many days the candidate would dip below stardustToAtlas;
56
+ // clamp pins it at stardustToAtlas.
57
+ const c = baseContract({ rate: 200000000n });
58
+ const wayStale = 1_700_000_000 + 1_000 * ONE_DAY;
59
+ (0, vitest_1.expect)((0, staleDecay_1.rateAfterStaleDecay)(c, baseConfig(), wayStale)).toBe(100000000n);
60
+ });
61
+ (0, vitest_1.it)('now before staleSince → no decay (saturating sub does not underflow)', () => {
62
+ const earlier = 1_700_000_000 - ONE_DAY;
63
+ (0, vitest_1.expect)((0, staleDecay_1.rateAfterStaleDecay)(baseContract(), baseConfig(), earlier)).toBe(500000000n);
64
+ });
65
+ (0, vitest_1.it)('accepts bigint nowSeconds', () => {
66
+ const decayed = (0, staleDecay_1.rateAfterStaleDecay)(baseContract(), baseConfig(), BigInt(1_700_000_000 + ONE_DAY));
67
+ (0, vitest_1.expect)(decayed).toBe((500000000n * 9000n) / 10000n);
68
+ });
69
+ });
70
+ });
71
+ //# sourceMappingURL=staleDecay.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staleDecay.test.js","sourceRoot":"","sources":["../../../src/utils/staleDecay.test.ts"],"names":[],"mappings":"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"}
@@ -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 = '5.0.0';
6
+ exports.VERSION = '5.1.0';
7
7
  //# sourceMappingURL=version.js.map