@sly-rentals/core 1.1.2 → 2.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.
- package/dist/api.json +12242 -9231
- package/dist/cjs/calculator/ContestTimeline.js +396 -0
- package/dist/cjs/calculator/ContestTimeline.js.map +1 -0
- package/dist/cjs/calculator/MinBidChart.js +419 -0
- package/dist/cjs/calculator/MinBidChart.js.map +1 -0
- package/dist/cjs/calculator/dom.js +39 -0
- package/dist/cjs/calculator/dom.js.map +1 -0
- package/dist/cjs/calculator/emitter.js +36 -0
- package/dist/cjs/calculator/emitter.js.map +1 -0
- package/dist/cjs/calculator/index.js +20 -0
- package/dist/cjs/calculator/index.js.map +1 -0
- package/dist/cjs/cost/constants.js +54 -5
- package/dist/cjs/cost/constants.js.map +1 -1
- package/dist/cjs/cost/estimate.js +7 -4
- package/dist/cjs/cost/estimate.js.map +1 -1
- package/dist/cjs/cost/estimate.test.js +16 -4
- package/dist/cjs/cost/estimate.test.js.map +1 -1
- package/dist/cjs/cost/index.js +32 -17
- package/dist/cjs/cost/index.js.map +1 -1
- package/dist/cjs/cost/sizes.js +20 -3
- package/dist/cjs/cost/sizes.js.map +1 -1
- package/dist/cjs/instructions/acceptRental.js +39 -53
- package/dist/cjs/instructions/acceptRental.js.map +1 -1
- package/dist/cjs/instructions/closeContract.js +18 -50
- package/dist/cjs/instructions/closeContract.js.map +1 -1
- package/dist/cjs/instructions/closeRental.js +19 -15
- package/dist/cjs/instructions/closeRental.js.map +1 -1
- package/dist/cjs/instructions/createContract.js +2 -4
- package/dist/cjs/instructions/createContract.js.map +1 -1
- package/dist/cjs/instructions/createContractThread.js +1 -2
- package/dist/cjs/instructions/createContractThread.js.map +1 -1
- package/dist/cjs/instructions/index.js +65 -42
- package/dist/cjs/instructions/index.js.map +1 -1
- package/dist/cjs/instructions/reserveRental.js +34 -46
- package/dist/cjs/instructions/reserveRental.js.map +1 -1
- package/dist/cjs/kit/index.js +5 -27
- package/dist/cjs/kit/index.js.map +1 -1
- package/dist/cjs/legacy/index.js +6 -3
- package/dist/cjs/legacy/index.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/react/ContestTimeline.js +59 -0
- package/dist/cjs/react/ContestTimeline.js.map +1 -0
- package/dist/cjs/react/MinBidChart.js +34 -0
- package/dist/cjs/react/MinBidChart.js.map +1 -0
- package/dist/cjs/react/index.js +18 -0
- package/dist/cjs/react/index.js.map +1 -0
- package/dist/cjs/utils/bidMath.js +6 -115
- package/dist/cjs/utils/bidMath.js.map +1 -1
- package/dist/cjs/utils/contestChain.js +199 -0
- package/dist/cjs/utils/contestChain.js.map +1 -0
- package/dist/cjs/utils/contractSnapshot.js +207 -0
- package/dist/cjs/utils/contractSnapshot.js.map +1 -0
- package/dist/cjs/utils/contractSnapshot.test.js +247 -0
- package/dist/cjs/utils/contractSnapshot.test.js.map +1 -0
- package/dist/cjs/utils/index.js +8 -3
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/version.js +1 -1
- package/dist/esm/calculator/ContestTimeline.js +392 -0
- package/dist/esm/calculator/ContestTimeline.js.map +1 -0
- package/dist/esm/calculator/MinBidChart.js +412 -0
- package/dist/esm/calculator/MinBidChart.js.map +1 -0
- package/dist/esm/calculator/dom.js +35 -0
- package/dist/esm/calculator/dom.js.map +1 -0
- package/dist/esm/calculator/emitter.js +32 -0
- package/dist/esm/calculator/emitter.js.map +1 -0
- package/dist/esm/calculator/index.js +13 -0
- package/dist/esm/calculator/index.js.map +1 -0
- package/dist/esm/cost/constants.js +52 -4
- package/dist/esm/cost/constants.js.map +1 -1
- package/dist/esm/cost/estimate.js +9 -6
- package/dist/esm/cost/estimate.js.map +1 -1
- package/dist/esm/cost/estimate.test.js +18 -6
- package/dist/esm/cost/estimate.test.js.map +1 -1
- package/dist/esm/cost/index.js +13 -3
- package/dist/esm/cost/index.js.map +1 -1
- package/dist/esm/cost/sizes.js +19 -2
- package/dist/esm/cost/sizes.js.map +1 -1
- package/dist/esm/instructions/acceptRental.js +40 -54
- package/dist/esm/instructions/acceptRental.js.map +1 -1
- package/dist/esm/instructions/closeContract.js +16 -15
- package/dist/esm/instructions/closeContract.js.map +1 -1
- package/dist/esm/instructions/closeRental.js +20 -16
- package/dist/esm/instructions/closeRental.js.map +1 -1
- package/dist/esm/instructions/createContract.js +2 -4
- package/dist/esm/instructions/createContract.js.map +1 -1
- package/dist/esm/instructions/createContractThread.js +2 -3
- package/dist/esm/instructions/createContractThread.js.map +1 -1
- package/dist/esm/instructions/index.js +36 -28
- package/dist/esm/instructions/index.js.map +1 -1
- package/dist/esm/instructions/reserveRental.js +34 -46
- package/dist/esm/instructions/reserveRental.js.map +1 -1
- package/dist/esm/kit/index.js +4 -4
- package/dist/esm/kit/index.js.map +1 -1
- package/dist/esm/legacy/index.js +5 -2
- package/dist/esm/legacy/index.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/esm/react/ContestTimeline.js +56 -0
- package/dist/esm/react/ContestTimeline.js.map +1 -0
- package/dist/esm/react/MinBidChart.js +30 -0
- package/dist/esm/react/MinBidChart.js.map +1 -0
- package/dist/esm/react/index.js +12 -0
- package/dist/esm/react/index.js.map +1 -0
- package/dist/esm/utils/bidMath.js +6 -114
- package/dist/esm/utils/bidMath.js.map +1 -1
- package/dist/esm/utils/contestChain.js +191 -0
- package/dist/esm/utils/contestChain.js.map +1 -0
- package/dist/esm/utils/contractSnapshot.js +201 -0
- package/dist/esm/utils/contractSnapshot.js.map +1 -0
- package/dist/esm/utils/contractSnapshot.test.js +245 -0
- package/dist/esm/utils/contractSnapshot.test.js.map +1 -0
- package/dist/esm/utils/index.js +4 -2
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/calculator/ContestTimeline.d.ts +69 -0
- package/dist/types/calculator/ContestTimeline.d.ts.map +1 -0
- package/dist/types/calculator/MinBidChart.d.ts +73 -0
- package/dist/types/calculator/MinBidChart.d.ts.map +1 -0
- package/dist/types/calculator/dom.d.ts +16 -0
- package/dist/types/calculator/dom.d.ts.map +1 -0
- package/dist/types/calculator/emitter.d.ts +13 -0
- package/dist/types/calculator/emitter.d.ts.map +1 -0
- package/dist/types/calculator/index.d.ts +13 -0
- package/dist/types/calculator/index.d.ts.map +1 -0
- package/dist/types/cost/constants.d.ts +49 -4
- package/dist/types/cost/constants.d.ts.map +1 -1
- package/dist/types/cost/estimate.d.ts +12 -1
- package/dist/types/cost/estimate.d.ts.map +1 -1
- package/dist/types/cost/index.d.ts +13 -3
- package/dist/types/cost/index.d.ts.map +1 -1
- package/dist/types/cost/sizes.d.ts +19 -2
- package/dist/types/cost/sizes.d.ts.map +1 -1
- package/dist/types/instructions/acceptRental.d.ts +8 -0
- package/dist/types/instructions/acceptRental.d.ts.map +1 -1
- package/dist/types/instructions/closeContract.d.ts +9 -0
- package/dist/types/instructions/closeContract.d.ts.map +1 -1
- package/dist/types/instructions/closeRental.d.ts +8 -0
- package/dist/types/instructions/closeRental.d.ts.map +1 -1
- package/dist/types/instructions/createContract.d.ts.map +1 -1
- package/dist/types/instructions/index.d.ts +36 -28
- package/dist/types/instructions/index.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/kit/index.d.ts +0 -2
- package/dist/types/kit/index.d.ts.map +1 -1
- package/dist/types/legacy/index.d.ts +1 -2
- package/dist/types/legacy/index.d.ts.map +1 -1
- package/dist/types/react/ContestTimeline.d.ts +17 -0
- package/dist/types/react/ContestTimeline.d.ts.map +1 -0
- package/dist/types/react/MinBidChart.d.ts +12 -0
- package/dist/types/react/MinBidChart.d.ts.map +1 -0
- package/dist/types/react/index.d.ts +12 -0
- package/dist/types/react/index.d.ts.map +1 -0
- package/dist/types/utils/bidMath.d.ts +6 -44
- package/dist/types/utils/bidMath.d.ts.map +1 -1
- package/dist/types/utils/contestChain.d.ts +118 -0
- package/dist/types/utils/contestChain.d.ts.map +1 -0
- package/dist/types/utils/contractSnapshot.d.ts +123 -0
- package/dist/types/utils/contractSnapshot.d.ts.map +1 -0
- package/dist/types/utils/contractSnapshot.test.d.ts +2 -0
- package/dist/types/utils/contractSnapshot.test.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +2 -1
- package/dist/types/utils/index.d.ts.map +1 -1
- package/dist/types/version.d.ts +1 -1
- package/package.json +15 -1
|
@@ -31,27 +31,30 @@ async function estimateOwnerSetupCost(opts = {}) {
|
|
|
31
31
|
const executionBudget = opts.executionBudget === undefined
|
|
32
32
|
? constants_1.DEFAULT_EXECUTION_BUDGET
|
|
33
33
|
: (0, sol_1.convertSol)(opts.executionBudget);
|
|
34
|
-
const [contractState, rentalState, ataRent] = await Promise.all([
|
|
34
|
+
const [contractState, rentalState, ataRent, threadAccountRent] = await Promise.all([
|
|
35
35
|
minBalance(opts.rpcUrl, sizes_1.CONTRACT_STATE_SIZE),
|
|
36
36
|
minBalance(opts.rpcUrl, sizes_1.RENTAL_STATE_SIZE),
|
|
37
37
|
minBalance(opts.rpcUrl, constants_1.SPL_ATA_SIZE),
|
|
38
|
+
minBalance(opts.rpcUrl, sizes_1.ANTEGEN_THREAD_SIZE),
|
|
38
39
|
]);
|
|
39
40
|
const ownerAta = opts.ownerAtaExists ? 0n : ataRent;
|
|
40
41
|
const rentLamports = contractState + rentalState + rentalState + ataRent + ownerAta;
|
|
41
|
-
const threadLamports = constants_1.
|
|
42
|
+
const threadLamports = (0, constants_1.computeThreadLamports)(executionBudget);
|
|
42
43
|
const txFees = constants_1.TX_BASE_FEE_LAMPORTS * 2n; // contract_create + contract_thread
|
|
43
44
|
return {
|
|
44
45
|
rentLamports,
|
|
46
|
+
threadAccountRent,
|
|
45
47
|
threadLamports,
|
|
46
48
|
txFees,
|
|
47
|
-
total: rentLamports + threadLamports + txFees,
|
|
49
|
+
total: rentLamports + threadAccountRent + threadLamports + txFees,
|
|
48
50
|
breakdown: {
|
|
49
51
|
contractState,
|
|
50
52
|
rentalStateActive: rentalState,
|
|
51
53
|
rentalStateQueued: rentalState,
|
|
52
54
|
contractAta: ataRent,
|
|
53
55
|
ownerAta,
|
|
54
|
-
|
|
56
|
+
threadAccount: threadAccountRent,
|
|
57
|
+
threadInfraBase: threadLamports - executionBudget,
|
|
55
58
|
executionBudget,
|
|
56
59
|
},
|
|
57
60
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimate.js","sourceRoot":"","sources":["../../../src/cost/estimate.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;AA+
|
|
1
|
+
{"version":3,"file":"estimate.js","sourceRoot":"","sources":["../../../src/cost/estimate.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,12 +41,16 @@ const rentFor = (size) => BigInt((size + 128) * 3_480 * 2);
|
|
|
41
41
|
(0, vitest_1.expect)(quote.breakdown.rentalStateQueued).toBe(rentalStateRent);
|
|
42
42
|
(0, vitest_1.expect)(quote.breakdown.contractAta).toBe(ataRent);
|
|
43
43
|
(0, vitest_1.expect)(quote.breakdown.ownerAta).toBe(ataRent);
|
|
44
|
-
|
|
44
|
+
const threadAccountRent = rentFor(sizes_1.ANTEGEN_THREAD_SIZE);
|
|
45
|
+
(0, vitest_1.expect)(quote.breakdown.threadAccount).toBe(threadAccountRent);
|
|
46
|
+
(0, vitest_1.expect)(quote.threadAccountRent).toBe(threadAccountRent);
|
|
47
|
+
const expectedThreadLamports = (0, constants_1.computeThreadLamports)(constants_1.DEFAULT_EXECUTION_BUDGET);
|
|
48
|
+
(0, vitest_1.expect)(quote.breakdown.threadInfraBase).toBe(expectedThreadLamports - constants_1.DEFAULT_EXECUTION_BUDGET);
|
|
45
49
|
(0, vitest_1.expect)(quote.breakdown.executionBudget).toBe(constants_1.DEFAULT_EXECUTION_BUDGET);
|
|
46
50
|
(0, vitest_1.expect)(quote.rentLamports).toBe(contractStateRent + rentalStateRent * 2n + ataRent + ataRent);
|
|
47
|
-
(0, vitest_1.expect)(quote.threadLamports).toBe(
|
|
51
|
+
(0, vitest_1.expect)(quote.threadLamports).toBe(expectedThreadLamports);
|
|
48
52
|
(0, vitest_1.expect)(quote.txFees).toBe(constants_1.TX_BASE_FEE_LAMPORTS * 2n);
|
|
49
|
-
(0, vitest_1.expect)(quote.total).toBe(quote.rentLamports + quote.threadLamports + quote.txFees);
|
|
53
|
+
(0, vitest_1.expect)(quote.total).toBe(quote.rentLamports + quote.threadAccountRent + quote.threadLamports + quote.txFees);
|
|
50
54
|
});
|
|
51
55
|
(0, vitest_1.it)('ownerAtaExists skips owner ATA rent', async () => {
|
|
52
56
|
const with_ = await (0, estimate_1.estimateOwnerSetupCost)();
|
|
@@ -58,7 +62,15 @@ const rentFor = (size) => BigInt((size + 128) * 3_480 * 2);
|
|
|
58
62
|
(0, vitest_1.it)('custom executionBudget flows through to thread funding', async () => {
|
|
59
63
|
const quote = await (0, estimate_1.estimateOwnerSetupCost)({ executionBudget: { sol: 0.01 } });
|
|
60
64
|
(0, vitest_1.expect)(quote.breakdown.executionBudget).toBe(10000000n);
|
|
61
|
-
|
|
65
|
+
// 10M exec + 2 fiber rents (~17M) = ~27M, below the 30M on-chain
|
|
66
|
+
// floor → threadLamports clamps to the floor.
|
|
67
|
+
(0, vitest_1.expect)(quote.threadLamports).toBe((0, constants_1.computeThreadLamports)(10000000n));
|
|
68
|
+
});
|
|
69
|
+
(0, vitest_1.it)('large executionBudget exceeds the on-chain floor and is passed through', async () => {
|
|
70
|
+
// 60M exec + 2 fiber rents (~17M) = ~77M, well above the 30M floor.
|
|
71
|
+
const quote = await (0, estimate_1.estimateOwnerSetupCost)({ executionBudget: { sol: 0.06 } });
|
|
72
|
+
(0, vitest_1.expect)(quote.threadLamports).toBe((0, constants_1.computeThreadLamports)(60000000n));
|
|
73
|
+
(0, vitest_1.expect)(quote.threadLamports).toBeGreaterThan(60000000n);
|
|
62
74
|
});
|
|
63
75
|
});
|
|
64
76
|
(0, vitest_1.describe)('estimateBorrowerSetupCost', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"estimate.test.js","sourceRoot":"","sources":["../../../src/cost/estimate.test.ts"],"names":[],"mappings":";;AAAA,mCAAkD;AAElD,WAAE,CAAC,IAAI,CAAC,sBAAsB,EAAE,GAAG,EAAE,CAAC,CAAC;IACrC,aAAa,EAAE,WAAE,CAAC,EAAE,EAAE;CACvB,CAAC,CAAC,CAAC;AACJ,WAAE,CAAC,IAAI,CAAC,oBAAoB,EAAE,GAAG,EAAE,CAAC,CAAC;IACnC,WAAW,EAAE,WAAE,CAAC,EAAE,EAAE;CACrB,CAAC,CAAC,CAAC;AACJ,WAAE,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7B,SAAS,EAAE,WAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACtB,iCAAiC,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,CAAC;YACpD,+DAA+D;YAC/D,6DAA6D;YAC7D,IAAI,EAAE,KAAK,IAAI,EAAE;gBACf,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;gBACjC,OAAO,MAAM,CAAC,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC;YACnC,CAAC;SACF,CAAC;KACH,CAAC,CAAC;CACJ,CAAC,CAAC,CAAC;AACJ,WAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,SAAS,EAAE,GAAG,EAAE,CAAC,uBAAuB;CACzC,CAAC,CAAC,CAAC;AAEJ,mDAAqD;AACrD,+CAAiD;AACjD,yCAKoB;AACpB,2CAKqB;AACrB,
|
|
1
|
+
{"version":3,"file":"estimate.test.js","sourceRoot":"","sources":["../../../src/cost/estimate.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/cost/index.js
CHANGED
|
@@ -1,20 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
2
|
+
/**
|
|
3
|
+
* Cost helpers for SRSLY: rent + tx-fee constants, account sizes, and
|
|
4
|
+
* setup-cost estimators. Exposed as the `@sly-rentals/core/cost`
|
|
5
|
+
* subpath so callers (e.g. the landing-page CostBreakdown widget)
|
|
6
|
+
* can pull just these helpers without dragging in the instruction
|
|
7
|
+
* surface through the main `core/kit` barrel.
|
|
8
|
+
*
|
|
9
|
+
* Named re-exports (not `export *`) so bundlers can tree-shake unused
|
|
10
|
+
* estimators per-call site.
|
|
11
|
+
*/
|
|
16
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
13
|
+
exports.tickBudget = exports.estimateRentalCost = exports.estimateBorrowerSetupCost = exports.estimateOwnerSetupCost = exports.CONFIG_STATE_SIZE = exports.BORROWER_STATE_SIZE = exports.ANTEGEN_THREAD_SIZE = exports.RENTAL_STATE_SIZE = exports.CONTRACT_STATE_SIZE = exports.SPL_ATA_SIZE = exports.SECONDS_PER_DAY = exports.PER_TICK_LAMPORTS = exports.TX_BASE_FEE_LAMPORTS = exports.DEFAULT_EXECUTION_BUDGET = exports.computeThreadLamports = exports.SRSLY_THREAD_FIBER_COUNT = exports.FIBER_STATE_RENT_LAMPORTS = exports.MINIMUM_THREAD_FUNDING = void 0;
|
|
14
|
+
var constants_1 = require("./constants");
|
|
15
|
+
Object.defineProperty(exports, "MINIMUM_THREAD_FUNDING", { enumerable: true, get: function () { return constants_1.MINIMUM_THREAD_FUNDING; } });
|
|
16
|
+
Object.defineProperty(exports, "FIBER_STATE_RENT_LAMPORTS", { enumerable: true, get: function () { return constants_1.FIBER_STATE_RENT_LAMPORTS; } });
|
|
17
|
+
Object.defineProperty(exports, "SRSLY_THREAD_FIBER_COUNT", { enumerable: true, get: function () { return constants_1.SRSLY_THREAD_FIBER_COUNT; } });
|
|
18
|
+
Object.defineProperty(exports, "computeThreadLamports", { enumerable: true, get: function () { return constants_1.computeThreadLamports; } });
|
|
19
|
+
Object.defineProperty(exports, "DEFAULT_EXECUTION_BUDGET", { enumerable: true, get: function () { return constants_1.DEFAULT_EXECUTION_BUDGET; } });
|
|
20
|
+
Object.defineProperty(exports, "TX_BASE_FEE_LAMPORTS", { enumerable: true, get: function () { return constants_1.TX_BASE_FEE_LAMPORTS; } });
|
|
21
|
+
Object.defineProperty(exports, "PER_TICK_LAMPORTS", { enumerable: true, get: function () { return constants_1.PER_TICK_LAMPORTS; } });
|
|
22
|
+
Object.defineProperty(exports, "SECONDS_PER_DAY", { enumerable: true, get: function () { return constants_1.SECONDS_PER_DAY; } });
|
|
23
|
+
Object.defineProperty(exports, "SPL_ATA_SIZE", { enumerable: true, get: function () { return constants_1.SPL_ATA_SIZE; } });
|
|
24
|
+
var sizes_1 = require("./sizes");
|
|
25
|
+
Object.defineProperty(exports, "CONTRACT_STATE_SIZE", { enumerable: true, get: function () { return sizes_1.CONTRACT_STATE_SIZE; } });
|
|
26
|
+
Object.defineProperty(exports, "RENTAL_STATE_SIZE", { enumerable: true, get: function () { return sizes_1.RENTAL_STATE_SIZE; } });
|
|
27
|
+
Object.defineProperty(exports, "ANTEGEN_THREAD_SIZE", { enumerable: true, get: function () { return sizes_1.ANTEGEN_THREAD_SIZE; } });
|
|
28
|
+
Object.defineProperty(exports, "BORROWER_STATE_SIZE", { enumerable: true, get: function () { return sizes_1.BORROWER_STATE_SIZE; } });
|
|
29
|
+
Object.defineProperty(exports, "CONFIG_STATE_SIZE", { enumerable: true, get: function () { return sizes_1.CONFIG_STATE_SIZE; } });
|
|
30
|
+
var estimate_1 = require("./estimate");
|
|
31
|
+
Object.defineProperty(exports, "estimateOwnerSetupCost", { enumerable: true, get: function () { return estimate_1.estimateOwnerSetupCost; } });
|
|
32
|
+
Object.defineProperty(exports, "estimateBorrowerSetupCost", { enumerable: true, get: function () { return estimate_1.estimateBorrowerSetupCost; } });
|
|
33
|
+
Object.defineProperty(exports, "estimateRentalCost", { enumerable: true, get: function () { return estimate_1.estimateRentalCost; } });
|
|
34
|
+
Object.defineProperty(exports, "tickBudget", { enumerable: true, get: function () { return estimate_1.tickBudget; } });
|
|
20
35
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cost/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cost/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;AAEH,yCAUqB;AATnB,mHAAA,sBAAsB,OAAA;AACtB,sHAAA,yBAAyB,OAAA;AACzB,qHAAA,wBAAwB,OAAA;AACxB,kHAAA,qBAAqB,OAAA;AACrB,qHAAA,wBAAwB,OAAA;AACxB,iHAAA,oBAAoB,OAAA;AACpB,8GAAA,iBAAiB,OAAA;AACjB,4GAAA,eAAe,OAAA;AACf,yGAAA,YAAY,OAAA;AAGd,iCAMiB;AALf,4GAAA,mBAAmB,OAAA;AACnB,0GAAA,iBAAiB,OAAA;AACjB,4GAAA,mBAAmB,OAAA;AACnB,4GAAA,mBAAmB,OAAA;AACnB,0GAAA,iBAAiB,OAAA;AAGnB,uCAUoB;AATlB,kHAAA,sBAAsB,OAAA;AACtB,qHAAA,yBAAyB,OAAA;AACzB,8GAAA,kBAAkB,OAAA;AAClB,sGAAA,UAAU,OAAA"}
|
package/dist/cjs/cost/sizes.js
CHANGED
|
@@ -9,11 +9,28 @@
|
|
|
9
9
|
* `#[derive(InitSpace)]`. Keep in sync when account layouts change.
|
|
10
10
|
*/
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.CONFIG_STATE_SIZE = exports.BORROWER_STATE_SIZE = exports.RENTAL_STATE_SIZE = exports.CONTRACT_STATE_SIZE = void 0;
|
|
12
|
+
exports.CONFIG_STATE_SIZE = exports.BORROWER_STATE_SIZE = exports.ANTEGEN_THREAD_SIZE = exports.RENTAL_STATE_SIZE = exports.CONTRACT_STATE_SIZE = void 0;
|
|
13
13
|
/** ContractState — `state/contract.rs` */
|
|
14
14
|
exports.CONTRACT_STATE_SIZE = 638;
|
|
15
|
-
/**
|
|
16
|
-
|
|
15
|
+
/**
|
|
16
|
+
* RentalState — `state/rental.rs` (two instances per contract: active + queued).
|
|
17
|
+
*
|
|
18
|
+
* Struct = u32 (4) + u8 (1) + 4×Pubkey (128) + 6×u64/i64 (48) + 2×u16 (4)
|
|
19
|
+
* + Option<Pubkey> (33) + 2×u64 (16) + i64 (8) + RentalStatus enum (1)
|
|
20
|
+
* + 2×i64 (16) = 259 bytes data, + 8 anchor discriminator = 267.
|
|
21
|
+
*/
|
|
22
|
+
exports.RENTAL_STATE_SIZE = 267;
|
|
23
|
+
/**
|
|
24
|
+
* Antegen Thread account — `antegen_thread_program::state::Thread`.
|
|
25
|
+
*
|
|
26
|
+
* Init'd via `init_if_needed` inside `create_thread` CPI with the
|
|
27
|
+
* payer footing the rent. NOT covered by the `amount` we pass into
|
|
28
|
+
* `create_thread`; it's a separate outflow the SDK previously
|
|
29
|
+
* missed. Sized at 1152 bytes based on the deployed antegen v5.0.12
|
|
30
|
+
* struct (32-byte authority + Vec<u8>/String maxes + Trigger/Schedule
|
|
31
|
+
* enum largest variants + 50-fiber id list + Signal enum + counters).
|
|
32
|
+
*/
|
|
33
|
+
exports.ANTEGEN_THREAD_SIZE = 1152;
|
|
17
34
|
/** BorrowerState — `state/borrower.rs` (Vec<Pubkey> max_len 10) */
|
|
18
35
|
exports.BORROWER_STATE_SIZE = 423;
|
|
19
36
|
/** ConfigState — `state/config.rs` */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sizes.js","sourceRoot":"","sources":["../../../src/cost/sizes.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,0CAA0C;AAC7B,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC
|
|
1
|
+
{"version":3,"file":"sizes.js","sourceRoot":"","sources":["../../../src/cost/sizes.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;AAEH,0CAA0C;AAC7B,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC;;;;;;GAMG;AACU,QAAA,iBAAiB,GAAG,GAAG,CAAC;AAErC;;;;;;;;;GASG;AACU,QAAA,mBAAmB,GAAG,IAAI,CAAC;AAExC,mEAAmE;AACtD,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,sCAAsC;AACzB,QAAA,iBAAiB,GAAG,GAAG,CAAC"}
|
|
@@ -14,10 +14,8 @@ const signer_1 = require("../utils/signer");
|
|
|
14
14
|
const amount_1 = require("../params/amount");
|
|
15
15
|
const duration_1 = require("../params/duration");
|
|
16
16
|
const fleet_1 = require("../accounts/fleet");
|
|
17
|
-
const contract_1 = require("../accounts/contract");
|
|
18
|
-
const config_2 = require("../accounts/config");
|
|
19
|
-
const rental_1 = require("../accounts/rental");
|
|
20
17
|
const borrower_1 = require("../accounts/borrower");
|
|
18
|
+
const contractSnapshot_1 = require("../utils/contractSnapshot");
|
|
21
19
|
const sage_1 = require("../pda/sage");
|
|
22
20
|
const srsly_1 = require("../pda/srsly");
|
|
23
21
|
const token_1 = require("../pda/token");
|
|
@@ -70,10 +68,14 @@ async function acceptRental(params, config) {
|
|
|
70
68
|
}
|
|
71
69
|
// Convert borrower to transaction signer
|
|
72
70
|
const borrowerSigner = (0, signer_1.toTransactionSigner)(params.borrower);
|
|
73
|
-
//
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
71
|
+
// Single-shot fetch: config + contract + active + queued rentals.
|
|
72
|
+
const snap = await (0, contractSnapshot_1.resolveContractSnapshot)({
|
|
73
|
+
contractAddress: params.contract,
|
|
74
|
+
rpcUrl: finalConfig.rpcUrl,
|
|
75
|
+
snapshot: params.snapshot,
|
|
76
|
+
});
|
|
77
|
+
const configAccount = snap.config;
|
|
78
|
+
const contractAccount = snap.contract;
|
|
77
79
|
const fleet = contractAccount.data.fleet;
|
|
78
80
|
const gameId = contractAccount.data.gameId;
|
|
79
81
|
// Client-side rate safety check
|
|
@@ -108,42 +110,37 @@ async function acceptRental(params, config) {
|
|
|
108
110
|
expiredBorrowerState = explicit;
|
|
109
111
|
}
|
|
110
112
|
}
|
|
111
|
-
|
|
112
|
-
const activeRental =
|
|
113
|
-
if (
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
expiredBorrowerManagedTA = expiredBorrowerAccount.data.managedTokenAccount;
|
|
131
|
-
}
|
|
132
|
-
catch {
|
|
133
|
-
// Can't fetch — skip discount refund account
|
|
134
|
-
}
|
|
113
|
+
if (snap.activeRental && snap.activeRental.data.status !== types_1.RentalStatus.Available) {
|
|
114
|
+
const activeRental = snap.activeRental;
|
|
115
|
+
// Check if expired (end_time in the past)
|
|
116
|
+
const now = Math.floor(Date.now() / 1000);
|
|
117
|
+
if (now >= Number(activeRental.data.endTime)) {
|
|
118
|
+
activeExpired = true;
|
|
119
|
+
expiredReferrer = (0, kit_1.isOption)(activeRental.data.referrer)
|
|
120
|
+
? ((0, kit_1.unwrapOption)(activeRental.data.referrer) ?? undefined)
|
|
121
|
+
: undefined;
|
|
122
|
+
// Defensive: drop a stale on-chain referrer the same way we do in
|
|
123
|
+
// closeRental — the expired rental's MemberState may be gone, and
|
|
124
|
+
// forwarding it would crash slyvault deposit during fees flush.
|
|
125
|
+
expiredReferrer = await (0, referrer_1.resolveReferrer)(expiredReferrer, (0, kit_1.address)(configAccount.data.slyvault), finalConfig.rpcUrl);
|
|
126
|
+
expiredDiscountBps = activeRental.data.discountBps;
|
|
127
|
+
// Fetch expired borrower's managed ATA for discount refund
|
|
128
|
+
if (expiredDiscountBps > 0 && expiredReferrer) {
|
|
129
|
+
try {
|
|
130
|
+
const expiredBorrowerAccount = await (0, borrower_1.fetchBorrower)(activeRental.data.borrowerState, finalConfig.rpcUrl);
|
|
131
|
+
expiredBorrowerManagedTA = expiredBorrowerAccount.data.managedTokenAccount;
|
|
135
132
|
}
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
if (!params.expiredBorrowerState) {
|
|
139
|
-
if (activeRental.data.borrowerState !== borrowerStatePda) {
|
|
140
|
-
expiredBorrowerState = activeRental.data.borrowerState;
|
|
133
|
+
catch {
|
|
134
|
+
// Can't fetch — skip discount refund account
|
|
141
135
|
}
|
|
142
136
|
}
|
|
143
137
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
138
|
+
// Auto-detect expiredBorrowerState if not explicitly provided
|
|
139
|
+
if (!params.expiredBorrowerState) {
|
|
140
|
+
if (activeRental.data.borrowerState !== borrowerStatePda) {
|
|
141
|
+
expiredBorrowerState = activeRental.data.borrowerState;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
147
144
|
}
|
|
148
145
|
// Derive rental authority PDA
|
|
149
146
|
const rentalAuthority = await (0, srsly_1.deriveRentalAuthority)();
|
|
@@ -173,22 +170,11 @@ async function acceptRental(params, config) {
|
|
|
173
170
|
// Derive borrower token account (ATA)
|
|
174
171
|
const borrowerTokenAccount = await (0, token_1.deriveAssociatedTokenAccount)(borrowerSigner.address, atlasMint);
|
|
175
172
|
// Resolve queued rental accounts (named optional accounts)
|
|
176
|
-
const SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';
|
|
177
|
-
const queuedRentalKey = contractAccount.data.queuedRental;
|
|
178
173
|
let queuedBorrowerProfile;
|
|
179
174
|
let queuedBorrowerProfileFaction;
|
|
180
|
-
if (
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
const queuedRentalState = await (0, rental_1.fetchRental)(queuedRentalPda, finalConfig.rpcUrl);
|
|
184
|
-
if (queuedRentalState.data.status === types_1.RentalStatus.Queued) {
|
|
185
|
-
queuedBorrowerProfile = queuedRentalState.data.borrowerProfile;
|
|
186
|
-
queuedBorrowerProfileFaction = await (0, sage_1.deriveProfileFaction)(queuedBorrowerProfile);
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
catch {
|
|
190
|
-
// Queued rental can't be fetched — skip
|
|
191
|
-
}
|
|
175
|
+
if (snap.queuedRental && snap.queuedRental.data.status === types_1.RentalStatus.Queued) {
|
|
176
|
+
queuedBorrowerProfile = snap.queuedRental.data.borrowerProfile;
|
|
177
|
+
queuedBorrowerProfileFaction = await (0, sage_1.deriveProfileFaction)(queuedBorrowerProfile);
|
|
192
178
|
}
|
|
193
179
|
// Call Codama-generated acceptRental instruction
|
|
194
180
|
const acceptRentalIx = await (0, instructions_1.getAcceptRentalInstructionAsync)({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acceptRental.js","sourceRoot":"","sources":["../../../src/instructions/acceptRental.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;
|
|
1
|
+
{"version":3,"file":"acceptRental.js","sourceRoot":"","sources":["../../../src/instructions/acceptRental.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,53 +5,19 @@
|
|
|
5
5
|
* Thin convenience wrapper around Codama-generated closeContract instruction.
|
|
6
6
|
* Closes a contract with no active rentals and claims remaining payments.
|
|
7
7
|
*/
|
|
8
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
-
if (k2 === undefined) k2 = k;
|
|
10
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
-
}
|
|
14
|
-
Object.defineProperty(o, k2, desc);
|
|
15
|
-
}) : (function(o, m, k, k2) {
|
|
16
|
-
if (k2 === undefined) k2 = k;
|
|
17
|
-
o[k2] = m[k];
|
|
18
|
-
}));
|
|
19
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
-
}) : function(o, v) {
|
|
22
|
-
o["default"] = v;
|
|
23
|
-
});
|
|
24
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
-
var ownKeys = function(o) {
|
|
26
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
-
var ar = [];
|
|
28
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
-
return ar;
|
|
30
|
-
};
|
|
31
|
-
return ownKeys(o);
|
|
32
|
-
};
|
|
33
|
-
return function (mod) {
|
|
34
|
-
if (mod && mod.__esModule) return mod;
|
|
35
|
-
var result = {};
|
|
36
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
-
__setModuleDefault(result, mod);
|
|
38
|
-
return result;
|
|
39
|
-
};
|
|
40
|
-
})();
|
|
41
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
9
|
exports.closeContract = closeContract;
|
|
43
10
|
const kit_1 = require("@solana/kit");
|
|
44
11
|
const instructions_1 = require("../generated/codama/instructions");
|
|
45
12
|
const config_1 = require("../utils/config");
|
|
46
13
|
const signer_1 = require("../utils/signer");
|
|
47
|
-
const contract_1 = require("../accounts/contract");
|
|
48
|
-
const config_2 = require("../accounts/config");
|
|
49
|
-
const rental_1 = require("../accounts/rental");
|
|
50
14
|
const thread_1 = require("../accounts/thread");
|
|
15
|
+
const contractSnapshot_1 = require("../utils/contractSnapshot");
|
|
51
16
|
const token_1 = require("../pda/token");
|
|
52
17
|
const srsly_1 = require("../pda/srsly");
|
|
53
18
|
const thread_2 = require("../pda/thread");
|
|
54
19
|
const instructions_2 = require("../utils/instructions");
|
|
20
|
+
const closeRental_1 = require("./closeRental");
|
|
55
21
|
/**
|
|
56
22
|
* Close a rental contract and refund rent to the owner. Idempotent —
|
|
57
23
|
* recovers cleanly from partial prior closes. When no rental is active,
|
|
@@ -95,9 +61,6 @@ async function closeContract(params, config) {
|
|
|
95
61
|
}
|
|
96
62
|
// Convert owner to transaction signer
|
|
97
63
|
const ownerSigner = (0, signer_1.toTransactionSigner)(params.owner);
|
|
98
|
-
// Get atlasMint from on-chain config
|
|
99
|
-
const configAccount = await (0, config_2.fetchConfig)(finalConfig.rpcUrl);
|
|
100
|
-
const atlasMint = configAccount.data.atlasMint;
|
|
101
64
|
const addresses = (0, config_1.getAddresses)(config);
|
|
102
65
|
const programAddress = (0, kit_1.address)(addresses.srsly);
|
|
103
66
|
// Resolve fleet and contract addresses
|
|
@@ -121,8 +84,14 @@ async function closeContract(params, config) {
|
|
|
121
84
|
// Should never reach here due to validation above
|
|
122
85
|
throw new Error('Either fleet or contract must be provided');
|
|
123
86
|
}
|
|
124
|
-
//
|
|
125
|
-
const
|
|
87
|
+
// Single-shot fetch: config + contract + active + queued rentals.
|
|
88
|
+
const snap = await (0, contractSnapshot_1.resolveContractSnapshot)({
|
|
89
|
+
contractAddress,
|
|
90
|
+
rpcUrl: finalConfig.rpcUrl,
|
|
91
|
+
snapshot: params.snapshot,
|
|
92
|
+
});
|
|
93
|
+
const atlasMint = snap.config.data.atlasMint;
|
|
94
|
+
const contractAccount = snap.contract;
|
|
126
95
|
if (!params.fleet) {
|
|
127
96
|
fleetAddress = contractAccount.data.fleet;
|
|
128
97
|
}
|
|
@@ -139,10 +108,9 @@ async function closeContract(params, config) {
|
|
|
139
108
|
const hasQueuedSlot = contractAccount.data.queuedRental !== SYSTEM_PROGRAM_ID;
|
|
140
109
|
// Check if active rental is expired
|
|
141
110
|
let activeExpired = false;
|
|
142
|
-
if (hasActiveSlot) {
|
|
143
|
-
const activeRental = await (0, rental_1.fetchRental)(contractAccount.data.activeRental, finalConfig.rpcUrl);
|
|
111
|
+
if (hasActiveSlot && snap.activeRental) {
|
|
144
112
|
const now = Math.floor(Date.now() / 1000);
|
|
145
|
-
if (activeRental.data.endTime <= BigInt(now)) {
|
|
113
|
+
if (snap.activeRental.data.endTime <= BigInt(now)) {
|
|
146
114
|
activeExpired = true;
|
|
147
115
|
}
|
|
148
116
|
}
|
|
@@ -154,9 +122,11 @@ async function closeContract(params, config) {
|
|
|
154
122
|
if (params.queuedBorrower) {
|
|
155
123
|
queuedBorrower = (0, kit_1.address)(params.queuedBorrower);
|
|
156
124
|
}
|
|
125
|
+
else if (snap.queuedRental) {
|
|
126
|
+
queuedBorrower = snap.queuedRental.data.borrower;
|
|
127
|
+
}
|
|
157
128
|
else {
|
|
158
|
-
|
|
159
|
-
queuedBorrower = queuedRental.data.borrower;
|
|
129
|
+
throw new Error(`Contract has queued rental pointer but rental account could not be fetched; pass queuedBorrower explicitly`);
|
|
160
130
|
}
|
|
161
131
|
queuedBorrowerState = await (0, srsly_1.deriveBorrowerState)(queuedBorrower);
|
|
162
132
|
queuedBorrowerTokenAccount = await (0, token_1.deriveAssociatedTokenAccount)(queuedBorrower, atlasMint);
|
|
@@ -194,8 +164,7 @@ async function closeContract(params, config) {
|
|
|
194
164
|
if (activeExpired && hasQueuedSlot) {
|
|
195
165
|
// Expired active + queued: multi-instruction composition
|
|
196
166
|
// 1. closeRental — settles expired active
|
|
197
|
-
const
|
|
198
|
-
const closeRentalResult = await closeRental({ payer: params.owner, contract: contractAddress }, config);
|
|
167
|
+
const closeRentalResult = await (0, closeRental_1.closeRental)({ payer: params.owner, contract: contractAddress }, config);
|
|
199
168
|
ixs.push(...closeRentalResult.instructions);
|
|
200
169
|
// 2. closeContractThread (if thread exists)
|
|
201
170
|
if (hasThread) {
|
|
@@ -208,8 +177,7 @@ async function closeContract(params, config) {
|
|
|
208
177
|
}
|
|
209
178
|
else if (activeExpired && !hasQueuedSlot) {
|
|
210
179
|
// Expired active only, no queued — settle then close
|
|
211
|
-
const
|
|
212
|
-
const closeRentalResult = await closeRental({ payer: params.owner, contract: contractAddress }, config);
|
|
180
|
+
const closeRentalResult = await (0, closeRental_1.closeRental)({ payer: params.owner, contract: contractAddress }, config);
|
|
213
181
|
ixs.push(...closeRentalResult.instructions);
|
|
214
182
|
if (hasThread) {
|
|
215
183
|
ixs.push(await buildThreadCloseIx());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"closeContract.js","sourceRoot":"","sources":["../../../src/instructions/closeContract.ts"],"names":[],"mappings":";AAAA;;;;;GAKG
|
|
1
|
+
{"version":3,"file":"closeContract.js","sourceRoot":"","sources":["../../../src/instructions/closeContract.ts"],"names":[],"mappings":"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"}
|