@wuwei-labs/srsly 4.2.9 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/cost/constants.js +34 -0
- package/dist/cjs/cost/constants.js.map +1 -0
- package/dist/cjs/cost/estimate.js +128 -0
- package/dist/cjs/cost/estimate.js.map +1 -0
- package/dist/cjs/cost/estimate.test.js +145 -0
- package/dist/cjs/cost/estimate.test.js.map +1 -0
- package/dist/cjs/cost/index.js +20 -0
- package/dist/cjs/cost/index.js.map +1 -0
- package/dist/cjs/cost/sizes.js +21 -0
- package/dist/cjs/cost/sizes.js.map +1 -0
- package/dist/cjs/generated/codama/accounts/borrowerState.js +2 -2
- package/dist/cjs/generated/codama/accounts/borrowerState.js.map +1 -1
- package/dist/cjs/generated/codama/accounts/configState.js +11 -9
- package/dist/cjs/generated/codama/accounts/configState.js.map +1 -1
- package/dist/cjs/generated/codama/accounts/contractState.js +4 -0
- package/dist/cjs/generated/codama/accounts/contractState.js.map +1 -1
- package/dist/cjs/generated/codama/accounts/rentalState.js +4 -2
- package/dist/cjs/generated/codama/accounts/rentalState.js.map +1 -1
- package/dist/cjs/generated/codama/instructions/closeRental.js +2 -2
- package/dist/cjs/generated/codama/instructions/closeRental.js.map +1 -1
- package/dist/cjs/generated/codama/instructions/createContract.js +2 -0
- package/dist/cjs/generated/codama/instructions/createContract.js.map +1 -1
- package/dist/cjs/generated/codama/instructions/reserveRental.js +2 -2
- package/dist/cjs/generated/codama/instructions/reserveRental.js.map +1 -1
- package/dist/cjs/generated/codama/instructions/updateConfig.js +8 -8
- package/dist/cjs/generated/codama/instructions/updateConfig.js.map +1 -1
- package/dist/cjs/generated/codama/instructions/updateContract.js +2 -0
- package/dist/cjs/generated/codama/instructions/updateContract.js.map +1 -1
- package/dist/cjs/generated/codama/types/index.js +1 -1
- package/dist/cjs/generated/codama/types/index.js.map +1 -1
- package/dist/cjs/generated/codama/types/rentalClosed.js +2 -2
- package/dist/cjs/generated/codama/types/rentalClosed.js.map +1 -1
- package/dist/cjs/generated/codama/types/reservationContested.js +41 -0
- package/dist/cjs/generated/codama/types/reservationContested.js.map +1 -0
- package/dist/cjs/generated/codama/types/reservationCreated.js +2 -2
- package/dist/cjs/generated/codama/types/reservationCreated.js.map +1 -1
- package/dist/cjs/instructions/createBorrower.js +1 -1
- package/dist/cjs/instructions/createContract.js +2 -1
- package/dist/cjs/instructions/createContract.js.map +1 -1
- package/dist/cjs/instructions/createContractThread.js +2 -4
- package/dist/cjs/instructions/createContractThread.js.map +1 -1
- package/dist/cjs/instructions/reserveRental.js +14 -2
- package/dist/cjs/instructions/reserveRental.js.map +1 -1
- package/dist/cjs/instructions/updateConfig.js +1 -1
- package/dist/cjs/instructions/updateConfig.js.map +1 -1
- package/dist/cjs/instructions/updateContract.js +3 -1
- package/dist/cjs/instructions/updateContract.js.map +1 -1
- package/dist/cjs/kit/index.js +1 -0
- package/dist/cjs/kit/index.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/utils/bidMath.js +154 -0
- package/dist/cjs/utils/bidMath.js.map +1 -0
- package/dist/cjs/utils/index.js +5 -1
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/cost/constants.js +31 -0
- package/dist/esm/cost/constants.js.map +1 -0
- package/dist/esm/cost/estimate.js +122 -0
- package/dist/esm/cost/estimate.js.map +1 -0
- package/dist/esm/cost/estimate.test.js +143 -0
- package/dist/esm/cost/estimate.test.js.map +1 -0
- package/dist/esm/cost/index.js +4 -0
- package/dist/esm/cost/index.js.map +1 -0
- package/dist/esm/cost/sizes.js +18 -0
- package/dist/esm/cost/sizes.js.map +1 -0
- package/dist/esm/generated/codama/accounts/borrowerState.js +3 -3
- package/dist/esm/generated/codama/accounts/borrowerState.js.map +1 -1
- package/dist/esm/generated/codama/accounts/configState.js +11 -9
- package/dist/esm/generated/codama/accounts/configState.js.map +1 -1
- package/dist/esm/generated/codama/accounts/contractState.js +4 -0
- package/dist/esm/generated/codama/accounts/contractState.js.map +1 -1
- package/dist/esm/generated/codama/accounts/rentalState.js +4 -2
- package/dist/esm/generated/codama/accounts/rentalState.js.map +1 -1
- package/dist/esm/generated/codama/instructions/closeRental.js +2 -2
- package/dist/esm/generated/codama/instructions/closeRental.js.map +1 -1
- package/dist/esm/generated/codama/instructions/createContract.js +3 -1
- package/dist/esm/generated/codama/instructions/createContract.js.map +1 -1
- package/dist/esm/generated/codama/instructions/reserveRental.js +3 -3
- package/dist/esm/generated/codama/instructions/reserveRental.js.map +1 -1
- package/dist/esm/generated/codama/instructions/updateConfig.js +8 -8
- package/dist/esm/generated/codama/instructions/updateConfig.js.map +1 -1
- package/dist/esm/generated/codama/instructions/updateContract.js +3 -1
- package/dist/esm/generated/codama/instructions/updateContract.js.map +1 -1
- package/dist/esm/generated/codama/types/index.js +1 -1
- package/dist/esm/generated/codama/types/index.js.map +1 -1
- package/dist/esm/generated/codama/types/rentalClosed.js +3 -3
- package/dist/esm/generated/codama/types/rentalClosed.js.map +1 -1
- package/dist/esm/generated/codama/types/reservationContested.js +36 -0
- package/dist/esm/generated/codama/types/reservationContested.js.map +1 -0
- package/dist/esm/generated/codama/types/reservationCreated.js +3 -3
- package/dist/esm/generated/codama/types/reservationCreated.js.map +1 -1
- package/dist/esm/instructions/createBorrower.js +1 -1
- package/dist/esm/instructions/createContract.js +2 -1
- package/dist/esm/instructions/createContract.js.map +1 -1
- package/dist/esm/instructions/createContractThread.js +1 -3
- package/dist/esm/instructions/createContractThread.js.map +1 -1
- package/dist/esm/instructions/reserveRental.js +14 -2
- package/dist/esm/instructions/reserveRental.js.map +1 -1
- package/dist/esm/instructions/updateConfig.js +1 -1
- package/dist/esm/instructions/updateConfig.js.map +1 -1
- package/dist/esm/instructions/updateContract.js +3 -1
- package/dist/esm/instructions/updateContract.js.map +1 -1
- package/dist/esm/kit/index.js +1 -0
- package/dist/esm/kit/index.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/utils/bidMath.js +150 -0
- package/dist/esm/utils/bidMath.js.map +1 -0
- package/dist/esm/utils/index.js +2 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/idl/srsly.json +133 -49
- package/dist/types/cost/constants.d.ts +31 -0
- package/dist/types/cost/constants.d.ts.map +1 -0
- package/dist/types/cost/estimate.d.ts +94 -0
- package/dist/types/cost/estimate.d.ts.map +1 -0
- package/dist/types/cost/estimate.test.d.ts +2 -0
- package/dist/types/cost/estimate.test.d.ts.map +1 -0
- package/dist/types/cost/index.d.ts +4 -0
- package/dist/types/cost/index.d.ts.map +1 -0
- package/dist/types/cost/sizes.d.ts +18 -0
- package/dist/types/cost/sizes.d.ts.map +1 -0
- package/dist/types/generated/codama/accounts/borrowerState.d.ts +2 -2
- package/dist/types/generated/codama/accounts/borrowerState.d.ts.map +1 -1
- package/dist/types/generated/codama/accounts/configState.d.ts +44 -12
- package/dist/types/generated/codama/accounts/configState.d.ts.map +1 -1
- package/dist/types/generated/codama/accounts/contractState.d.ts +22 -0
- package/dist/types/generated/codama/accounts/contractState.d.ts.map +1 -1
- package/dist/types/generated/codama/accounts/rentalState.d.ts +22 -6
- package/dist/types/generated/codama/accounts/rentalState.d.ts.map +1 -1
- package/dist/types/generated/codama/instructions/closeRental.d.ts +1 -1
- package/dist/types/generated/codama/instructions/createContract.d.ts +4 -0
- package/dist/types/generated/codama/instructions/createContract.d.ts.map +1 -1
- package/dist/types/generated/codama/instructions/reserveRental.d.ts +2 -2
- package/dist/types/generated/codama/instructions/reserveRental.d.ts.map +1 -1
- package/dist/types/generated/codama/instructions/updateConfig.d.ts +20 -12
- package/dist/types/generated/codama/instructions/updateConfig.d.ts.map +1 -1
- package/dist/types/generated/codama/instructions/updateContract.d.ts +14 -0
- package/dist/types/generated/codama/instructions/updateContract.d.ts.map +1 -1
- package/dist/types/generated/codama/types/index.d.ts +1 -1
- package/dist/types/generated/codama/types/index.d.ts.map +1 -1
- package/dist/types/generated/codama/types/rentalClosed.d.ts +2 -2
- package/dist/types/generated/codama/types/rentalClosed.d.ts.map +1 -1
- package/dist/types/generated/codama/types/reservationContested.d.ts +50 -0
- package/dist/types/generated/codama/types/reservationContested.d.ts.map +1 -0
- package/dist/types/generated/codama/types/reservationCreated.d.ts +2 -2
- package/dist/types/generated/codama/types/reservationCreated.d.ts.map +1 -1
- package/dist/types/instructions/createBorrower.d.ts +1 -1
- package/dist/types/instructions/createContract.d.ts +10 -0
- package/dist/types/instructions/createContract.d.ts.map +1 -1
- package/dist/types/instructions/createContractThread.d.ts.map +1 -1
- package/dist/types/instructions/reserveRental.d.ts +8 -0
- package/dist/types/instructions/reserveRental.d.ts.map +1 -1
- package/dist/types/instructions/updateConfig.d.ts +3 -2
- package/dist/types/instructions/updateConfig.d.ts.map +1 -1
- package/dist/types/instructions/updateContract.d.ts +8 -0
- package/dist/types/instructions/updateContract.d.ts.map +1 -1
- package/dist/types/kit/index.d.ts +1 -0
- package/dist/types/kit/index.d.ts.map +1 -1
- package/dist/types/utils/bidMath.d.ts +89 -0
- package/dist/types/utils/bidMath.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +1 -0
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateConfig.js","sourceRoot":"","sources":["../../../src/instructions/updateConfig.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"updateConfig.js","sourceRoot":"","sources":["../../../src/instructions/updateConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,8 @@ async function updateContract(params, config) {
|
|
|
59
59
|
params.durationMax === undefined &&
|
|
60
60
|
params.cancelDelayMin === undefined &&
|
|
61
61
|
params.reservationsDisabled === undefined &&
|
|
62
|
-
params.toClose === undefined
|
|
62
|
+
params.toClose === undefined &&
|
|
63
|
+
params.contestedThreshold === undefined) {
|
|
63
64
|
throw new Error('At least one field must be provided to update');
|
|
64
65
|
}
|
|
65
66
|
// Convert authority to transaction signer
|
|
@@ -91,6 +92,7 @@ async function updateContract(params, config) {
|
|
|
91
92
|
cancelDelayMin: cancelDelayMinSeconds,
|
|
92
93
|
reservationsDisabled: params.reservationsDisabled ?? null,
|
|
93
94
|
toClose: params.toClose ?? null,
|
|
95
|
+
contestedThreshold: params.contestedThreshold ?? null,
|
|
94
96
|
}, { programAddress });
|
|
95
97
|
return (0, instructions_2.prepareInstructions)(kitInstruction, {
|
|
96
98
|
computeUnits: params.computeUnits,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateContract.js","sourceRoot":"","sources":["../../../src/instructions/updateContract.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"updateContract.js","sourceRoot":"","sources":["../../../src/instructions/updateContract.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/kit/index.js
CHANGED
|
@@ -60,6 +60,7 @@ __exportStar(require("../instructions"), exports);
|
|
|
60
60
|
__exportStar(require("../accounts"), exports);
|
|
61
61
|
__exportStar(require("../params"), exports);
|
|
62
62
|
__exportStar(require("../pda"), exports);
|
|
63
|
+
__exportStar(require("../cost"), exports);
|
|
63
64
|
// External re-exports
|
|
64
65
|
var slyvault_1 = require("@wuwei-labs/slyvault");
|
|
65
66
|
Object.defineProperty(exports, "claim", { enumerable: true, get: function () { return slyvault_1.claim; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kit/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sCAAqC;AAA5B,kGAAA,OAAO,OAAA;AAChB,2CAAyB;AACzB,kDAAgC;AAChC,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/kit/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,sCAAqC;AAA5B,kGAAA,OAAO,OAAA;AAChB,2CAAyB;AACzB,kDAAgC;AAChC,8CAA4B;AAC5B,4CAA0B;AAC1B,yCAAuB;AACvB,0CAAwB;AAExB,sBAAsB;AACtB,iDAG8B;AAF5B,iGAAA,KAAK,OAAA;AAIP,8DAA8C"}
|
package/dist/cjs/package.json
CHANGED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* @purpose Reservation bid math helpers
|
|
4
|
+
*
|
|
5
|
+
* Pure-math + on-chain-fetch helpers for computing the contest minimum-bid
|
|
6
|
+
* floor that a challenger must clear to take an existing reservation.
|
|
7
|
+
* Mirrors the on-chain `ConfigState::bid_min_stardust` formula so client UIs
|
|
8
|
+
* (and on-chain-aware tooling) can preview the floor without hitting an RPC
|
|
9
|
+
* for every keystroke.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.computeMinimumBid = computeMinimumBid;
|
|
13
|
+
exports.getMinimumBid = getMinimumBid;
|
|
14
|
+
const config_1 = require("../accounts/config");
|
|
15
|
+
const contract_1 = require("../accounts/contract");
|
|
16
|
+
const rental_1 = require("../accounts/rental");
|
|
17
|
+
const srsly_1 = require("../pda/srsly");
|
|
18
|
+
const config_2 = require("./config");
|
|
19
|
+
const rpc_1 = require("./rpc");
|
|
20
|
+
const SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';
|
|
21
|
+
/**
|
|
22
|
+
* Pure math: contest minimum-bid floor in stardust.
|
|
23
|
+
*
|
|
24
|
+
* Mirror of `ConfigState::bid_min_stardust` on-chain.
|
|
25
|
+
*
|
|
26
|
+
* floor = max(rate, defenderBid) × ramp
|
|
27
|
+
* ramp = max(captureRate, 1 + (maxMult - 1) × closeness)
|
|
28
|
+
*
|
|
29
|
+
* `closenessFraction` is in `[0, 1]` — the fraction of the active rental's
|
|
30
|
+
* remaining window that has elapsed since the defender's reservation. 0 =
|
|
31
|
+
* defender just placed; 1 = active rental about to end (snipe).
|
|
32
|
+
*
|
|
33
|
+
* `contestedMultiplierMaxBps` is on the protocol's custom 100=1× scale:
|
|
34
|
+
* 100 disables the ramp, 10_000 = 100×.
|
|
35
|
+
*/
|
|
36
|
+
function computeMinimumBid(args) {
|
|
37
|
+
const closeness = Math.max(0, Math.min(1, args.closenessFraction));
|
|
38
|
+
const closenessBps = BigInt(Math.round(closeness * 10_000));
|
|
39
|
+
const maxBps = BigInt(Math.max(100, args.contestedMultiplierMaxBps));
|
|
40
|
+
const extraBps = maxBps - 100n;
|
|
41
|
+
// ramped_bps in 4-decimal precision: 10_000 = 1×, 46_500 = 4.65×.
|
|
42
|
+
const rampedBps = 10000n + (extraBps * closenessBps) / 100n;
|
|
43
|
+
const capBps = args.captureRateBps > 10000n ? args.captureRateBps : 10000n;
|
|
44
|
+
const effBps = rampedBps > capBps ? rampedBps : capBps;
|
|
45
|
+
const defenderBid = args.defenderBidStardust ?? 0n;
|
|
46
|
+
const base = args.rateStardust > defenderBid ? args.rateStardust : defenderBid;
|
|
47
|
+
return (base * effBps) / 10000n;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* High-level helper: compute the contest minimum bid for a contract right
|
|
51
|
+
* now (or at `now + delaySeconds`).
|
|
52
|
+
*
|
|
53
|
+
* Fetches `ConfigState`, `ContractState`, and the active/queued `RentalState`
|
|
54
|
+
* accounts, derives `closeness` from the active rental window, and returns
|
|
55
|
+
* the floor a challenger must clear plus enough context to render a UI.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const floor = await getMinimumBid({ contractAddress: 'Abc...' });
|
|
60
|
+
* console.log('Bid at least', floor.minBidStardust, 'stardust');
|
|
61
|
+
*
|
|
62
|
+
* // Preview the floor 4 hours from now (snipe-window pricing):
|
|
63
|
+
* const later = await getMinimumBid({
|
|
64
|
+
* contractAddress: 'Abc...',
|
|
65
|
+
* delaySeconds: 4 * 60 * 60,
|
|
66
|
+
* });
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* If the contract has no active rental yet, closeness = 0 and the floor
|
|
70
|
+
* collapses to the rate-bump floor (`rate × captureRate`).
|
|
71
|
+
*/
|
|
72
|
+
async function getMinimumBid(args) {
|
|
73
|
+
const rpcUrl = args.rpcUrl ?? (0, config_2.getRpcUrl)();
|
|
74
|
+
const rpc = (0, rpc_1.createRpc)(rpcUrl);
|
|
75
|
+
const cfgPromise = (0, config_1.fetchConfig)(rpcUrl);
|
|
76
|
+
const contractPromise = (0, contract_1.fetchContract)(args.contractAddress, rpcUrl);
|
|
77
|
+
const [cfg, contract] = await Promise.all([cfgPromise, contractPromise]);
|
|
78
|
+
const cfgData = cfg.data;
|
|
79
|
+
const contractData = contract.data;
|
|
80
|
+
const rateStardust = BigInt(contractData.rate);
|
|
81
|
+
const atlasPerPoint = args.atlasPerPoint ?? BigInt(cfgData.atlasPerPoint);
|
|
82
|
+
const stardustPerAtlas = BigInt(cfgData.stardustToAtlas);
|
|
83
|
+
const activeAddr = await (0, srsly_1.deriveActiveRental)(contract.address);
|
|
84
|
+
const queuedAddr = await (0, srsly_1.deriveQueuedRental)(contract.address);
|
|
85
|
+
// Active rental — only meaningful if the contract field points at it.
|
|
86
|
+
let activeStart = null;
|
|
87
|
+
let activeEnd = null;
|
|
88
|
+
if (contractData.activeRental &&
|
|
89
|
+
contractData.activeRental.toString() !== SYSTEM_PROGRAM_ID) {
|
|
90
|
+
try {
|
|
91
|
+
const active = await (0, rental_1.fetchRental)(activeAddr, rpcUrl);
|
|
92
|
+
const a = active.data;
|
|
93
|
+
activeStart = Number(a.startTime);
|
|
94
|
+
activeEnd = Number(a.endTime);
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
// Account missing despite contract pointer — treat as no active rental.
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
// Queued rental — defender bid lives here if a reservation exists.
|
|
101
|
+
let defenderBidStardust = 0n;
|
|
102
|
+
if (contractData.queuedRental &&
|
|
103
|
+
contractData.queuedRental.toString() !== SYSTEM_PROGRAM_ID) {
|
|
104
|
+
try {
|
|
105
|
+
const queued = await (0, rental_1.fetchRental)(queuedAddr, rpcUrl);
|
|
106
|
+
const q = queued.data;
|
|
107
|
+
const bidAtlas = BigInt(q.bidAtlas);
|
|
108
|
+
const bidPoints = BigInt(q.bidPoints);
|
|
109
|
+
// Points are 8-decimal dust; converting to stardust requires the same
|
|
110
|
+
// 8-decimal precision: stardust = points_dust * atlasPerPoint *
|
|
111
|
+
// stardustPerAtlas / 1e8. With both at 1e8 precision this collapses
|
|
112
|
+
// to points_dust * atlasPerPoint.
|
|
113
|
+
const pointsAsStardust = bidPoints > 0n
|
|
114
|
+
? (bidPoints * atlasPerPoint * stardustPerAtlas) / 100000000n
|
|
115
|
+
: 0n;
|
|
116
|
+
defenderBidStardust = bidAtlas + pointsAsStardust;
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// Missing queued account — leave defenderBidStardust = 0.
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
const evaluatedAtSeconds = args.nowSeconds !== undefined
|
|
123
|
+
? Math.floor(args.nowSeconds)
|
|
124
|
+
: Math.floor(Date.now() / 1000) + Math.max(0, args.delaySeconds ?? 0);
|
|
125
|
+
let closeness = 0;
|
|
126
|
+
if (activeStart !== null && activeEnd !== null && activeEnd > activeStart) {
|
|
127
|
+
const span = activeEnd - activeStart;
|
|
128
|
+
const elapsed = evaluatedAtSeconds - activeStart;
|
|
129
|
+
closeness = Math.max(0, Math.min(1, elapsed / span));
|
|
130
|
+
}
|
|
131
|
+
const minBidStardust = computeMinimumBid({
|
|
132
|
+
rateStardust,
|
|
133
|
+
defenderBidStardust,
|
|
134
|
+
contestedMultiplierMaxBps: cfgData.contestedMultiplierMaxBps,
|
|
135
|
+
captureRateBps: BigInt(cfgData.captureRateBps),
|
|
136
|
+
closenessFraction: closeness,
|
|
137
|
+
});
|
|
138
|
+
const baseStardust = rateStardust > defenderBidStardust ? rateStardust : defenderBidStardust;
|
|
139
|
+
const rampMultiplier = baseStardust > 0n ? Number(minBidStardust) / Number(baseStardust) : 1;
|
|
140
|
+
// RPC reference kept to match the codebase pattern even when unused;
|
|
141
|
+
// future refinements (e.g. fetching chain time) can plug in here.
|
|
142
|
+
void rpc;
|
|
143
|
+
return {
|
|
144
|
+
minBidStardust,
|
|
145
|
+
defenderBidStardust,
|
|
146
|
+
rateStardust,
|
|
147
|
+
closenessFraction: closeness,
|
|
148
|
+
rampMultiplier,
|
|
149
|
+
evaluatedAtSeconds,
|
|
150
|
+
activeEndSeconds: activeEnd,
|
|
151
|
+
activeStartSeconds: activeStart,
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
//# sourceMappingURL=bidMath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bidMath.js","sourceRoot":"","sources":["../../../src/utils/bidMath.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/utils/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @module utils
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.deserializeDiscountAuth = exports.createDiscount = 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.deserializeDiscountAuth = exports.createDiscount = exports.getMinimumBid = 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; } });
|
|
@@ -57,6 +57,10 @@ Object.defineProperty(exports, "getLookupTableAddress", { enumerable: true, get:
|
|
|
57
57
|
var rental_1 = require("./rental");
|
|
58
58
|
Object.defineProperty(exports, "hasActiveRental", { enumerable: true, get: function () { return rental_1.hasActiveRental; } });
|
|
59
59
|
Object.defineProperty(exports, "hasQueuedRental", { enumerable: true, get: function () { return rental_1.hasQueuedRental; } });
|
|
60
|
+
// Bid Math
|
|
61
|
+
var bidMath_1 = require("./bidMath");
|
|
62
|
+
Object.defineProperty(exports, "computeMinimumBid", { enumerable: true, get: function () { return bidMath_1.computeMinimumBid; } });
|
|
63
|
+
Object.defineProperty(exports, "getMinimumBid", { enumerable: true, get: function () { return bidMath_1.getMinimumBid; } });
|
|
60
64
|
// Discount Authorization
|
|
61
65
|
var discountAuth_1 = require("./discountAuth");
|
|
62
66
|
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,+CAGwB;AAFtB,mHAAA,mBAAmB,OAAA;AAIrB,qBAAqB;AACrB,yDAG6B;AAF3B,sHAAA,iBAAiB,OAAA;AAInB,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,mCAGkB;AAFhB,yGAAA,eAAe,OAAA;AACf,yGAAA,eAAe,OAAA;AAGjB,yBAAyB;AACzB,+CAMwB;AALtB,8GAAA,cAAc,OAAA;AACd,uHAAA,uBAAuB,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,+CAGwB;AAFtB,mHAAA,mBAAmB,OAAA;AAIrB,qBAAqB;AACrB,yDAG6B;AAF3B,sHAAA,iBAAiB,OAAA;AAInB,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,mCAGkB;AAFhB,yGAAA,eAAe,OAAA;AACf,yGAAA,eAAe,OAAA;AAGjB,WAAW;AACX,qCAImB;AAHjB,4GAAA,iBAAiB,OAAA;AACjB,wGAAA,aAAa,OAAA;AAIf,yBAAyB;AACzB,+CAMwB;AALtB,8GAAA,cAAc,OAAA;AACd,uHAAA,uBAAuB,OAAA"}
|
package/dist/cjs/version.js
CHANGED
|
@@ -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 = '4.
|
|
6
|
+
exports.VERSION = '4.3.0';
|
|
7
7
|
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Cost-related constants shared across SDK modules.
|
|
3
|
+
*
|
|
4
|
+
* Single source of truth for thread funding, execution budgets, and per-tx fees.
|
|
5
|
+
* Mirrors on-chain constants in `rust/programs/srsly/src/instructions/contract_thread.rs`.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Infrastructure base auto-added by the SDK when creating a contract thread.
|
|
9
|
+
* Covers thread rent + 3 fiber rents (~0.034 SOL) plus a ~0.006 SOL buffer.
|
|
10
|
+
*
|
|
11
|
+
* On-chain minimum: `rust/programs/srsly/src/instructions/contract_thread.rs:119`.
|
|
12
|
+
*/
|
|
13
|
+
export const MINIMUM_THREAD_FUNDING = 40000000n;
|
|
14
|
+
/**
|
|
15
|
+
* Default execution budget for contract thread ticks when caller does not
|
|
16
|
+
* specify one. 0.00219 SOL funds ~365 ticks at 0.000006 SOL each
|
|
17
|
+
* (≈1 year of daily cron executions).
|
|
18
|
+
*/
|
|
19
|
+
export const DEFAULT_EXECUTION_BUDGET = 2190000n;
|
|
20
|
+
/** Solana base transaction fee in lamports (5_000 per signature). */
|
|
21
|
+
export const TX_BASE_FEE_LAMPORTS = 5000n;
|
|
22
|
+
/**
|
|
23
|
+
* Cost per thread tick in lamports.
|
|
24
|
+
* 5_000 (Solana base) + 1_000 (Antegen commission) = 6_000.
|
|
25
|
+
*/
|
|
26
|
+
export const PER_TICK_LAMPORTS = 6000n;
|
|
27
|
+
/** Seconds in a day — used for pro-rata rental amount math. */
|
|
28
|
+
export const SECONDS_PER_DAY = 86400n;
|
|
29
|
+
/** Fixed size of an SPL associated token account. */
|
|
30
|
+
export const SPL_ATA_SIZE = 165;
|
|
31
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/cost/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,SAAW,CAAC;AAElD;;;;GAIG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,QAAU,CAAC;AAEnD,qEAAqE;AACrE,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAM,CAAC;AAE3C;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,KAAM,CAAC;AAExC,+DAA+D;AAC/D,MAAM,CAAC,MAAM,eAAe,GAAG,MAAO,CAAC;AAEvC,qDAAqD;AACrD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAG,CAAC"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose SOL + ATLAS cost estimators for SRSLY protocol usage.
|
|
3
|
+
*
|
|
4
|
+
* Three quotes:
|
|
5
|
+
* - Owner setup (contract_create + contract_thread) — recoverable rents + infra + exec budget.
|
|
6
|
+
* - Borrower setup (borrower_create) — BorrowerState + managed ATA.
|
|
7
|
+
* - Per-rental (rental_accept) — SOL tx fee + ATLAS escrow + service fee.
|
|
8
|
+
*
|
|
9
|
+
* All functions use `rpc.getMinimumBalanceForRentExemption` so quotes reflect the
|
|
10
|
+
* target cluster's rent rate rather than hardcoded lamports.
|
|
11
|
+
*/
|
|
12
|
+
import { fetchContract } from '../accounts/contract';
|
|
13
|
+
import { fetchConfig } from '../accounts/config';
|
|
14
|
+
import { getRpcUrl } from '../utils/config';
|
|
15
|
+
import { createRpc } from '../utils/rpc';
|
|
16
|
+
import { convertSol } from '../params/sol';
|
|
17
|
+
import { CONTRACT_STATE_SIZE, RENTAL_STATE_SIZE, BORROWER_STATE_SIZE, } from './sizes';
|
|
18
|
+
import { MINIMUM_THREAD_FUNDING, DEFAULT_EXECUTION_BUDGET, TX_BASE_FEE_LAMPORTS, PER_TICK_LAMPORTS, SECONDS_PER_DAY, SPL_ATA_SIZE, } from './constants';
|
|
19
|
+
async function minBalance(rpcUrl, size) {
|
|
20
|
+
const rpc = createRpc(rpcUrl ?? getRpcUrl());
|
|
21
|
+
const response = await rpc.getMinimumBalanceForRentExemption(BigInt(size)).send();
|
|
22
|
+
return BigInt(response);
|
|
23
|
+
}
|
|
24
|
+
export async function estimateOwnerSetupCost(opts = {}) {
|
|
25
|
+
const executionBudget = opts.executionBudget === undefined
|
|
26
|
+
? DEFAULT_EXECUTION_BUDGET
|
|
27
|
+
: convertSol(opts.executionBudget);
|
|
28
|
+
const [contractState, rentalState, ataRent] = await Promise.all([
|
|
29
|
+
minBalance(opts.rpcUrl, CONTRACT_STATE_SIZE),
|
|
30
|
+
minBalance(opts.rpcUrl, RENTAL_STATE_SIZE),
|
|
31
|
+
minBalance(opts.rpcUrl, SPL_ATA_SIZE),
|
|
32
|
+
]);
|
|
33
|
+
const ownerAta = opts.ownerAtaExists ? 0n : ataRent;
|
|
34
|
+
const rentLamports = contractState + rentalState + rentalState + ataRent + ownerAta;
|
|
35
|
+
const threadLamports = MINIMUM_THREAD_FUNDING + executionBudget;
|
|
36
|
+
const txFees = TX_BASE_FEE_LAMPORTS * 2n; // contract_create + contract_thread
|
|
37
|
+
return {
|
|
38
|
+
rentLamports,
|
|
39
|
+
threadLamports,
|
|
40
|
+
txFees,
|
|
41
|
+
total: rentLamports + threadLamports + txFees,
|
|
42
|
+
breakdown: {
|
|
43
|
+
contractState,
|
|
44
|
+
rentalStateActive: rentalState,
|
|
45
|
+
rentalStateQueued: rentalState,
|
|
46
|
+
contractAta: ataRent,
|
|
47
|
+
ownerAta,
|
|
48
|
+
threadInfraBase: MINIMUM_THREAD_FUNDING,
|
|
49
|
+
executionBudget,
|
|
50
|
+
},
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export async function estimateBorrowerSetupCost(rpcUrl) {
|
|
54
|
+
const [borrowerState, managedAta] = await Promise.all([
|
|
55
|
+
minBalance(rpcUrl, BORROWER_STATE_SIZE),
|
|
56
|
+
minBalance(rpcUrl, SPL_ATA_SIZE),
|
|
57
|
+
]);
|
|
58
|
+
const rentLamports = borrowerState + managedAta;
|
|
59
|
+
const txFees = TX_BASE_FEE_LAMPORTS;
|
|
60
|
+
return {
|
|
61
|
+
rentLamports,
|
|
62
|
+
txFees,
|
|
63
|
+
total: rentLamports + txFees,
|
|
64
|
+
breakdown: { borrowerState, managedAta },
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Quote the per-rental cost to a borrower. Matches
|
|
69
|
+
* `ContractCalculations::calculate_amount` in `state/contract.rs:150`:
|
|
70
|
+
* `amount = rate_stardust × duration / 86400`, with saturating u64 semantics.
|
|
71
|
+
*/
|
|
72
|
+
export async function estimateRentalCost(params) {
|
|
73
|
+
const [{ data: contract }, { data: config }] = await Promise.all([
|
|
74
|
+
fetchContract(params.contract, params.rpcUrl),
|
|
75
|
+
fetchConfig(params.rpcUrl),
|
|
76
|
+
]);
|
|
77
|
+
const duration = BigInt(params.durationSeconds);
|
|
78
|
+
const stardustToAtlas = BigInt(config.stardustToAtlas);
|
|
79
|
+
const rate = BigInt(contract.rate);
|
|
80
|
+
// Mirror on-chain scaling: rate <1 ATLAS is treated as ATLAS-denominated.
|
|
81
|
+
const rateStardust = rate < stardustToAtlas
|
|
82
|
+
? saturatingMul(rate, stardustToAtlas)
|
|
83
|
+
: rate;
|
|
84
|
+
const atlasEscrow = saturatingDiv(saturatingMul(rateStardust, duration), SECONDS_PER_DAY);
|
|
85
|
+
const feeBps = BigInt(config.serviceFeeBps);
|
|
86
|
+
const baseBps = BigInt(config.baseBps);
|
|
87
|
+
const atlasServiceFee = baseBps === 0n
|
|
88
|
+
? 0n
|
|
89
|
+
: saturatingDiv(saturatingMul(atlasEscrow, feeBps), baseBps);
|
|
90
|
+
const atlasBid = params.bidStardust ?? 0n;
|
|
91
|
+
return {
|
|
92
|
+
solTxFees: TX_BASE_FEE_LAMPORTS,
|
|
93
|
+
atlasEscrow,
|
|
94
|
+
atlasServiceFee,
|
|
95
|
+
atlasBid,
|
|
96
|
+
atlasTotal: atlasEscrow + atlasBid,
|
|
97
|
+
serviceFeeBps: Number(feeBps),
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
/* -------------------------------------------------------------------------- */
|
|
101
|
+
/* Thread burn */
|
|
102
|
+
/* -------------------------------------------------------------------------- */
|
|
103
|
+
/**
|
|
104
|
+
* Lamports burned by a given number of cron ticks at `PER_TICK_LAMPORTS` each.
|
|
105
|
+
* Useful for sizing a custom `executionBudget` before calling
|
|
106
|
+
* `estimateOwnerSetupCost`.
|
|
107
|
+
*/
|
|
108
|
+
export function tickBudget(ticks) {
|
|
109
|
+
return BigInt(ticks) * PER_TICK_LAMPORTS;
|
|
110
|
+
}
|
|
111
|
+
/* -------------------------------------------------------------------------- */
|
|
112
|
+
/* u64 helpers */
|
|
113
|
+
/* -------------------------------------------------------------------------- */
|
|
114
|
+
const MAX_U64 = 18446744073709551615n;
|
|
115
|
+
function saturatingMul(a, b) {
|
|
116
|
+
const product = a * b;
|
|
117
|
+
return product > MAX_U64 ? MAX_U64 : product;
|
|
118
|
+
}
|
|
119
|
+
function saturatingDiv(a, b) {
|
|
120
|
+
return b === 0n ? 0n : a / b;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=estimate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimate.js","sourceRoot":"","sources":["../../../src/cost/estimate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
2
|
+
vi.mock('../accounts/contract', () => ({
|
|
3
|
+
fetchContract: vi.fn(),
|
|
4
|
+
}));
|
|
5
|
+
vi.mock('../accounts/config', () => ({
|
|
6
|
+
fetchConfig: vi.fn(),
|
|
7
|
+
}));
|
|
8
|
+
vi.mock('../utils/rpc', () => ({
|
|
9
|
+
createRpc: vi.fn(() => ({
|
|
10
|
+
getMinimumBalanceForRentExemption: (size) => ({
|
|
11
|
+
// Solana rent formula constants: ACCOUNT_STORAGE_OVERHEAD=128,
|
|
12
|
+
// lamports_per_byte_year=3_480, exemption_threshold=2 years.
|
|
13
|
+
send: async () => {
|
|
14
|
+
const bytes = Number(size) + 128;
|
|
15
|
+
return BigInt(bytes * 3_480 * 2);
|
|
16
|
+
},
|
|
17
|
+
}),
|
|
18
|
+
})),
|
|
19
|
+
}));
|
|
20
|
+
vi.mock('../utils/config', () => ({
|
|
21
|
+
getRpcUrl: () => 'http://localhost:8899',
|
|
22
|
+
}));
|
|
23
|
+
import { fetchContract } from '../accounts/contract';
|
|
24
|
+
import { fetchConfig } from '../accounts/config';
|
|
25
|
+
import { estimateOwnerSetupCost, estimateBorrowerSetupCost, estimateRentalCost, tickBudget, } from './estimate';
|
|
26
|
+
import { MINIMUM_THREAD_FUNDING, DEFAULT_EXECUTION_BUDGET, TX_BASE_FEE_LAMPORTS, PER_TICK_LAMPORTS, } from './constants';
|
|
27
|
+
import { CONTRACT_STATE_SIZE, RENTAL_STATE_SIZE, BORROWER_STATE_SIZE, } from './sizes';
|
|
28
|
+
import { SPL_ATA_SIZE } from './constants';
|
|
29
|
+
// Rent formula used by our mock — matches Solana mainnet rent-exemption math.
|
|
30
|
+
const rentFor = (size) => BigInt((size + 128) * 3_480 * 2);
|
|
31
|
+
describe('estimateOwnerSetupCost', () => {
|
|
32
|
+
it('baseline matches COSTS.md breakdown', async () => {
|
|
33
|
+
const quote = await estimateOwnerSetupCost();
|
|
34
|
+
const contractStateRent = rentFor(CONTRACT_STATE_SIZE);
|
|
35
|
+
const rentalStateRent = rentFor(RENTAL_STATE_SIZE);
|
|
36
|
+
const ataRent = rentFor(SPL_ATA_SIZE);
|
|
37
|
+
expect(quote.breakdown.contractState).toBe(contractStateRent);
|
|
38
|
+
expect(quote.breakdown.rentalStateActive).toBe(rentalStateRent);
|
|
39
|
+
expect(quote.breakdown.rentalStateQueued).toBe(rentalStateRent);
|
|
40
|
+
expect(quote.breakdown.contractAta).toBe(ataRent);
|
|
41
|
+
expect(quote.breakdown.ownerAta).toBe(ataRent);
|
|
42
|
+
expect(quote.breakdown.threadInfraBase).toBe(MINIMUM_THREAD_FUNDING);
|
|
43
|
+
expect(quote.breakdown.executionBudget).toBe(DEFAULT_EXECUTION_BUDGET);
|
|
44
|
+
expect(quote.rentLamports).toBe(contractStateRent + rentalStateRent * 2n + ataRent + ataRent);
|
|
45
|
+
expect(quote.threadLamports).toBe(MINIMUM_THREAD_FUNDING + DEFAULT_EXECUTION_BUDGET);
|
|
46
|
+
expect(quote.txFees).toBe(TX_BASE_FEE_LAMPORTS * 2n);
|
|
47
|
+
expect(quote.total).toBe(quote.rentLamports + quote.threadLamports + quote.txFees);
|
|
48
|
+
});
|
|
49
|
+
it('ownerAtaExists skips owner ATA rent', async () => {
|
|
50
|
+
const with_ = await estimateOwnerSetupCost();
|
|
51
|
+
const without = await estimateOwnerSetupCost({ ownerAtaExists: true });
|
|
52
|
+
const ataRent = rentFor(SPL_ATA_SIZE);
|
|
53
|
+
expect(with_.total - without.total).toBe(ataRent);
|
|
54
|
+
expect(without.breakdown.ownerAta).toBe(0n);
|
|
55
|
+
});
|
|
56
|
+
it('custom executionBudget flows through to thread funding', async () => {
|
|
57
|
+
const quote = await estimateOwnerSetupCost({ executionBudget: 0.01 });
|
|
58
|
+
expect(quote.breakdown.executionBudget).toBe(10000000n);
|
|
59
|
+
expect(quote.threadLamports).toBe(MINIMUM_THREAD_FUNDING + 10000000n);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
describe('estimateBorrowerSetupCost', () => {
|
|
63
|
+
it('sums BorrowerState + managed ATA rent + tx fee', async () => {
|
|
64
|
+
const quote = await estimateBorrowerSetupCost();
|
|
65
|
+
const borrowerStateRent = rentFor(BORROWER_STATE_SIZE);
|
|
66
|
+
const ataRent = rentFor(SPL_ATA_SIZE);
|
|
67
|
+
expect(quote.breakdown.borrowerState).toBe(borrowerStateRent);
|
|
68
|
+
expect(quote.breakdown.managedAta).toBe(ataRent);
|
|
69
|
+
expect(quote.rentLamports).toBe(borrowerStateRent + ataRent);
|
|
70
|
+
expect(quote.txFees).toBe(TX_BASE_FEE_LAMPORTS);
|
|
71
|
+
expect(quote.total).toBe(borrowerStateRent + ataRent + TX_BASE_FEE_LAMPORTS);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe('estimateRentalCost', () => {
|
|
75
|
+
const mockContract = (rate) => ({
|
|
76
|
+
data: { rate },
|
|
77
|
+
address: 'Contract11111111111111111111111111111111111',
|
|
78
|
+
});
|
|
79
|
+
const mockConfig = (overrides = {}) => ({
|
|
80
|
+
data: {
|
|
81
|
+
stardustToAtlas: 100000000n,
|
|
82
|
+
serviceFeeBps: 1000n,
|
|
83
|
+
baseBps: 10_000,
|
|
84
|
+
...overrides,
|
|
85
|
+
},
|
|
86
|
+
address: 'Config1111111111111111111111111111111111111',
|
|
87
|
+
});
|
|
88
|
+
it('1 ATLAS/day × 86400s yields 100M Stardust escrow, 10M service fee', async () => {
|
|
89
|
+
vi.mocked(fetchContract).mockResolvedValue(mockContract(1n));
|
|
90
|
+
vi.mocked(fetchConfig).mockResolvedValue(mockConfig());
|
|
91
|
+
const quote = await estimateRentalCost({
|
|
92
|
+
contract: 'AnyContract',
|
|
93
|
+
durationSeconds: 86400n,
|
|
94
|
+
});
|
|
95
|
+
expect(quote.atlasEscrow).toBe(100000000n);
|
|
96
|
+
expect(quote.atlasServiceFee).toBe(10000000n);
|
|
97
|
+
expect(quote.atlasBid).toBe(0n);
|
|
98
|
+
expect(quote.atlasTotal).toBe(100000000n);
|
|
99
|
+
expect(quote.serviceFeeBps).toBe(1_000);
|
|
100
|
+
expect(quote.solTxFees).toBe(TX_BASE_FEE_LAMPORTS);
|
|
101
|
+
});
|
|
102
|
+
it('rate in Stardust units (rate >= stardustToAtlas) is not rescaled', async () => {
|
|
103
|
+
// 5 ATLAS/day already in Stardust = 500M.
|
|
104
|
+
vi.mocked(fetchContract).mockResolvedValue(mockContract(500000000n));
|
|
105
|
+
vi.mocked(fetchConfig).mockResolvedValue(mockConfig());
|
|
106
|
+
const quote = await estimateRentalCost({
|
|
107
|
+
contract: 'AnyContract',
|
|
108
|
+
durationSeconds: 86400n * 3n, // 3 days
|
|
109
|
+
});
|
|
110
|
+
expect(quote.atlasEscrow).toBe(1500000000n);
|
|
111
|
+
});
|
|
112
|
+
it('pro-rates sub-day durations via integer division', async () => {
|
|
113
|
+
vi.mocked(fetchContract).mockResolvedValue(mockContract(1n));
|
|
114
|
+
vi.mocked(fetchConfig).mockResolvedValue(mockConfig());
|
|
115
|
+
// Half a day -> 50M Stardust.
|
|
116
|
+
const quote = await estimateRentalCost({
|
|
117
|
+
contract: 'AnyContract',
|
|
118
|
+
durationSeconds: 43200n,
|
|
119
|
+
});
|
|
120
|
+
expect(quote.atlasEscrow).toBe(50000000n);
|
|
121
|
+
expect(quote.atlasServiceFee).toBe(5000000n);
|
|
122
|
+
});
|
|
123
|
+
it('bidStardust flows into atlasTotal but not into atlasEscrow', async () => {
|
|
124
|
+
vi.mocked(fetchContract).mockResolvedValue(mockContract(1n));
|
|
125
|
+
vi.mocked(fetchConfig).mockResolvedValue(mockConfig());
|
|
126
|
+
const quote = await estimateRentalCost({
|
|
127
|
+
contract: 'AnyContract',
|
|
128
|
+
durationSeconds: 86400n,
|
|
129
|
+
bidStardust: 25000000n,
|
|
130
|
+
});
|
|
131
|
+
expect(quote.atlasEscrow).toBe(100000000n);
|
|
132
|
+
expect(quote.atlasBid).toBe(25000000n);
|
|
133
|
+
expect(quote.atlasTotal).toBe(125000000n);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
describe('tickBudget', () => {
|
|
137
|
+
it('scales by PER_TICK_LAMPORTS', () => {
|
|
138
|
+
expect(tickBudget(365)).toBe(365n * PER_TICK_LAMPORTS);
|
|
139
|
+
expect(tickBudget(0)).toBe(0n);
|
|
140
|
+
expect(tickBudget(1000000n)).toBe(1000000n * PER_TICK_LAMPORTS);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
//# sourceMappingURL=estimate.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"estimate.test.js","sourceRoot":"","sources":["../../../src/cost/estimate.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cost/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @purpose Account data sizes (including 8-byte Anchor discriminator).
|
|
3
|
+
*
|
|
4
|
+
* These match `8 + InitSpace` on the Rust side and determine rent-exemption
|
|
5
|
+
* lamports via `rpc.getMinimumBalanceForRentExemption(size)`.
|
|
6
|
+
*
|
|
7
|
+
* Source of truth: `rust/programs/srsly/src/state/*.rs` — structs with
|
|
8
|
+
* `#[derive(InitSpace)]`. Keep in sync when account layouts change.
|
|
9
|
+
*/
|
|
10
|
+
/** ContractState — `state/contract.rs` */
|
|
11
|
+
export const CONTRACT_STATE_SIZE = 638;
|
|
12
|
+
/** RentalState — `state/rental.rs` (two instances per contract: active + queued) */
|
|
13
|
+
export const RENTAL_STATE_SIZE = 426;
|
|
14
|
+
/** BorrowerState — `state/borrower.rs` (Vec<Pubkey> max_len 10) */
|
|
15
|
+
export const BORROWER_STATE_SIZE = 423;
|
|
16
|
+
/** ConfigState — `state/config.rs` */
|
|
17
|
+
export const CONFIG_STATE_SIZE = 468;
|
|
18
|
+
//# sourceMappingURL=sizes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sizes.js","sourceRoot":"","sources":["../../../src/cost/sizes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,0CAA0C;AAC1C,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,oFAAoF;AACpF,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAErC,mEAAmE;AACnE,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAEvC,sCAAsC;AACtC,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,CAAC"}
|