@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 juicebox_js_1 = require("../generated/juicebox.js");
|
|
7
|
+
const launch_js_1 = require("./launch.js");
|
|
8
|
+
const rulesets_js_1 = require("./rulesets.js");
|
|
9
|
+
const types_js_1 = require("./types.js");
|
|
8
10
|
const RULESET = {
|
|
9
11
|
cycleNumber: 1,
|
|
10
12
|
id: 1_700_000_000,
|
|
@@ -26,79 +28,79 @@ function stubClient(returnValue, calls = []) {
|
|
|
26
28
|
};
|
|
27
29
|
return { client, calls };
|
|
28
30
|
}
|
|
29
|
-
describe("buildQueueRulesetsTx", () => {
|
|
30
|
-
test("encodes against the controller ABI", () => {
|
|
31
|
-
const request = buildQueueRulesetsTx({
|
|
32
|
-
chainId: sepolia.id,
|
|
31
|
+
(0, vitest_1.describe)("buildQueueRulesetsTx", () => {
|
|
32
|
+
(0, vitest_1.test)("encodes against the controller ABI", () => {
|
|
33
|
+
const request = (0, rulesets_js_1.buildQueueRulesetsTx)({
|
|
34
|
+
chainId: chains_1.sepolia.id,
|
|
33
35
|
projectId: 7n,
|
|
34
|
-
rulesetConfigurations: [buildRulesetConfiguration({ duration: 604_800 })],
|
|
36
|
+
rulesetConfigurations: [(0, launch_js_1.buildRulesetConfiguration)({ duration: 604_800 })],
|
|
35
37
|
memo: "next cycle",
|
|
36
38
|
});
|
|
37
|
-
expect(request.address).toBe(v6Address("JBController", sepolia.id));
|
|
38
|
-
expect(request.chainId).toBe(sepolia.id);
|
|
39
|
-
const data = encodeFunctionData(request);
|
|
40
|
-
const decoded = decodeFunctionData({ abi: jbControllerAbi, data });
|
|
41
|
-
expect(decoded.functionName).toBe("queueRulesetsOf");
|
|
42
|
-
expect(decoded.args[0]).toBe(7n);
|
|
43
|
-
expect(decoded.args[2]).toBe("next cycle");
|
|
39
|
+
(0, vitest_1.expect)(request.address).toBe((0, types_js_1.v6Address)("JBController", chains_1.sepolia.id));
|
|
40
|
+
(0, vitest_1.expect)(request.chainId).toBe(chains_1.sepolia.id);
|
|
41
|
+
const data = (0, viem_1.encodeFunctionData)(request);
|
|
42
|
+
const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.jbControllerAbi, data });
|
|
43
|
+
(0, vitest_1.expect)(decoded.functionName).toBe("queueRulesetsOf");
|
|
44
|
+
(0, vitest_1.expect)(decoded.args[0]).toBe(7n);
|
|
45
|
+
(0, vitest_1.expect)(decoded.args[2]).toBe("next cycle");
|
|
44
46
|
});
|
|
45
|
-
test("defaults the memo to an empty string", () => {
|
|
46
|
-
const request = buildQueueRulesetsTx({
|
|
47
|
-
chainId: sepolia.id,
|
|
47
|
+
(0, vitest_1.test)("defaults the memo to an empty string", () => {
|
|
48
|
+
const request = (0, rulesets_js_1.buildQueueRulesetsTx)({
|
|
49
|
+
chainId: chains_1.sepolia.id,
|
|
48
50
|
projectId: 7n,
|
|
49
51
|
rulesetConfigurations: [],
|
|
50
52
|
});
|
|
51
|
-
expect(request.args[2]).toBe("");
|
|
53
|
+
(0, vitest_1.expect)(request.args[2]).toBe("");
|
|
52
54
|
});
|
|
53
55
|
});
|
|
54
|
-
describe("ruleset reads", () => {
|
|
55
|
-
test("getCurrentRuleset returns named ruleset + metadata", async () => {
|
|
56
|
-
const metadata = buildRulesetMetadata();
|
|
56
|
+
(0, vitest_1.describe)("ruleset reads", () => {
|
|
57
|
+
(0, vitest_1.test)("getCurrentRuleset returns named ruleset + metadata", async () => {
|
|
58
|
+
const metadata = (0, launch_js_1.buildRulesetMetadata)();
|
|
57
59
|
const { client, calls } = stubClient([RULESET, metadata]);
|
|
58
|
-
const result = await getCurrentRuleset(client, {
|
|
59
|
-
chainId: sepolia.id,
|
|
60
|
+
const result = await (0, rulesets_js_1.getCurrentRuleset)(client, {
|
|
61
|
+
chainId: chains_1.sepolia.id,
|
|
60
62
|
projectId: 3n,
|
|
61
63
|
});
|
|
62
|
-
expect(result.ruleset).toEqual(RULESET);
|
|
63
|
-
expect(result.metadata).toEqual(metadata);
|
|
64
|
-
expect(calls[0]).toMatchObject({
|
|
65
|
-
address: v6Address("JBController", sepolia.id),
|
|
64
|
+
(0, vitest_1.expect)(result.ruleset).toEqual(RULESET);
|
|
65
|
+
(0, vitest_1.expect)(result.metadata).toEqual(metadata);
|
|
66
|
+
(0, vitest_1.expect)(calls[0]).toMatchObject({
|
|
67
|
+
address: (0, types_js_1.v6Address)("JBController", chains_1.sepolia.id),
|
|
66
68
|
functionName: "currentRulesetOf",
|
|
67
69
|
args: [3n],
|
|
68
70
|
});
|
|
69
71
|
});
|
|
70
|
-
test("getUpcomingRuleset reads upcomingRulesetOf", async () => {
|
|
71
|
-
const metadata = buildRulesetMetadata();
|
|
72
|
+
(0, vitest_1.test)("getUpcomingRuleset reads upcomingRulesetOf", async () => {
|
|
73
|
+
const metadata = (0, launch_js_1.buildRulesetMetadata)();
|
|
72
74
|
const { client, calls } = stubClient([RULESET, metadata]);
|
|
73
|
-
const result = await getUpcomingRuleset(client, {
|
|
74
|
-
chainId: sepolia.id,
|
|
75
|
+
const result = await (0, rulesets_js_1.getUpcomingRuleset)(client, {
|
|
76
|
+
chainId: chains_1.sepolia.id,
|
|
75
77
|
projectId: 3n,
|
|
76
78
|
});
|
|
77
|
-
expect(result.ruleset).toEqual(RULESET);
|
|
78
|
-
expect(calls[0]).toMatchObject({ functionName: "upcomingRulesetOf" });
|
|
79
|
+
(0, vitest_1.expect)(result.ruleset).toEqual(RULESET);
|
|
80
|
+
(0, vitest_1.expect)(calls[0]).toMatchObject({ functionName: "upcomingRulesetOf" });
|
|
79
81
|
});
|
|
80
|
-
test("getAllRulesets pages with sane defaults", async () => {
|
|
81
|
-
const page = [{ ruleset: RULESET, metadata: buildRulesetMetadata() }];
|
|
82
|
+
(0, vitest_1.test)("getAllRulesets pages with sane defaults", async () => {
|
|
83
|
+
const page = [{ ruleset: RULESET, metadata: (0, launch_js_1.buildRulesetMetadata)() }];
|
|
82
84
|
const { client, calls } = stubClient(page);
|
|
83
|
-
const result = await getAllRulesets(client, {
|
|
84
|
-
chainId: sepolia.id,
|
|
85
|
+
const result = await (0, rulesets_js_1.getAllRulesets)(client, {
|
|
86
|
+
chainId: chains_1.sepolia.id,
|
|
85
87
|
projectId: 3n,
|
|
86
88
|
});
|
|
87
|
-
expect(result).toEqual(page);
|
|
88
|
-
expect(calls[0]).toMatchObject({
|
|
89
|
+
(0, vitest_1.expect)(result).toEqual(page);
|
|
90
|
+
(0, vitest_1.expect)(calls[0]).toMatchObject({
|
|
89
91
|
functionName: "allRulesetsOf",
|
|
90
92
|
args: [3n, 0n, 50n],
|
|
91
93
|
});
|
|
92
94
|
});
|
|
93
|
-
test("getAllRulesets forwards explicit paging args", async () => {
|
|
95
|
+
(0, vitest_1.test)("getAllRulesets forwards explicit paging args", async () => {
|
|
94
96
|
const { client, calls } = stubClient([]);
|
|
95
|
-
await getAllRulesets(client, {
|
|
96
|
-
chainId: sepolia.id,
|
|
97
|
+
await (0, rulesets_js_1.getAllRulesets)(client, {
|
|
98
|
+
chainId: chains_1.sepolia.id,
|
|
97
99
|
projectId: 3n,
|
|
98
100
|
startingId: 42n,
|
|
99
101
|
size: 5n,
|
|
100
102
|
});
|
|
101
|
-
expect(calls[0]).toMatchObject({ args: [3n, 42n, 5n] });
|
|
103
|
+
(0, vitest_1.expect)(calls[0]).toMatchObject({ args: [3n, 42n, 5n] });
|
|
102
104
|
});
|
|
103
105
|
});
|
|
104
106
|
//# sourceMappingURL=rulesets.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rulesets.test.js","sourceRoot":"","sources":["../../../src/v6/rulesets.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rulesets.test.js","sourceRoot":"","sources":["../../../src/v6/rulesets.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/v6/splits.d.ts
CHANGED
|
@@ -38,8 +38,9 @@ export declare function payoutSplitGroupId(token: Address): bigint;
|
|
|
38
38
|
* corrected here).
|
|
39
39
|
* @returns A new array summing to exactly `SPLITS_TOTAL_PERCENT`. An empty
|
|
40
40
|
* input returns an empty array (an empty group is valid).
|
|
41
|
-
* @throws If a share is negative or non-integer, or if the drift
|
|
42
|
-
*
|
|
41
|
+
* @throws If a share is negative or non-integer, or if the drift from
|
|
42
|
+
* `SPLITS_TOTAL_PERCENT` exceeds one unit per share (the input was not
|
|
43
|
+
* normalized to `SPLITS_TOTAL_PERCENT`).
|
|
43
44
|
*/
|
|
44
45
|
export declare function fillSplitPercents(shares: number[]): number[];
|
|
45
46
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splits.d.ts","sourceRoot":"","sources":["../../../src/v6/splits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAe,MAAM,MAAM,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,KAAK,kBAAkB,GAAG,oBAAoB,CAC5C,OAAO,eAAe,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEzD;AAED
|
|
1
|
+
{"version":3,"file":"splits.d.ts","sourceRoot":"","sources":["../../../src/v6/splits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAe,MAAM,MAAM,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,KAAK,kBAAkB,GAAG,oBAAoB,CAC5C,OAAO,eAAe,EACtB,YAAY,EACZ,kBAAkB,CACnB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD;;;GAGG;AACH,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD;;GAEG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEzD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CA6B5D;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GAAG,OAAO,CASV;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE;IAC1C,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,SAAS,YAAY,EAAE,CAAC;CACtC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQA"}
|
package/dist/cjs/v6/splits.js
CHANGED
|
@@ -1,11 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RESERVED_TOKEN_SPLIT_GROUP_ID = void 0;
|
|
4
|
+
exports.payoutSplitGroupId = payoutSplitGroupId;
|
|
5
|
+
exports.fillSplitPercents = fillSplitPercents;
|
|
6
|
+
exports.buildSplit = buildSplit;
|
|
7
|
+
exports.buildSetSplitGroupsTx = buildSetSplitGroupsTx;
|
|
8
|
+
const viem_1 = require("viem");
|
|
9
|
+
const constants_js_1 = require("../constants.js");
|
|
10
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
11
|
+
const types_js_1 = require("./types.js");
|
|
5
12
|
/**
|
|
6
13
|
* The group id for a project's reserved-token splits.
|
|
7
14
|
*/
|
|
8
|
-
|
|
15
|
+
exports.RESERVED_TOKEN_SPLIT_GROUP_ID = 1n;
|
|
9
16
|
/**
|
|
10
17
|
* The group id for a project's payout splits of the given token:
|
|
11
18
|
* `uint256(uint160(token))`.
|
|
@@ -14,7 +21,7 @@ export const RESERVED_TOKEN_SPLIT_GROUP_ID = 1n;
|
|
|
14
21
|
* project), not the native-token sentinel, or payouts will be looked up
|
|
15
22
|
* under the wrong group.
|
|
16
23
|
*/
|
|
17
|
-
|
|
24
|
+
function payoutSplitGroupId(token) {
|
|
18
25
|
return BigInt(token);
|
|
19
26
|
}
|
|
20
27
|
/**
|
|
@@ -29,10 +36,11 @@ export function payoutSplitGroupId(token) {
|
|
|
29
36
|
* corrected here).
|
|
30
37
|
* @returns A new array summing to exactly `SPLITS_TOTAL_PERCENT`. An empty
|
|
31
38
|
* input returns an empty array (an empty group is valid).
|
|
32
|
-
* @throws If a share is negative or non-integer, or if the drift
|
|
33
|
-
*
|
|
39
|
+
* @throws If a share is negative or non-integer, or if the drift from
|
|
40
|
+
* `SPLITS_TOTAL_PERCENT` exceeds one unit per share (the input was not
|
|
41
|
+
* normalized to `SPLITS_TOTAL_PERCENT`).
|
|
34
42
|
*/
|
|
35
|
-
|
|
43
|
+
function fillSplitPercents(shares) {
|
|
36
44
|
if (shares.length === 0)
|
|
37
45
|
return [];
|
|
38
46
|
for (const share of shares) {
|
|
@@ -42,17 +50,20 @@ export function fillSplitPercents(shares) {
|
|
|
42
50
|
}
|
|
43
51
|
const filled = [...shares];
|
|
44
52
|
const sum = filled.reduce((total, share) => total + share, 0);
|
|
45
|
-
const delta = SPLITS_TOTAL_PERCENT - sum;
|
|
53
|
+
const delta = constants_js_1.SPLITS_TOTAL_PERCENT - sum;
|
|
46
54
|
if (delta === 0)
|
|
47
55
|
return filled;
|
|
56
|
+
// Per-row rounding can drift by at most one unit per share. Anything larger means
|
|
57
|
+
// the input wasn't normalized to SPLITS_TOTAL_PERCENT — silently rewriting it would
|
|
58
|
+
// hand a beneficiary a very different share than intended.
|
|
59
|
+
if (Math.abs(delta) > filled.length) {
|
|
60
|
+
throw new Error(`Split shares sum to ${sum}; expected ~${constants_js_1.SPLITS_TOTAL_PERCENT} (drift larger than rounding error)`);
|
|
61
|
+
}
|
|
48
62
|
let largestIndex = 0;
|
|
49
63
|
for (let i = 1; i < filled.length; i++) {
|
|
50
64
|
if (filled[i] > filled[largestIndex])
|
|
51
65
|
largestIndex = i;
|
|
52
66
|
}
|
|
53
|
-
if (filled[largestIndex] + delta < 0) {
|
|
54
|
-
throw new Error(`Split shares sum to ${sum}, which exceeds SPLITS_TOTAL_PERCENT (${SPLITS_TOTAL_PERCENT}) by more than the largest share`);
|
|
55
|
-
}
|
|
56
67
|
filled[largestIndex] += delta;
|
|
57
68
|
return filled;
|
|
58
69
|
}
|
|
@@ -72,14 +83,14 @@ export function fillSplitPercents(shares) {
|
|
|
72
83
|
* @param args.hook A split hook contract to receive the split. Defaults to
|
|
73
84
|
* the zero address (no hook).
|
|
74
85
|
*/
|
|
75
|
-
|
|
86
|
+
function buildSplit(args) {
|
|
76
87
|
return {
|
|
77
88
|
percent: args.percent,
|
|
78
89
|
projectId: args.projectId ?? 0n,
|
|
79
90
|
beneficiary: args.beneficiary,
|
|
80
91
|
preferAddToBalance: args.preferAddToBalance ?? false,
|
|
81
92
|
lockedUntil: args.lockedUntil ?? 0,
|
|
82
|
-
hook: args.hook ?? zeroAddress,
|
|
93
|
+
hook: args.hook ?? viem_1.zeroAddress,
|
|
83
94
|
};
|
|
84
95
|
}
|
|
85
96
|
/**
|
|
@@ -93,11 +104,11 @@ export function buildSplit(args) {
|
|
|
93
104
|
* @param args.splitGroups Use {@link RESERVED_TOKEN_SPLIT_GROUP_ID} for the
|
|
94
105
|
* reserved-token group and {@link payoutSplitGroupId} for payout groups.
|
|
95
106
|
*/
|
|
96
|
-
|
|
107
|
+
function buildSetSplitGroupsTx(args) {
|
|
97
108
|
return {
|
|
98
109
|
chainId: args.chainId,
|
|
99
|
-
address: v6Address("JBController", args.chainId),
|
|
100
|
-
abi: jbControllerAbi,
|
|
110
|
+
address: (0, types_js_1.v6Address)("JBController", args.chainId),
|
|
111
|
+
abi: juicebox_js_1.jbControllerAbi,
|
|
101
112
|
functionName: "setSplitGroupsOf",
|
|
102
113
|
args: [args.projectId, args.rulesetId, args.splitGroups],
|
|
103
114
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splits.js","sourceRoot":"","sources":["../../../src/v6/splits.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"splits.js","sourceRoot":"","sources":["../../../src/v6/splits.ts"],"names":[],"mappings":";;;AAsCA,gDAEC;AAkBD,8CA6BC;AAkBD,gCAgBC;AAaD,sDAaC;AAnJD,+BAAkE;AAClE,kDAAuD;AACvD,0DAA2D;AAE3D,yCAAuC;AAqBvC;;GAEG;AACU,QAAA,6BAA6B,GAAG,EAAE,CAAC;AAEhD;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,KAAc;IAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,iBAAiB,CAAC,MAAgB;IAChD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YAC1C,MAAM,IAAI,KAAK,CACb,mDAAmD,KAAK,EAAE,CAC3D,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC3B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,mCAAoB,GAAG,GAAG,CAAC;IACzC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IAE/B,kFAAkF;IAClF,oFAAoF;IACpF,2DAA2D;IAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CACb,uBAAuB,GAAG,eAAe,mCAAoB,qCAAqC,CACnG,CAAC;IACJ,CAAC;IAED,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;YAAE,YAAY,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC;IAC9B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,UAAU,CAAC,IAO1B;IACC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,EAAE;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,IAAI,KAAK;QACpD,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC;QAClC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,kBAAW;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,qBAAqB,CAAC,IAKrC;IACC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,IAAA,oBAAS,EAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD,GAAG,EAAE,6BAAe;QACpB,YAAY,EAAE,kBAA2B;QACzC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAU;KAClE,CAAC;AACJ,CAAC"}
|
|
@@ -1,84 +1,88 @@
|
|
|
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 splits_js_1 = require("./splits.js");
|
|
9
|
+
const types_js_1 = require("./types.js");
|
|
8
10
|
const BENEFICIARY = "0x000000000000000000000000000000000000dEaD";
|
|
9
|
-
describe("fillSplitPercents", () => {
|
|
10
|
-
test("returns an empty array for an empty group", () => {
|
|
11
|
-
expect(fillSplitPercents([])).toEqual([]);
|
|
11
|
+
(0, vitest_1.describe)("fillSplitPercents", () => {
|
|
12
|
+
(0, vitest_1.test)("returns an empty array for an empty group", () => {
|
|
13
|
+
(0, vitest_1.expect)((0, splits_js_1.fillSplitPercents)([])).toEqual([]);
|
|
12
14
|
});
|
|
13
|
-
test("leaves an exact group untouched", () => {
|
|
14
|
-
expect(fillSplitPercents([600_000_000, 400_000_000])).toEqual([
|
|
15
|
+
(0, vitest_1.test)("leaves an exact group untouched", () => {
|
|
16
|
+
(0, vitest_1.expect)((0, splits_js_1.fillSplitPercents)([600_000_000, 400_000_000])).toEqual([
|
|
15
17
|
600_000_000, 400_000_000,
|
|
16
18
|
]);
|
|
17
|
-
expect(fillSplitPercents([SPLITS_TOTAL_PERCENT])).toEqual([
|
|
18
|
-
SPLITS_TOTAL_PERCENT,
|
|
19
|
+
(0, vitest_1.expect)((0, splits_js_1.fillSplitPercents)([constants_js_1.SPLITS_TOTAL_PERCENT])).toEqual([
|
|
20
|
+
constants_js_1.SPLITS_TOTAL_PERCENT,
|
|
19
21
|
]);
|
|
20
22
|
});
|
|
21
|
-
test("assigns a positive remainder to the largest share", () => {
|
|
22
|
-
const third = Math.floor(SPLITS_TOTAL_PERCENT / 3);
|
|
23
|
-
const filled = fillSplitPercents([third, third, third]);
|
|
23
|
+
(0, vitest_1.test)("assigns a positive remainder to the largest share", () => {
|
|
24
|
+
const third = Math.floor(constants_js_1.SPLITS_TOTAL_PERCENT / 3);
|
|
25
|
+
const filled = (0, splits_js_1.fillSplitPercents)([third, third, third]);
|
|
24
26
|
// 3 * 333,333,333 = 999,999,999 — one atom short; the first max takes it.
|
|
25
|
-
expect(filled).toEqual([third + 1, third, third]);
|
|
26
|
-
expect(filled.reduce((a, b) => a + b, 0)).toBe(SPLITS_TOTAL_PERCENT);
|
|
27
|
+
(0, vitest_1.expect)(filled).toEqual([third + 1, third, third]);
|
|
28
|
+
(0, vitest_1.expect)(filled.reduce((a, b) => a + b, 0)).toBe(constants_js_1.SPLITS_TOTAL_PERCENT);
|
|
27
29
|
});
|
|
28
|
-
test("assigns the remainder to the largest share, not the last", () => {
|
|
29
|
-
const filled = fillSplitPercents([100_000_000, 899_999_999]);
|
|
30
|
-
expect(filled).toEqual([100_000_000, 900_000_000]);
|
|
30
|
+
(0, vitest_1.test)("assigns the remainder to the largest share, not the last", () => {
|
|
31
|
+
const filled = (0, splits_js_1.fillSplitPercents)([100_000_000, 899_999_999]);
|
|
32
|
+
(0, vitest_1.expect)(filled).toEqual([100_000_000, 900_000_000]);
|
|
31
33
|
});
|
|
32
|
-
test("shaves a negative remainder off the largest share", () => {
|
|
33
|
-
const filled = fillSplitPercents([500_000_000, 500_000_001]);
|
|
34
|
-
expect(filled).toEqual([500_000_000, 500_000_000]);
|
|
35
|
-
expect(filled.reduce((a, b) => a + b, 0)).toBe(SPLITS_TOTAL_PERCENT);
|
|
34
|
+
(0, vitest_1.test)("shaves a negative remainder off the largest share", () => {
|
|
35
|
+
const filled = (0, splits_js_1.fillSplitPercents)([500_000_000, 500_000_001]);
|
|
36
|
+
(0, vitest_1.expect)(filled).toEqual([500_000_000, 500_000_000]);
|
|
37
|
+
(0, vitest_1.expect)(filled.reduce((a, b) => a + b, 0)).toBe(constants_js_1.SPLITS_TOTAL_PERCENT);
|
|
36
38
|
});
|
|
37
|
-
test("uneven 7-way split fills to exactly 1e9", () => {
|
|
38
|
-
const seventh = Math.floor(SPLITS_TOTAL_PERCENT / 7);
|
|
39
|
+
(0, vitest_1.test)("uneven 7-way split fills to exactly 1e9", () => {
|
|
40
|
+
const seventh = Math.floor(constants_js_1.SPLITS_TOTAL_PERCENT / 7);
|
|
39
41
|
const shares = Array(7).fill(seventh);
|
|
40
|
-
const filled = fillSplitPercents(shares);
|
|
41
|
-
expect(filled.reduce((a, b) => a + b, 0)).toBe(SPLITS_TOTAL_PERCENT);
|
|
42
|
+
const filled = (0, splits_js_1.fillSplitPercents)(shares);
|
|
43
|
+
(0, vitest_1.expect)(filled.reduce((a, b) => a + b, 0)).toBe(constants_js_1.SPLITS_TOTAL_PERCENT);
|
|
42
44
|
// 1e9 - 7 * 142,857,142 = 6 atoms on the first max.
|
|
43
|
-
expect(filled[0]).toBe(seventh + 6);
|
|
44
|
-
expect(filled.slice(1)).toEqual(Array(6).fill(seventh));
|
|
45
|
+
(0, vitest_1.expect)(filled[0]).toBe(seventh + 6);
|
|
46
|
+
(0, vitest_1.expect)(filled.slice(1)).toEqual(Array(6).fill(seventh));
|
|
45
47
|
});
|
|
46
|
-
test("
|
|
47
|
-
expect(fillSplitPercents([0])).
|
|
48
|
+
(0, vitest_1.test)("throws when the drift exceeds rounding error", () => {
|
|
49
|
+
(0, vitest_1.expect)(() => (0, splits_js_1.fillSplitPercents)([0])).toThrow(/drift larger than rounding/);
|
|
50
|
+
(0, vitest_1.expect)(() => (0, splits_js_1.fillSplitPercents)([50, 50])).toThrow(/drift larger than rounding/);
|
|
51
|
+
(0, vitest_1.expect)(() => (0, splits_js_1.fillSplitPercents)([0, 0, 0])).toThrow(/drift larger than rounding/);
|
|
48
52
|
});
|
|
49
|
-
test("does not mutate the input", () => {
|
|
50
|
-
const shares = [
|
|
51
|
-
fillSplitPercents(shares);
|
|
52
|
-
expect(shares).toEqual([
|
|
53
|
+
(0, vitest_1.test)("does not mutate the input", () => {
|
|
54
|
+
const shares = [499999999, 499999999, 1];
|
|
55
|
+
(0, splits_js_1.fillSplitPercents)(shares);
|
|
56
|
+
(0, vitest_1.expect)(shares).toEqual([499999999, 499999999, 1]);
|
|
53
57
|
});
|
|
54
|
-
test("throws on negative or non-integer shares", () => {
|
|
55
|
-
expect(() => fillSplitPercents([-1, SPLITS_TOTAL_PERCENT])).toThrow(/non-negative integers/);
|
|
56
|
-
expect(() => fillSplitPercents([0.5, SPLITS_TOTAL_PERCENT])).toThrow(/non-negative integers/);
|
|
58
|
+
(0, vitest_1.test)("throws on negative or non-integer shares", () => {
|
|
59
|
+
(0, vitest_1.expect)(() => (0, splits_js_1.fillSplitPercents)([-1, constants_js_1.SPLITS_TOTAL_PERCENT])).toThrow(/non-negative integers/);
|
|
60
|
+
(0, vitest_1.expect)(() => (0, splits_js_1.fillSplitPercents)([0.5, constants_js_1.SPLITS_TOTAL_PERCENT])).toThrow(/non-negative integers/);
|
|
57
61
|
});
|
|
58
|
-
test("repairs a small oversum even above the total", () => {
|
|
62
|
+
(0, vitest_1.test)("repairs a small oversum even above the total", () => {
|
|
59
63
|
// sum = 1e9 + 2; shaving 2 off the largest still leaves it non-negative.
|
|
60
|
-
const filled = fillSplitPercents([SPLITS_TOTAL_PERCENT + 1, 1]);
|
|
61
|
-
expect(filled).toEqual([SPLITS_TOTAL_PERCENT - 1, 1]);
|
|
62
|
-
expect(filled.reduce((a, b) => a + b, 0)).toBe(SPLITS_TOTAL_PERCENT);
|
|
64
|
+
const filled = (0, splits_js_1.fillSplitPercents)([constants_js_1.SPLITS_TOTAL_PERCENT + 1, 1]);
|
|
65
|
+
(0, vitest_1.expect)(filled).toEqual([constants_js_1.SPLITS_TOTAL_PERCENT - 1, 1]);
|
|
66
|
+
(0, vitest_1.expect)(filled.reduce((a, b) => a + b, 0)).toBe(constants_js_1.SPLITS_TOTAL_PERCENT);
|
|
63
67
|
});
|
|
64
|
-
test("throws when the group oversums beyond repair", () => {
|
|
65
|
-
// sum = 1.8e9; the -8e8 delta exceeds
|
|
66
|
-
expect(() => fillSplitPercents([600_000_000, 600_000_000, 600_000_000])).toThrow(/
|
|
68
|
+
(0, vitest_1.test)("throws when the group oversums beyond repair", () => {
|
|
69
|
+
// sum = 1.8e9; the -8e8 delta far exceeds rounding error.
|
|
70
|
+
(0, vitest_1.expect)(() => (0, splits_js_1.fillSplitPercents)([600_000_000, 600_000_000, 600_000_000])).toThrow(/drift larger than rounding/);
|
|
67
71
|
});
|
|
68
72
|
});
|
|
69
|
-
describe("split group ids", () => {
|
|
70
|
-
test("reserved-token group id is 1n", () => {
|
|
71
|
-
expect(RESERVED_TOKEN_SPLIT_GROUP_ID).toBe(1n);
|
|
73
|
+
(0, vitest_1.describe)("split group ids", () => {
|
|
74
|
+
(0, vitest_1.test)("reserved-token group id is 1n", () => {
|
|
75
|
+
(0, vitest_1.expect)(splits_js_1.RESERVED_TOKEN_SPLIT_GROUP_ID).toBe(1n);
|
|
72
76
|
});
|
|
73
|
-
test("payout group id is uint256(uint160(token))", () => {
|
|
74
|
-
expect(payoutSplitGroupId(NATIVE_TOKEN)).toBe(61166n);
|
|
75
|
-
expect(payoutSplitGroupId("0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984")).toBe(BigInt("0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"));
|
|
77
|
+
(0, vitest_1.test)("payout group id is uint256(uint160(token))", () => {
|
|
78
|
+
(0, vitest_1.expect)((0, splits_js_1.payoutSplitGroupId)(constants_js_1.NATIVE_TOKEN)).toBe(61166n);
|
|
79
|
+
(0, vitest_1.expect)((0, splits_js_1.payoutSplitGroupId)("0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984")).toBe(BigInt("0x1f9840a85d5af5bf1d1762f925bdaddc4201f984"));
|
|
76
80
|
});
|
|
77
81
|
});
|
|
78
|
-
describe("buildSplit", () => {
|
|
79
|
-
test("applies safe defaults", () => {
|
|
80
|
-
const split = buildSplit({ beneficiary: BENEFICIARY, percent: 1 });
|
|
81
|
-
expect(split).toEqual({
|
|
82
|
+
(0, vitest_1.describe)("buildSplit", () => {
|
|
83
|
+
(0, vitest_1.test)("applies safe defaults", () => {
|
|
84
|
+
const split = (0, splits_js_1.buildSplit)({ beneficiary: BENEFICIARY, percent: 1 });
|
|
85
|
+
(0, vitest_1.expect)(split).toEqual({
|
|
82
86
|
percent: 1,
|
|
83
87
|
projectId: 0n,
|
|
84
88
|
beneficiary: BENEFICIARY,
|
|
@@ -87,8 +91,8 @@ describe("buildSplit", () => {
|
|
|
87
91
|
hook: "0x0000000000000000000000000000000000000000",
|
|
88
92
|
});
|
|
89
93
|
});
|
|
90
|
-
test("honors overrides", () => {
|
|
91
|
-
const split = buildSplit({
|
|
94
|
+
(0, vitest_1.test)("honors overrides", () => {
|
|
95
|
+
const split = (0, splits_js_1.buildSplit)({
|
|
92
96
|
beneficiary: BENEFICIARY,
|
|
93
97
|
percent: 5,
|
|
94
98
|
projectId: 3n,
|
|
@@ -96,36 +100,36 @@ describe("buildSplit", () => {
|
|
|
96
100
|
lockedUntil: 1_750_000_000,
|
|
97
101
|
hook: BENEFICIARY,
|
|
98
102
|
});
|
|
99
|
-
expect(split.projectId).toBe(3n);
|
|
100
|
-
expect(split.preferAddToBalance).toBe(true);
|
|
101
|
-
expect(split.lockedUntil).toBe(1_750_000_000);
|
|
102
|
-
expect(split.hook).toBe(BENEFICIARY);
|
|
103
|
+
(0, vitest_1.expect)(split.projectId).toBe(3n);
|
|
104
|
+
(0, vitest_1.expect)(split.preferAddToBalance).toBe(true);
|
|
105
|
+
(0, vitest_1.expect)(split.lockedUntil).toBe(1_750_000_000);
|
|
106
|
+
(0, vitest_1.expect)(split.hook).toBe(BENEFICIARY);
|
|
103
107
|
});
|
|
104
108
|
});
|
|
105
|
-
describe("buildSetSplitGroupsTx", () => {
|
|
106
|
-
test("encodes against the controller ABI", () => {
|
|
107
|
-
const percents = fillSplitPercents([
|
|
108
|
-
Math.floor(SPLITS_TOTAL_PERCENT * 0.7),
|
|
109
|
-
Math.floor(SPLITS_TOTAL_PERCENT * 0.3),
|
|
109
|
+
(0, vitest_1.describe)("buildSetSplitGroupsTx", () => {
|
|
110
|
+
(0, vitest_1.test)("encodes against the controller ABI", () => {
|
|
111
|
+
const percents = (0, splits_js_1.fillSplitPercents)([
|
|
112
|
+
Math.floor(constants_js_1.SPLITS_TOTAL_PERCENT * 0.7),
|
|
113
|
+
Math.floor(constants_js_1.SPLITS_TOTAL_PERCENT * 0.3),
|
|
110
114
|
]);
|
|
111
|
-
const request = buildSetSplitGroupsTx({
|
|
112
|
-
chainId: sepolia.id,
|
|
115
|
+
const request = (0, splits_js_1.buildSetSplitGroupsTx)({
|
|
116
|
+
chainId: chains_1.sepolia.id,
|
|
113
117
|
projectId: 5n,
|
|
114
118
|
rulesetId: 1700000000n,
|
|
115
119
|
splitGroups: [
|
|
116
120
|
{
|
|
117
|
-
groupId: RESERVED_TOKEN_SPLIT_GROUP_ID,
|
|
118
|
-
splits: percents.map((percent) => buildSplit({ beneficiary: BENEFICIARY, percent })),
|
|
121
|
+
groupId: splits_js_1.RESERVED_TOKEN_SPLIT_GROUP_ID,
|
|
122
|
+
splits: percents.map((percent) => (0, splits_js_1.buildSplit)({ beneficiary: BENEFICIARY, percent })),
|
|
119
123
|
},
|
|
120
124
|
],
|
|
121
125
|
});
|
|
122
|
-
expect(request.address).toBe(v6Address("JBController", sepolia.id));
|
|
123
|
-
expect(request.chainId).toBe(sepolia.id);
|
|
124
|
-
expect(request.functionName).toBe("setSplitGroupsOf");
|
|
125
|
-
const data = encodeFunctionData(request);
|
|
126
|
-
const decoded = decodeFunctionData({ abi: jbControllerAbi, data });
|
|
127
|
-
expect(decoded.functionName).toBe("setSplitGroupsOf");
|
|
128
|
-
expect(decoded.args[0]).toBe(5n);
|
|
126
|
+
(0, vitest_1.expect)(request.address).toBe((0, types_js_1.v6Address)("JBController", chains_1.sepolia.id));
|
|
127
|
+
(0, vitest_1.expect)(request.chainId).toBe(chains_1.sepolia.id);
|
|
128
|
+
(0, vitest_1.expect)(request.functionName).toBe("setSplitGroupsOf");
|
|
129
|
+
const data = (0, viem_1.encodeFunctionData)(request);
|
|
130
|
+
const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.jbControllerAbi, data });
|
|
131
|
+
(0, vitest_1.expect)(decoded.functionName).toBe("setSplitGroupsOf");
|
|
132
|
+
(0, vitest_1.expect)(decoded.args[0]).toBe(5n);
|
|
129
133
|
});
|
|
130
134
|
});
|
|
131
135
|
//# sourceMappingURL=splits.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"splits.test.js","sourceRoot":"","sources":["../../../src/v6/splits.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"splits.test.js","sourceRoot":"","sources":["../../../src/v6/splits.test.ts"],"names":[],"mappings":"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"}
|