@bananapus/nana-sdk-core 1.1.0 → 1.2.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/actions/JBSuckerAbi.js +4 -1
- package/dist/cjs/actions/JBSuckerAbi.js.map +1 -1
- package/dist/cjs/actions/dataHook.js +26 -22
- package/dist/cjs/actions/dataHook.js.map +1 -1
- package/dist/cjs/actions/projectMetadata.js +12 -8
- package/dist/cjs/actions/projectMetadata.js.map +1 -1
- package/dist/cjs/actions/suckerPairs.js +21 -17
- package/dist/cjs/actions/suckerPairs.js.map +1 -1
- package/dist/cjs/constants.d.ts +8 -2
- package/dist/cjs/constants.d.ts.map +1 -1
- package/dist/cjs/constants.js +97 -85
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts.js +22 -19
- package/dist/cjs/contracts.js.map +1 -1
- package/dist/cjs/generated/juicebox.d.ts +36 -0
- package/dist/cjs/generated/juicebox.d.ts.map +1 -1
- package/dist/cjs/generated/juicebox.js +130 -90
- package/dist/cjs/generated/juicebox.js.map +1 -1
- package/dist/cjs/index.js +24 -8
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/types.js +15 -4
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/contracts.js +19 -14
- package/dist/cjs/utils/contracts.js.map +1 -1
- package/dist/cjs/utils/data.js +23 -13
- package/dist/cjs/utils/data.js.map +1 -1
- package/dist/cjs/utils/data.test.js +19 -17
- package/dist/cjs/utils/data.test.js.map +1 -1
- package/dist/cjs/utils/debug.js +4 -1
- package/dist/cjs/utils/debug.js.map +1 -1
- package/dist/cjs/utils/deploy.d.ts +17 -0
- package/dist/cjs/utils/deploy.d.ts.map +1 -1
- package/dist/cjs/utils/deploy.js +63 -27
- package/dist/cjs/utils/deploy.js.map +1 -1
- package/dist/cjs/utils/deploy.test.js +56 -13
- package/dist/cjs/utils/deploy.test.js.map +1 -1
- package/dist/cjs/utils/fee.js +6 -3
- package/dist/cjs/utils/fee.js.map +1 -1
- package/dist/cjs/utils/fee.test.js +8 -6
- package/dist/cjs/utils/fee.test.js.map +1 -1
- package/dist/cjs/utils/format.js +11 -6
- package/dist/cjs/utils/format.js.map +1 -1
- package/dist/cjs/utils/format.test.js +11 -9
- package/dist/cjs/utils/format.test.js.map +1 -1
- package/dist/cjs/utils/hook.js +9 -6
- package/dist/cjs/utils/hook.js.map +1 -1
- package/dist/cjs/utils/index.js +28 -12
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/ipfs.js +14 -6
- package/dist/cjs/utils/ipfs.js.map +1 -1
- package/dist/cjs/utils/ipfs.test.js +23 -18
- package/dist/cjs/utils/ipfs.test.js.map +1 -1
- package/dist/cjs/utils/revnet.js +9 -5
- package/dist/cjs/utils/revnet.js.map +1 -1
- package/dist/cjs/utils/revnet.test.js +9 -7
- package/dist/cjs/utils/revnet.test.js.map +1 -1
- package/dist/cjs/utils/ruleset.js +11 -7
- package/dist/cjs/utils/ruleset.js.map +1 -1
- package/dist/cjs/utils/ruleset.test.js +9 -7
- package/dist/cjs/utils/ruleset.test.js.map +1 -1
- package/dist/cjs/utils/token.js +26 -19
- package/dist/cjs/utils/token.js.map +1 -1
- package/dist/cjs/utils/token.test.js +25 -23
- package/dist/cjs/utils/token.test.js.map +1 -1
- package/dist/cjs/utils/tx.js +6 -3
- package/dist/cjs/utils/tx.js.map +1 -1
- package/dist/cjs/utils/urn.js +9 -5
- package/dist/cjs/utils/urn.js.map +1 -1
- package/dist/cjs/utils/urn.test.js +71 -69
- package/dist/cjs/utils/urn.test.js.map +1 -1
- package/dist/cjs/v6/cashOut.d.ts +5 -0
- package/dist/cjs/v6/cashOut.d.ts.map +1 -1
- package/dist/cjs/v6/cashOut.js +19 -10
- package/dist/cjs/v6/cashOut.js.map +1 -1
- package/dist/cjs/v6/cashOut.test.js +42 -40
- package/dist/cjs/v6/cashOut.test.js.map +1 -1
- package/dist/cjs/v6/currency.js +8 -4
- package/dist/cjs/v6/currency.js.map +1 -1
- package/dist/cjs/v6/currency.test.js +18 -16
- package/dist/cjs/v6/currency.test.js.map +1 -1
- package/dist/cjs/v6/fees.js +11 -6
- package/dist/cjs/v6/fees.js.map +1 -1
- package/dist/cjs/v6/fees.test.js +29 -27
- package/dist/cjs/v6/fees.test.js.map +1 -1
- package/dist/cjs/v6/index.js +31 -15
- package/dist/cjs/v6/index.js.map +1 -1
- package/dist/cjs/v6/launch.js +31 -23
- package/dist/cjs/v6/launch.js.map +1 -1
- package/dist/cjs/v6/launch.test.js +85 -83
- package/dist/cjs/v6/launch.test.js.map +1 -1
- package/dist/cjs/v6/loans.js +26 -19
- package/dist/cjs/v6/loans.js.map +1 -1
- package/dist/cjs/v6/loans.test.js +52 -50
- package/dist/cjs/v6/loans.test.js.map +1 -1
- package/dist/cjs/v6/omnichain.d.ts +6 -1
- package/dist/cjs/v6/omnichain.d.ts.map +1 -1
- package/dist/cjs/v6/omnichain.js +20 -12
- package/dist/cjs/v6/omnichain.js.map +1 -1
- package/dist/cjs/v6/omnichain.test.js +63 -61
- package/dist/cjs/v6/omnichain.test.js.map +1 -1
- package/dist/cjs/v6/pay.js +20 -15
- package/dist/cjs/v6/pay.js.map +1 -1
- package/dist/cjs/v6/pay.test.js +49 -47
- package/dist/cjs/v6/pay.test.js.map +1 -1
- package/dist/cjs/v6/permissions.js +14 -9
- package/dist/cjs/v6/permissions.js.map +1 -1
- package/dist/cjs/v6/permissions.test.js +47 -45
- package/dist/cjs/v6/permissions.test.js.map +1 -1
- package/dist/cjs/v6/revnets.d.ts +5 -3
- package/dist/cjs/v6/revnets.d.ts.map +1 -1
- package/dist/cjs/v6/revnets.js +43 -26
- package/dist/cjs/v6/revnets.js.map +1 -1
- package/dist/cjs/v6/revnets.test.js +80 -78
- package/dist/cjs/v6/revnets.test.js.map +1 -1
- package/dist/cjs/v6/rulesets.js +20 -14
- package/dist/cjs/v6/rulesets.js.map +1 -1
- package/dist/cjs/v6/rulesets.test.js +50 -48
- package/dist/cjs/v6/rulesets.test.js.map +1 -1
- package/dist/cjs/v6/splits.d.ts +3 -2
- package/dist/cjs/v6/splits.d.ts.map +1 -1
- package/dist/cjs/v6/splits.js +29 -18
- package/dist/cjs/v6/splits.js.map +1 -1
- package/dist/cjs/v6/splits.test.js +84 -80
- package/dist/cjs/v6/splits.test.js.map +1 -1
- package/dist/cjs/v6/suckers.js +22 -15
- package/dist/cjs/v6/suckers.js.map +1 -1
- package/dist/cjs/v6/suckers.test.js +57 -55
- package/dist/cjs/v6/suckers.test.js.map +1 -1
- package/dist/cjs/v6/terminals.js +15 -11
- package/dist/cjs/v6/terminals.js.map +1 -1
- package/dist/cjs/v6/terminals.test.js +30 -28
- package/dist/cjs/v6/terminals.test.js.map +1 -1
- package/dist/cjs/v6/tokens.js +34 -25
- package/dist/cjs/v6/tokens.js.map +1 -1
- package/dist/cjs/v6/tokens.test.js +66 -64
- package/dist/cjs/v6/tokens.test.js.map +1 -1
- package/dist/cjs/v6/types.js +6 -3
- package/dist/cjs/v6/types.js.map +1 -1
- package/dist/esm/constants.d.ts +8 -2
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/constants.js +9 -1
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/generated/juicebox.d.ts +36 -0
- package/dist/esm/generated/juicebox.d.ts.map +1 -1
- package/dist/esm/generated/juicebox.js +36 -0
- package/dist/esm/generated/juicebox.js.map +1 -1
- package/dist/esm/utils/deploy.d.ts +17 -0
- package/dist/esm/utils/deploy.d.ts.map +1 -1
- package/dist/esm/utils/deploy.js +50 -18
- package/dist/esm/utils/deploy.js.map +1 -1
- package/dist/esm/utils/deploy.test.js +41 -0
- package/dist/esm/utils/deploy.test.js.map +1 -1
- package/dist/esm/v6/cashOut.d.ts +5 -0
- package/dist/esm/v6/cashOut.d.ts.map +1 -1
- package/dist/esm/v6/cashOut.js +5 -0
- package/dist/esm/v6/cashOut.js.map +1 -1
- package/dist/esm/v6/omnichain.d.ts +6 -1
- package/dist/esm/v6/omnichain.d.ts.map +1 -1
- package/dist/esm/v6/omnichain.js +6 -2
- package/dist/esm/v6/omnichain.js.map +1 -1
- package/dist/esm/v6/revnets.d.ts +5 -3
- package/dist/esm/v6/revnets.d.ts.map +1 -1
- package/dist/esm/v6/revnets.js +12 -4
- package/dist/esm/v6/revnets.js.map +1 -1
- package/dist/esm/v6/splits.d.ts +3 -2
- package/dist/esm/v6/splits.d.ts.map +1 -1
- package/dist/esm/v6/splits.js +9 -5
- package/dist/esm/v6/splits.js.map +1 -1
- package/dist/esm/v6/splits.test.js +8 -6
- package/dist/esm/v6/splits.test.js.map +1 -1
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const viem_1 = require("viem");
|
|
4
|
+
const chains_1 = require("viem/chains");
|
|
5
|
+
const vitest_1 = require("vitest");
|
|
6
|
+
const constants_js_1 = require("../constants.js");
|
|
7
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
8
|
+
const launch_js_1 = require("./launch.js");
|
|
9
|
+
const types_js_1 = require("./types.js");
|
|
8
10
|
const OWNER = "0x000000000000000000000000000000000000dEaD";
|
|
9
11
|
/** A stub PublicClient that records readContract calls. */
|
|
10
12
|
function stubClient(returnValue, calls = []) {
|
|
@@ -16,118 +18,118 @@ function stubClient(returnValue, calls = []) {
|
|
|
16
18
|
};
|
|
17
19
|
return { client, calls };
|
|
18
20
|
}
|
|
19
|
-
describe("buildAccountingContext", () => {
|
|
20
|
-
test("defaults to the native token (61166 currency, 18 decimals)", () => {
|
|
21
|
-
expect(buildAccountingContext()).toEqual({
|
|
22
|
-
token: NATIVE_TOKEN,
|
|
21
|
+
(0, vitest_1.describe)("buildAccountingContext", () => {
|
|
22
|
+
(0, vitest_1.test)("defaults to the native token (61166 currency, 18 decimals)", () => {
|
|
23
|
+
(0, vitest_1.expect)((0, launch_js_1.buildAccountingContext)()).toEqual({
|
|
24
|
+
token: constants_js_1.NATIVE_TOKEN,
|
|
23
25
|
decimals: 18,
|
|
24
26
|
currency: 61166,
|
|
25
27
|
});
|
|
26
28
|
});
|
|
27
|
-
test("keys the currency off the token address", () => {
|
|
28
|
-
const usdc = USDC_ADDRESSES[sepolia.id];
|
|
29
|
-
const context = buildAccountingContext(usdc, 6);
|
|
30
|
-
expect(context.token).toBe(usdc);
|
|
31
|
-
expect(context.decimals).toBe(6);
|
|
32
|
-
expect(context.currency).toBe(Number(BigInt(usdc) & 0xffffffffn));
|
|
29
|
+
(0, vitest_1.test)("keys the currency off the token address", () => {
|
|
30
|
+
const usdc = constants_js_1.USDC_ADDRESSES[chains_1.sepolia.id];
|
|
31
|
+
const context = (0, launch_js_1.buildAccountingContext)(usdc, 6);
|
|
32
|
+
(0, vitest_1.expect)(context.token).toBe(usdc);
|
|
33
|
+
(0, vitest_1.expect)(context.decimals).toBe(6);
|
|
34
|
+
(0, vitest_1.expect)(context.currency).toBe(Number(BigInt(usdc) & 0xffffffffn));
|
|
33
35
|
});
|
|
34
|
-
test("requires decimals for non-native tokens", () => {
|
|
35
|
-
expect(() => buildAccountingContext(USDC_ADDRESSES[sepolia.id])).toThrow(/decimals is required/);
|
|
36
|
+
(0, vitest_1.test)("requires decimals for non-native tokens", () => {
|
|
37
|
+
(0, vitest_1.expect)(() => (0, launch_js_1.buildAccountingContext)(constants_js_1.USDC_ADDRESSES[chains_1.sepolia.id])).toThrow(/decimals is required/);
|
|
36
38
|
});
|
|
37
39
|
});
|
|
38
|
-
describe("buildTerminalConfigurations", () => {
|
|
39
|
-
test("pairs the multi terminal with the router registry (empty contexts)", () => {
|
|
40
|
-
const configurations = buildTerminalConfigurations({
|
|
41
|
-
chainId: sepolia.id,
|
|
40
|
+
(0, vitest_1.describe)("buildTerminalConfigurations", () => {
|
|
41
|
+
(0, vitest_1.test)("pairs the multi terminal with the router registry (empty contexts)", () => {
|
|
42
|
+
const configurations = (0, launch_js_1.buildTerminalConfigurations)({
|
|
43
|
+
chainId: chains_1.sepolia.id,
|
|
42
44
|
});
|
|
43
|
-
expect(configurations).toHaveLength(2);
|
|
44
|
-
expect(configurations[0].terminal).toBe(v6Address("JBMultiTerminal", sepolia.id));
|
|
45
|
-
expect(configurations[0].accountingContextsToAccept).toEqual([
|
|
46
|
-
buildAccountingContext(),
|
|
45
|
+
(0, vitest_1.expect)(configurations).toHaveLength(2);
|
|
46
|
+
(0, vitest_1.expect)(configurations[0].terminal).toBe((0, types_js_1.v6Address)("JBMultiTerminal", chains_1.sepolia.id));
|
|
47
|
+
(0, vitest_1.expect)(configurations[0].accountingContextsToAccept).toEqual([
|
|
48
|
+
(0, launch_js_1.buildAccountingContext)(),
|
|
47
49
|
]);
|
|
48
|
-
expect(configurations[1].terminal).toBe(v6Address("JBRouterTerminalRegistry", sepolia.id));
|
|
49
|
-
expect(configurations[1].accountingContextsToAccept).toEqual([]);
|
|
50
|
+
(0, vitest_1.expect)(configurations[1].terminal).toBe((0, types_js_1.v6Address)("JBRouterTerminalRegistry", chains_1.sepolia.id));
|
|
51
|
+
(0, vitest_1.expect)(configurations[1].accountingContextsToAccept).toEqual([]);
|
|
50
52
|
});
|
|
51
|
-
test("accepts explicit accounting contexts", () => {
|
|
52
|
-
const usdcContext = buildAccountingContext(USDC_ADDRESSES[sepolia.id], 6);
|
|
53
|
-
const configurations = buildTerminalConfigurations({
|
|
54
|
-
chainId: sepolia.id,
|
|
53
|
+
(0, vitest_1.test)("accepts explicit accounting contexts", () => {
|
|
54
|
+
const usdcContext = (0, launch_js_1.buildAccountingContext)(constants_js_1.USDC_ADDRESSES[chains_1.sepolia.id], 6);
|
|
55
|
+
const configurations = (0, launch_js_1.buildTerminalConfigurations)({
|
|
56
|
+
chainId: chains_1.sepolia.id,
|
|
55
57
|
accountingContexts: [usdcContext],
|
|
56
58
|
});
|
|
57
|
-
expect(configurations[0].accountingContextsToAccept).toEqual([usdcContext]);
|
|
59
|
+
(0, vitest_1.expect)(configurations[0].accountingContextsToAccept).toEqual([usdcContext]);
|
|
58
60
|
});
|
|
59
61
|
});
|
|
60
|
-
describe("buildRulesetMetadata", () => {
|
|
61
|
-
test("uses safe v6 defaults", () => {
|
|
62
|
-
const metadata = buildRulesetMetadata();
|
|
63
|
-
expect(metadata.reservedPercent).toBe(0);
|
|
64
|
-
expect(metadata.cashOutTaxRate).toBe(0);
|
|
65
|
-
expect(metadata.baseCurrency).toBe(1);
|
|
66
|
-
expect(metadata.scopeCashOutsToLocalBalances).toBe(false);
|
|
67
|
-
expect(metadata.dataHook).toBe(zeroAddress);
|
|
68
|
-
expect(metadata.metadata).toBe(0);
|
|
62
|
+
(0, vitest_1.describe)("buildRulesetMetadata", () => {
|
|
63
|
+
(0, vitest_1.test)("uses safe v6 defaults", () => {
|
|
64
|
+
const metadata = (0, launch_js_1.buildRulesetMetadata)();
|
|
65
|
+
(0, vitest_1.expect)(metadata.reservedPercent).toBe(0);
|
|
66
|
+
(0, vitest_1.expect)(metadata.cashOutTaxRate).toBe(0);
|
|
67
|
+
(0, vitest_1.expect)(metadata.baseCurrency).toBe(1);
|
|
68
|
+
(0, vitest_1.expect)(metadata.scopeCashOutsToLocalBalances).toBe(false);
|
|
69
|
+
(0, vitest_1.expect)(metadata.dataHook).toBe(viem_1.zeroAddress);
|
|
70
|
+
(0, vitest_1.expect)(metadata.metadata).toBe(0);
|
|
69
71
|
// v6 field name only — the old inverted field must not exist.
|
|
70
|
-
expect("useTotalSurplusForCashOuts" in metadata).toBe(false);
|
|
72
|
+
(0, vitest_1.expect)("useTotalSurplusForCashOuts" in metadata).toBe(false);
|
|
71
73
|
});
|
|
72
|
-
test("honors overrides", () => {
|
|
73
|
-
const metadata = buildRulesetMetadata({
|
|
74
|
+
(0, vitest_1.test)("honors overrides", () => {
|
|
75
|
+
const metadata = (0, launch_js_1.buildRulesetMetadata)({
|
|
74
76
|
reservedPercent: 5000,
|
|
75
77
|
baseCurrency: 2,
|
|
76
78
|
allowOwnerMinting: true,
|
|
77
79
|
});
|
|
78
|
-
expect(metadata.reservedPercent).toBe(5000);
|
|
79
|
-
expect(metadata.baseCurrency).toBe(2);
|
|
80
|
-
expect(metadata.allowOwnerMinting).toBe(true);
|
|
81
|
-
expect(metadata.pausePay).toBe(false);
|
|
80
|
+
(0, vitest_1.expect)(metadata.reservedPercent).toBe(5000);
|
|
81
|
+
(0, vitest_1.expect)(metadata.baseCurrency).toBe(2);
|
|
82
|
+
(0, vitest_1.expect)(metadata.allowOwnerMinting).toBe(true);
|
|
83
|
+
(0, vitest_1.expect)(metadata.pausePay).toBe(false);
|
|
82
84
|
});
|
|
83
85
|
});
|
|
84
|
-
describe("buildRulesetConfiguration", () => {
|
|
85
|
-
test("uses safe defaults (zero payouts, no approval hook)", () => {
|
|
86
|
-
const configuration = buildRulesetConfiguration();
|
|
87
|
-
expect(configuration.mustStartAtOrAfter).toBe(0);
|
|
88
|
-
expect(configuration.duration).toBe(0);
|
|
89
|
-
expect(configuration.weight).toBe(0n);
|
|
90
|
-
expect(configuration.weightCutPercent).toBe(0);
|
|
91
|
-
expect(configuration.approvalHook).toBe(zeroAddress);
|
|
92
|
-
expect(configuration.splitGroups).toEqual([]);
|
|
93
|
-
expect(configuration.fundAccessLimitGroups).toEqual([]);
|
|
94
|
-
expect(configuration.metadata).toEqual(buildRulesetMetadata());
|
|
86
|
+
(0, vitest_1.describe)("buildRulesetConfiguration", () => {
|
|
87
|
+
(0, vitest_1.test)("uses safe defaults (zero payouts, no approval hook)", () => {
|
|
88
|
+
const configuration = (0, launch_js_1.buildRulesetConfiguration)();
|
|
89
|
+
(0, vitest_1.expect)(configuration.mustStartAtOrAfter).toBe(0);
|
|
90
|
+
(0, vitest_1.expect)(configuration.duration).toBe(0);
|
|
91
|
+
(0, vitest_1.expect)(configuration.weight).toBe(0n);
|
|
92
|
+
(0, vitest_1.expect)(configuration.weightCutPercent).toBe(0);
|
|
93
|
+
(0, vitest_1.expect)(configuration.approvalHook).toBe(viem_1.zeroAddress);
|
|
94
|
+
(0, vitest_1.expect)(configuration.splitGroups).toEqual([]);
|
|
95
|
+
(0, vitest_1.expect)(configuration.fundAccessLimitGroups).toEqual([]);
|
|
96
|
+
(0, vitest_1.expect)(configuration.metadata).toEqual((0, launch_js_1.buildRulesetMetadata)());
|
|
95
97
|
});
|
|
96
98
|
});
|
|
97
|
-
describe("buildLaunchProjectTx", () => {
|
|
98
|
-
test("encodes against the controller ABI with the creation fee as value", () => {
|
|
99
|
-
const creationFee = parseEther("0.01");
|
|
100
|
-
const request = buildLaunchProjectTx({
|
|
101
|
-
chainId: sepolia.id,
|
|
99
|
+
(0, vitest_1.describe)("buildLaunchProjectTx", () => {
|
|
100
|
+
(0, vitest_1.test)("encodes against the controller ABI with the creation fee as value", () => {
|
|
101
|
+
const creationFee = (0, viem_1.parseEther)("0.01");
|
|
102
|
+
const request = (0, launch_js_1.buildLaunchProjectTx)({
|
|
103
|
+
chainId: chains_1.sepolia.id,
|
|
102
104
|
owner: OWNER,
|
|
103
105
|
projectUri: "ipfs://bafy",
|
|
104
106
|
rulesetConfigurations: [
|
|
105
|
-
buildRulesetConfiguration({ weight: parseEther("1000") }),
|
|
107
|
+
(0, launch_js_1.buildRulesetConfiguration)({ weight: (0, viem_1.parseEther)("1000") }),
|
|
106
108
|
],
|
|
107
|
-
terminalConfigurations: buildTerminalConfigurations({
|
|
108
|
-
chainId: sepolia.id,
|
|
109
|
+
terminalConfigurations: (0, launch_js_1.buildTerminalConfigurations)({
|
|
110
|
+
chainId: chains_1.sepolia.id,
|
|
109
111
|
}),
|
|
110
112
|
creationFee,
|
|
111
113
|
});
|
|
112
|
-
expect(request.address).toBe(v6Address("JBController", sepolia.id));
|
|
113
|
-
expect(request.value).toBe(creationFee);
|
|
114
|
-
expect(request.args[4]).toBe(""); // default memo
|
|
115
|
-
const data = encodeFunctionData(request);
|
|
116
|
-
const decoded = decodeFunctionData({ abi: jbControllerAbi, data });
|
|
114
|
+
(0, vitest_1.expect)(request.address).toBe((0, types_js_1.v6Address)("JBController", chains_1.sepolia.id));
|
|
115
|
+
(0, vitest_1.expect)(request.value).toBe(creationFee);
|
|
116
|
+
(0, vitest_1.expect)(request.args[4]).toBe(""); // default memo
|
|
117
|
+
const data = (0, viem_1.encodeFunctionData)(request);
|
|
118
|
+
const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.jbControllerAbi, data });
|
|
117
119
|
if (decoded.functionName !== "launchProjectFor") {
|
|
118
120
|
throw new Error("decoded the wrong function");
|
|
119
121
|
}
|
|
120
|
-
expect(decoded.args[0].toLowerCase()).toBe(OWNER.toLowerCase());
|
|
122
|
+
(0, vitest_1.expect)(decoded.args[0].toLowerCase()).toBe(OWNER.toLowerCase());
|
|
121
123
|
});
|
|
122
124
|
});
|
|
123
|
-
describe("getProjectCreationFee", () => {
|
|
124
|
-
test("reads JBProjects.creationFee on the requested chain", async () => {
|
|
125
|
-
const { client, calls } = stubClient(parseEther("0.001"));
|
|
126
|
-
const fee = await getProjectCreationFee(client, sepolia.id);
|
|
127
|
-
expect(fee).toBe(parseEther("0.001"));
|
|
128
|
-
expect(calls).toHaveLength(1);
|
|
129
|
-
expect(calls[0]).toMatchObject({
|
|
130
|
-
address: v6Address("JBProjects", sepolia.id),
|
|
125
|
+
(0, vitest_1.describe)("getProjectCreationFee", () => {
|
|
126
|
+
(0, vitest_1.test)("reads JBProjects.creationFee on the requested chain", async () => {
|
|
127
|
+
const { client, calls } = stubClient((0, viem_1.parseEther)("0.001"));
|
|
128
|
+
const fee = await (0, launch_js_1.getProjectCreationFee)(client, chains_1.sepolia.id);
|
|
129
|
+
(0, vitest_1.expect)(fee).toBe((0, viem_1.parseEther)("0.001"));
|
|
130
|
+
(0, vitest_1.expect)(calls).toHaveLength(1);
|
|
131
|
+
(0, vitest_1.expect)(calls[0]).toMatchObject({
|
|
132
|
+
address: (0, types_js_1.v6Address)("JBProjects", chains_1.sepolia.id),
|
|
131
133
|
functionName: "creationFee",
|
|
132
134
|
});
|
|
133
135
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"launch.test.js","sourceRoot":"","sources":["../../../src/v6/launch.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"launch.test.js","sourceRoot":"","sources":["../../../src/v6/launch.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/v6/loans.js
CHANGED
|
@@ -1,33 +1,40 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EMPTY_SINGLE_ALLOWANCE = exports.REVLOANS_PERMISSION_ID = exports.REV_PREPAID_FEE_PERCENT = exports.MIN_PREPAID_FEE_PERCENT = exports.LOANS_MAX_FEE = void 0;
|
|
4
|
+
exports.buildBorrowTx = buildBorrowTx;
|
|
5
|
+
exports.buildRepayLoanTx = buildRepayLoanTx;
|
|
6
|
+
exports.buildReallocateCollateralTx = buildReallocateCollateralTx;
|
|
7
|
+
exports.getBorrowableAmount = getBorrowableAmount;
|
|
8
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
9
|
+
const types_js_1 = require("./types.js");
|
|
3
10
|
/**
|
|
4
11
|
* The denominator for REVLoans fee percents: prepaid fee percents and source fee percents
|
|
5
12
|
* are expressed out of 1000.
|
|
6
13
|
*/
|
|
7
|
-
|
|
14
|
+
exports.LOANS_MAX_FEE = 1000n;
|
|
8
15
|
/**
|
|
9
16
|
* The minimum `prepaidFeePercent` REVLoans accepts when borrowing: 25 of {@link LOANS_MAX_FEE}
|
|
10
17
|
* (2.5%), paid upfront to the source revnet. Prepaying more than the minimum extends the
|
|
11
18
|
* loan's zero-additional-cost duration; after it expires the repayment cost increases
|
|
12
19
|
* linearly until the loan liquidates at 10 years.
|
|
13
20
|
*/
|
|
14
|
-
|
|
21
|
+
exports.MIN_PREPAID_FEE_PERCENT = 25n;
|
|
15
22
|
/**
|
|
16
23
|
* The upfront fee REVLoans routes to the $REV revnet on every borrow: 10 of
|
|
17
24
|
* {@link LOANS_MAX_FEE} (1%), taken in addition to the prepaid fee.
|
|
18
25
|
*/
|
|
19
|
-
|
|
26
|
+
exports.REV_PREPAID_FEE_PERCENT = 10n;
|
|
20
27
|
/**
|
|
21
28
|
* The JBPermissions permission id apps grant to the REVLoans contract before borrowing
|
|
22
29
|
* against a holder's tokens (v6 ROOT permission id 1). REVLoans needs it to manage the
|
|
23
30
|
* holder's collateral tokens on their behalf.
|
|
24
31
|
*/
|
|
25
|
-
|
|
32
|
+
exports.REVLOANS_PERMISSION_ID = 1;
|
|
26
33
|
/**
|
|
27
34
|
* An empty Permit2 allowance: use when no permit signature is needed (native-token
|
|
28
35
|
* repayments, or ERC-20s already approved to REVLoans).
|
|
29
36
|
*/
|
|
30
|
-
|
|
37
|
+
exports.EMPTY_SINGLE_ALLOWANCE = {
|
|
31
38
|
sigDeadline: 0n,
|
|
32
39
|
amount: 0n,
|
|
33
40
|
expiration: 0,
|
|
@@ -53,11 +60,11 @@ export const EMPTY_SINGLE_ALLOWANCE = {
|
|
|
53
60
|
* Must be at least {@link MIN_PREPAID_FEE_PERCENT}.
|
|
54
61
|
* @param args.holder The address whose tokens are used as collateral.
|
|
55
62
|
*/
|
|
56
|
-
|
|
63
|
+
function buildBorrowTx({ chainId, revnetId, token, minBorrowAmount = 0n, collateralCount, beneficiary, prepaidFeePercent, holder, }) {
|
|
57
64
|
return {
|
|
58
65
|
chainId,
|
|
59
|
-
address: v6Address("REVLoans", chainId),
|
|
60
|
-
abi: revLoansAbi,
|
|
66
|
+
address: (0, types_js_1.v6Address)("REVLoans", chainId),
|
|
67
|
+
abi: juicebox_js_1.revLoansAbi,
|
|
61
68
|
functionName: "borrowFrom",
|
|
62
69
|
args: [
|
|
63
70
|
revnetId,
|
|
@@ -89,11 +96,11 @@ export function buildBorrowTx({ chainId, revnetId, token, minBorrowAmount = 0n,
|
|
|
89
96
|
* {@link EMPTY_SINGLE_ALLOWANCE}.
|
|
90
97
|
* @param args.value The native-token repayment to send along. Defaults to 0.
|
|
91
98
|
*/
|
|
92
|
-
|
|
99
|
+
function buildRepayLoanTx({ chainId, loanId, maxRepayBorrowAmount, collateralCountToReturn, beneficiary, allowance = exports.EMPTY_SINGLE_ALLOWANCE, value = 0n, }) {
|
|
93
100
|
return {
|
|
94
101
|
chainId,
|
|
95
|
-
address: v6Address("REVLoans", chainId),
|
|
96
|
-
abi: revLoansAbi,
|
|
102
|
+
address: (0, types_js_1.v6Address)("REVLoans", chainId),
|
|
103
|
+
abi: juicebox_js_1.revLoansAbi,
|
|
97
104
|
functionName: "repayLoan",
|
|
98
105
|
args: [
|
|
99
106
|
loanId,
|
|
@@ -127,11 +134,11 @@ export function buildRepayLoanTx({ chainId, loanId, maxRepayBorrowAmount, collat
|
|
|
127
134
|
* @param args.prepaidFeePercent The fee percent to prepay on the new loan, out of
|
|
128
135
|
* {@link LOANS_MAX_FEE}. Must be at least {@link MIN_PREPAID_FEE_PERCENT}.
|
|
129
136
|
*/
|
|
130
|
-
|
|
137
|
+
function buildReallocateCollateralTx({ chainId, loanId, collateralCountToTransfer, token, minBorrowAmount = 0n, collateralCountToAdd, beneficiary, prepaidFeePercent, }) {
|
|
131
138
|
return {
|
|
132
139
|
chainId,
|
|
133
|
-
address: v6Address("REVLoans", chainId),
|
|
134
|
-
abi: revLoansAbi,
|
|
140
|
+
address: (0, types_js_1.v6Address)("REVLoans", chainId),
|
|
141
|
+
abi: juicebox_js_1.revLoansAbi,
|
|
135
142
|
functionName: "reallocateCollateralFromLoan",
|
|
136
143
|
args: [
|
|
137
144
|
loanId,
|
|
@@ -158,10 +165,10 @@ export function buildReallocateCollateralTx({ chainId, loanId, collateralCountTo
|
|
|
158
165
|
* @returns `borrowableNow` (currently borrowable, net of the revnet's cash-out delay) and
|
|
159
166
|
* `borrowableCapacity` (the full capacity the collateral represents).
|
|
160
167
|
*/
|
|
161
|
-
|
|
168
|
+
async function getBorrowableAmount(client, { chainId, revnetId, collateralCount, decimals, currency, }) {
|
|
162
169
|
const [borrowableNow, borrowableCapacity] = await client.readContract({
|
|
163
|
-
address: v6Address("REVLoans", chainId),
|
|
164
|
-
abi: revLoansAbi,
|
|
170
|
+
address: (0, types_js_1.v6Address)("REVLoans", chainId),
|
|
171
|
+
abi: juicebox_js_1.revLoansAbi,
|
|
165
172
|
functionName: "borrowableAmountFrom",
|
|
166
173
|
args: [revnetId, collateralCount, decimals, currency],
|
|
167
174
|
});
|
package/dist/cjs/v6/loans.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loans.js","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loans.js","sourceRoot":"","sources":["../../../src/v6/loans.ts"],"names":[],"mappings":";;;AA4EA,sCAwCC;AAqBD,4CAsCC;AAwBD,kEAwCC;AAgBD,kDAwBC;AAtRD,0DAAuD;AAEvD,yCAAuC;AAEvC;;;GAGG;AACU,QAAA,aAAa,GAAG,KAAK,CAAC;AAEnC;;;;;GAKG;AACU,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C;;;GAGG;AACU,QAAA,uBAAuB,GAAG,GAAG,CAAC;AAE3C;;;;GAIG;AACU,QAAA,sBAAsB,GAAG,CAAC,CAAC;AAexC;;;GAGG;AACU,QAAA,sBAAsB,GAAsB;IACvD,WAAW,EAAE,EAAE;IACf,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,CAAC;IACb,KAAK,EAAE,CAAC;IACR,SAAS,EAAE,IAAI;CAChB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,QAAQ,EACR,KAAK,EACL,eAAe,GAAG,EAAE,EACpB,eAAe,EACf,WAAW,EACX,iBAAiB,EACjB,MAAM,GAUP;IAOC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,IAAA,oBAAS,EAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,yBAAW;QAChB,YAAY,EAAE,YAAY;QAC1B,IAAI,EAAE;YACJ,QAAQ;YACR,KAAK;YACL,eAAe;YACf,eAAe;YACf,WAAW;YACX,iBAAiB;YACjB,MAAM;SACP;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,gBAAgB,CAAC,EAC/B,OAAO,EACP,MAAM,EACN,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACX,SAAS,GAAG,8BAAsB,EAClC,KAAK,GAAG,EAAE,GASX;IAQC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,IAAA,oBAAS,EAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,yBAAW;QAChB,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE;YACJ,MAAM;YACN,oBAAoB;YACpB,uBAAuB;YACvB,WAAW;YACX,SAAS;SACV;QACD,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAgB,2BAA2B,CAAC,EAC1C,OAAO,EACP,MAAM,EACN,yBAAyB,EACzB,KAAK,EACL,eAAe,GAAG,EAAE,EACpB,oBAAoB,EACpB,WAAW,EACX,iBAAiB,GAUlB;IAOC,OAAO;QACL,OAAO;QACP,OAAO,EAAE,IAAA,oBAAS,EAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,yBAAW;QAChB,YAAY,EAAE,8BAA8B;QAC5C,IAAI,EAAE;YACJ,MAAM;YACN,yBAAyB;YACzB,KAAK;YACL,eAAe;YACf,oBAAoB;YACpB,WAAW;YACX,iBAAiB;SAClB;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,mBAAmB,CACvC,MAAoB,EACpB,EACE,OAAO,EACP,QAAQ,EACR,eAAe,EACf,QAAQ,EACR,QAAQ,GAOT;IAED,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACpE,OAAO,EAAE,IAAA,oBAAS,EAAC,UAAU,EAAE,OAAO,CAAC;QACvC,GAAG,EAAE,yBAAW;QAChB,YAAY,EAAE,sBAAsB;QACpC,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,QAAQ,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AAC/C,CAAC"}
|
|
@@ -1,35 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const vitest_1 = require("vitest");
|
|
4
|
+
const viem_1 = require("viem");
|
|
5
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
6
|
+
const loans_js_1 = require("./loans.js");
|
|
7
|
+
const types_js_1 = require("./types.js");
|
|
6
8
|
const token = "0x000000000000000000000000000000000000EEEe";
|
|
7
9
|
const beneficiary = "0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266";
|
|
8
10
|
const holder = "0x70997970C51812dc3A010C7d01b50e0d17dc79C8";
|
|
9
|
-
describe("loans", () => {
|
|
10
|
-
test("constants match REVLoans", () => {
|
|
11
|
-
expect(MIN_PREPAID_FEE_PERCENT).toEqual(25n);
|
|
12
|
-
expect(REV_PREPAID_FEE_PERCENT).toEqual(10n);
|
|
13
|
-
expect(LOANS_MAX_FEE).toEqual(1000n);
|
|
14
|
-
expect(REVLOANS_PERMISSION_ID).toEqual(1);
|
|
11
|
+
(0, vitest_1.describe)("loans", () => {
|
|
12
|
+
(0, vitest_1.test)("constants match REVLoans", () => {
|
|
13
|
+
(0, vitest_1.expect)(loans_js_1.MIN_PREPAID_FEE_PERCENT).toEqual(25n);
|
|
14
|
+
(0, vitest_1.expect)(loans_js_1.REV_PREPAID_FEE_PERCENT).toEqual(10n);
|
|
15
|
+
(0, vitest_1.expect)(loans_js_1.LOANS_MAX_FEE).toEqual(1000n);
|
|
16
|
+
(0, vitest_1.expect)(loans_js_1.REVLOANS_PERMISSION_ID).toEqual(1);
|
|
15
17
|
});
|
|
16
|
-
describe("buildBorrowTx", () => {
|
|
17
|
-
test("targets REVLoans and encodes borrowFrom", () => {
|
|
18
|
-
const tx = buildBorrowTx({
|
|
18
|
+
(0, vitest_1.describe)("buildBorrowTx", () => {
|
|
19
|
+
(0, vitest_1.test)("targets REVLoans and encodes borrowFrom", () => {
|
|
20
|
+
const tx = (0, loans_js_1.buildBorrowTx)({
|
|
19
21
|
chainId: 11155111,
|
|
20
22
|
revnetId: 4n,
|
|
21
23
|
token,
|
|
22
24
|
collateralCount: 100n * 10n ** 18n,
|
|
23
25
|
beneficiary,
|
|
24
|
-
prepaidFeePercent: MIN_PREPAID_FEE_PERCENT,
|
|
26
|
+
prepaidFeePercent: loans_js_1.MIN_PREPAID_FEE_PERCENT,
|
|
25
27
|
holder,
|
|
26
28
|
});
|
|
27
|
-
expect(tx.address).toEqual(v6Address("REVLoans", 11155111));
|
|
28
|
-
expect(tx.functionName).toEqual("borrowFrom");
|
|
29
|
-
const data = encodeFunctionData(tx);
|
|
30
|
-
const decoded = decodeFunctionData({ abi: revLoansAbi, data });
|
|
31
|
-
expect(decoded.functionName).toEqual("borrowFrom");
|
|
32
|
-
expect(decoded.args).toEqual([
|
|
29
|
+
(0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("REVLoans", 11155111));
|
|
30
|
+
(0, vitest_1.expect)(tx.functionName).toEqual("borrowFrom");
|
|
31
|
+
const data = (0, viem_1.encodeFunctionData)(tx);
|
|
32
|
+
const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.revLoansAbi, data });
|
|
33
|
+
(0, vitest_1.expect)(decoded.functionName).toEqual("borrowFrom");
|
|
34
|
+
(0, vitest_1.expect)(decoded.args).toEqual([
|
|
33
35
|
4n,
|
|
34
36
|
token,
|
|
35
37
|
0n, // minBorrowAmount defaults to 0
|
|
@@ -40,30 +42,30 @@ describe("loans", () => {
|
|
|
40
42
|
]);
|
|
41
43
|
});
|
|
42
44
|
});
|
|
43
|
-
describe("buildRepayLoanTx", () => {
|
|
44
|
-
test("defaults to an empty Permit2 allowance and 0 value", () => {
|
|
45
|
-
const tx = buildRepayLoanTx({
|
|
45
|
+
(0, vitest_1.describe)("buildRepayLoanTx", () => {
|
|
46
|
+
(0, vitest_1.test)("defaults to an empty Permit2 allowance and 0 value", () => {
|
|
47
|
+
const tx = (0, loans_js_1.buildRepayLoanTx)({
|
|
46
48
|
chainId: 11155111,
|
|
47
49
|
loanId: 7n,
|
|
48
50
|
maxRepayBorrowAmount: 1000n,
|
|
49
51
|
collateralCountToReturn: 5n,
|
|
50
52
|
beneficiary,
|
|
51
53
|
});
|
|
52
|
-
expect(tx.value).toEqual(0n);
|
|
53
|
-
expect(tx.args[4]).toEqual(EMPTY_SINGLE_ALLOWANCE);
|
|
54
|
-
const data = encodeFunctionData(tx);
|
|
55
|
-
const decoded = decodeFunctionData({ abi: revLoansAbi, data });
|
|
56
|
-
expect(decoded.functionName).toEqual("repayLoan");
|
|
57
|
-
expect(decoded.args).toEqual([
|
|
54
|
+
(0, vitest_1.expect)(tx.value).toEqual(0n);
|
|
55
|
+
(0, vitest_1.expect)(tx.args[4]).toEqual(loans_js_1.EMPTY_SINGLE_ALLOWANCE);
|
|
56
|
+
const data = (0, viem_1.encodeFunctionData)(tx);
|
|
57
|
+
const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.revLoansAbi, data });
|
|
58
|
+
(0, vitest_1.expect)(decoded.functionName).toEqual("repayLoan");
|
|
59
|
+
(0, vitest_1.expect)(decoded.args).toEqual([
|
|
58
60
|
7n,
|
|
59
61
|
1000n,
|
|
60
62
|
5n,
|
|
61
63
|
beneficiary,
|
|
62
|
-
EMPTY_SINGLE_ALLOWANCE,
|
|
64
|
+
loans_js_1.EMPTY_SINGLE_ALLOWANCE,
|
|
63
65
|
]);
|
|
64
66
|
});
|
|
65
|
-
test("passes a native-token repayment value through", () => {
|
|
66
|
-
const tx = buildRepayLoanTx({
|
|
67
|
+
(0, vitest_1.test)("passes a native-token repayment value through", () => {
|
|
68
|
+
const tx = (0, loans_js_1.buildRepayLoanTx)({
|
|
67
69
|
chainId: 1,
|
|
68
70
|
loanId: 7n,
|
|
69
71
|
maxRepayBorrowAmount: 1000n,
|
|
@@ -71,13 +73,13 @@ describe("loans", () => {
|
|
|
71
73
|
beneficiary,
|
|
72
74
|
value: 1000n,
|
|
73
75
|
});
|
|
74
|
-
expect(tx.value).toEqual(1000n);
|
|
75
|
-
expect(() => encodeFunctionData(tx)).not.toThrow();
|
|
76
|
+
(0, vitest_1.expect)(tx.value).toEqual(1000n);
|
|
77
|
+
(0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(tx)).not.toThrow();
|
|
76
78
|
});
|
|
77
79
|
});
|
|
78
|
-
describe("buildReallocateCollateralTx", () => {
|
|
79
|
-
test("encodes reallocateCollateralFromLoan", () => {
|
|
80
|
-
const tx = buildReallocateCollateralTx({
|
|
80
|
+
(0, vitest_1.describe)("buildReallocateCollateralTx", () => {
|
|
81
|
+
(0, vitest_1.test)("encodes reallocateCollateralFromLoan", () => {
|
|
82
|
+
const tx = (0, loans_js_1.buildReallocateCollateralTx)({
|
|
81
83
|
chainId: 11155111,
|
|
82
84
|
loanId: 7n,
|
|
83
85
|
collateralCountToTransfer: 3n,
|
|
@@ -86,11 +88,11 @@ describe("loans", () => {
|
|
|
86
88
|
beneficiary,
|
|
87
89
|
prepaidFeePercent: 50n,
|
|
88
90
|
});
|
|
89
|
-
expect(tx.address).toEqual(v6Address("REVLoans", 11155111));
|
|
90
|
-
const data = encodeFunctionData(tx);
|
|
91
|
-
const decoded = decodeFunctionData({ abi: revLoansAbi, data });
|
|
92
|
-
expect(decoded.functionName).toEqual("reallocateCollateralFromLoan");
|
|
93
|
-
expect(decoded.args).toEqual([
|
|
91
|
+
(0, vitest_1.expect)(tx.address).toEqual((0, types_js_1.v6Address)("REVLoans", 11155111));
|
|
92
|
+
const data = (0, viem_1.encodeFunctionData)(tx);
|
|
93
|
+
const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.revLoansAbi, data });
|
|
94
|
+
(0, vitest_1.expect)(decoded.functionName).toEqual("reallocateCollateralFromLoan");
|
|
95
|
+
(0, vitest_1.expect)(decoded.args).toEqual([
|
|
94
96
|
7n,
|
|
95
97
|
3n,
|
|
96
98
|
token,
|
|
@@ -101,23 +103,23 @@ describe("loans", () => {
|
|
|
101
103
|
]);
|
|
102
104
|
});
|
|
103
105
|
});
|
|
104
|
-
describe("getBorrowableAmount", () => {
|
|
105
|
-
test("returns named fields from borrowableAmountFrom", async () => {
|
|
106
|
-
const readContract = vi.fn().mockResolvedValue([111n, 222n]);
|
|
106
|
+
(0, vitest_1.describe)("getBorrowableAmount", () => {
|
|
107
|
+
(0, vitest_1.test)("returns named fields from borrowableAmountFrom", async () => {
|
|
108
|
+
const readContract = vitest_1.vi.fn().mockResolvedValue([111n, 222n]);
|
|
107
109
|
const client = { readContract };
|
|
108
|
-
const result = await getBorrowableAmount(client, {
|
|
110
|
+
const result = await (0, loans_js_1.getBorrowableAmount)(client, {
|
|
109
111
|
chainId: 11155111,
|
|
110
112
|
revnetId: 4n,
|
|
111
113
|
collateralCount: 100n,
|
|
112
114
|
decimals: 18n,
|
|
113
115
|
currency: 1n,
|
|
114
116
|
});
|
|
115
|
-
expect(readContract).toHaveBeenCalledWith(expect.objectContaining({
|
|
116
|
-
address: v6Address("REVLoans", 11155111),
|
|
117
|
+
(0, vitest_1.expect)(readContract).toHaveBeenCalledWith(vitest_1.expect.objectContaining({
|
|
118
|
+
address: (0, types_js_1.v6Address)("REVLoans", 11155111),
|
|
117
119
|
functionName: "borrowableAmountFrom",
|
|
118
120
|
args: [4n, 100n, 18n, 1n],
|
|
119
121
|
}));
|
|
120
|
-
expect(result).toEqual({
|
|
122
|
+
(0, vitest_1.expect)(result).toEqual({
|
|
121
123
|
borrowableNow: 111n,
|
|
122
124
|
borrowableCapacity: 222n,
|
|
123
125
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loans.test.js","sourceRoot":"","sources":["../../../src/v6/loans.test.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"loans.test.js","sourceRoot":"","sources":["../../../src/v6/loans.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address, ContractFunctionArgs, Hex } from "viem";
|
|
2
2
|
import { jbOmnichainDeployerAbi } from "../generated/juicebox.js";
|
|
3
3
|
import { JBChainId } from "../types.js";
|
|
4
|
-
import { MappableAsset } from "../utils/deploy.js";
|
|
4
|
+
import { JBSuckerBridge, MappableAsset } from "../utils/deploy.js";
|
|
5
5
|
import { JBTerminalConfig } from "./launch.js";
|
|
6
6
|
import { JBRulesetConfig } from "./rulesets.js";
|
|
7
7
|
type OmnichainLaunchArgs = ContractFunctionArgs<typeof jbOmnichainDeployerAbi, "payable", "launchProjectFor">;
|
|
@@ -45,6 +45,10 @@ export type JBSuckerDeploymentConfig = OmnichainLaunchArgs6[5];
|
|
|
45
45
|
* `chainId`); sucker deployer configs are built for every other chain.
|
|
46
46
|
* @param args.assets The assets to bridge between chains. Defaults to the
|
|
47
47
|
* native token only.
|
|
48
|
+
* @param args.bridge The bridge infrastructure the suckers use: "ccip" (any
|
|
49
|
+
* chain pair, any asset — the default), "native" (OP/Base/Arbitrum standard
|
|
50
|
+
* bridges: Ethereum<->L2 pairs and the native token only), or "both" (a
|
|
51
|
+
* native AND a CCIP sucker per pair where both exist, for redundancy).
|
|
48
52
|
* @param args.salt The shared salt (use the same value on every chain).
|
|
49
53
|
* @param args.deploy721Config Optional tiered 721 hook to deploy with the
|
|
50
54
|
* project (uses the 7-arg overload when given).
|
|
@@ -62,6 +66,7 @@ export declare function buildOmnichainLaunchProjectTx(args: {
|
|
|
62
66
|
creationFee: bigint;
|
|
63
67
|
salt: Hex;
|
|
64
68
|
assets?: MappableAsset[];
|
|
69
|
+
bridge?: JBSuckerBridge;
|
|
65
70
|
deploy721Config?: JBDeploy721TiersHookConfig;
|
|
66
71
|
}): {
|
|
67
72
|
chainId: 1 | 10 | 11155111 | 11155420 | 421614 | 84532 | 42161 | 8453;
|