@bananapus/nana-sdk-core 1.1.0 → 1.1.1
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.js +89 -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.js +94 -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.js +17 -13
- package/dist/cjs/utils/deploy.js.map +1 -1
- package/dist/cjs/utils/deploy.test.js +15 -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.js +16 -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/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/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
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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"}
|
package/dist/cjs/v6/omnichain.js
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildOmnichainLaunchProjectTx = buildOmnichainLaunchProjectTx;
|
|
4
|
+
exports.buildOmnichainQueueRulesetsTx = buildOmnichainQueueRulesetsTx;
|
|
5
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
6
|
+
const deploy_js_1 = require("../utils/deploy.js");
|
|
7
|
+
const types_js_1 = require("./types.js");
|
|
4
8
|
/**
|
|
5
9
|
* Build a `JBOmnichainDeployer.launchProjectFor` transaction request creating
|
|
6
10
|
* a new project wired for cross-chain operation (suckers + omnichain ruleset
|
|
@@ -33,18 +37,18 @@ import { v6Address } from "./types.js";
|
|
|
33
37
|
* @param args.creationFee The exact fee from `JBProjects.creationFee()` on
|
|
34
38
|
* this chain.
|
|
35
39
|
*/
|
|
36
|
-
|
|
40
|
+
function buildOmnichainLaunchProjectTx(args) {
|
|
37
41
|
// parseSuckerDeployerConfig's return type is a v5/v6 union that TS cannot
|
|
38
42
|
// narrow on the `version` option; passing `version: 6` guarantees the v6
|
|
39
43
|
// shape at runtime.
|
|
40
|
-
const suckerDeploymentConfiguration = parseSuckerDeployerConfig(args.chainId, args.chainIds, args.assets ?? [MappableAsset.NATIVE], { salt: args.salt, version: 6 });
|
|
41
|
-
const address = v6Address("JBOmnichainDeployer", args.chainId);
|
|
44
|
+
const suckerDeploymentConfiguration = (0, deploy_js_1.parseSuckerDeployerConfig)(args.chainId, args.chainIds, args.assets ?? [deploy_js_1.MappableAsset.NATIVE], { salt: args.salt, version: 6 });
|
|
45
|
+
const address = (0, types_js_1.v6Address)("JBOmnichainDeployer", args.chainId);
|
|
42
46
|
const memo = args.memo ?? "";
|
|
43
47
|
if (args.deploy721Config) {
|
|
44
48
|
return {
|
|
45
49
|
chainId: args.chainId,
|
|
46
50
|
address,
|
|
47
|
-
abi: jbOmnichainDeployerAbi,
|
|
51
|
+
abi: juicebox_js_1.jbOmnichainDeployerAbi,
|
|
48
52
|
functionName: "launchProjectFor",
|
|
49
53
|
args: [
|
|
50
54
|
args.owner,
|
|
@@ -61,7 +65,7 @@ export function buildOmnichainLaunchProjectTx(args) {
|
|
|
61
65
|
return {
|
|
62
66
|
chainId: args.chainId,
|
|
63
67
|
address,
|
|
64
|
-
abi: jbOmnichainDeployerAbi,
|
|
68
|
+
abi: juicebox_js_1.jbOmnichainDeployerAbi,
|
|
65
69
|
functionName: "launchProjectFor",
|
|
66
70
|
args: [
|
|
67
71
|
args.owner,
|
|
@@ -88,14 +92,14 @@ export function buildOmnichainLaunchProjectTx(args) {
|
|
|
88
92
|
* as the queued ruleset's data hook) alongside the queue — uses the 4-arg
|
|
89
93
|
* overload when given; keep it identical across chains.
|
|
90
94
|
*/
|
|
91
|
-
|
|
92
|
-
const address = v6Address("JBOmnichainDeployer", args.chainId);
|
|
95
|
+
function buildOmnichainQueueRulesetsTx(args) {
|
|
96
|
+
const address = (0, types_js_1.v6Address)("JBOmnichainDeployer", args.chainId);
|
|
93
97
|
const memo = args.memo ?? "";
|
|
94
98
|
if (args.deploy721Config) {
|
|
95
99
|
return {
|
|
96
100
|
chainId: args.chainId,
|
|
97
101
|
address,
|
|
98
|
-
abi: jbOmnichainDeployerAbi,
|
|
102
|
+
abi: juicebox_js_1.jbOmnichainDeployerAbi,
|
|
99
103
|
functionName: "queueRulesetsOf",
|
|
100
104
|
args: [
|
|
101
105
|
args.projectId,
|
|
@@ -108,7 +112,7 @@ export function buildOmnichainQueueRulesetsTx(args) {
|
|
|
108
112
|
return {
|
|
109
113
|
chainId: args.chainId,
|
|
110
114
|
address,
|
|
111
|
-
abi: jbOmnichainDeployerAbi,
|
|
115
|
+
abi: juicebox_js_1.jbOmnichainDeployerAbi,
|
|
112
116
|
functionName: "queueRulesetsOf",
|
|
113
117
|
args: [args.projectId, args.rulesetConfigurations, memo],
|
|
114
118
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omnichain.js","sourceRoot":"","sources":["../../../src/v6/omnichain.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"omnichain.js","sourceRoot":"","sources":["../../../src/v6/omnichain.ts"],"names":[],"mappings":";;AAmEA,sEA2DC;AAgBD,sEA+BC;AA5KD,0DAAkE;AAElE,kDAA8E;AAG9E,yCAAuC;AA6BvC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,SAAgB,6BAA6B,CAAC,IAY7C;IACC,0EAA0E;IAC1E,yEAAyE;IACzE,oBAAoB;IACpB,MAAM,6BAA6B,GAAG,IAAA,qCAAyB,EAC7D,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,MAAM,IAAI,CAAC,yBAAa,CAAC,MAAM,CAAC,EACrC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CACO,CAAC;IAEzC,MAAM,OAAO,GAAG,IAAA,oBAAS,EAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO;YACP,GAAG,EAAE,oCAAsB;YAC3B,YAAY,EAAE,kBAA2B;YACzC,IAAI,EAAE;gBACJ,IAAI,CAAC,KAAK;gBACV,IAAI,CAAC,UAAU;gBACf,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,qBAAqB;gBAC1B,IAAI,CAAC,sBAAsB;gBAC3B,IAAI;gBACJ,6BAA6B;aACrB;YACV,KAAK,EAAE,IAAI,CAAC,WAAW;SACxB,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO;QACP,GAAG,EAAE,oCAAsB;QAC3B,YAAY,EAAE,kBAA2B;QACzC,IAAI,EAAE;YACJ,IAAI,CAAC,KAAK;YACV,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,qBAAqB;YAC1B,IAAI,CAAC,sBAAsB;YAC3B,IAAI;YACJ,6BAA6B;SACrB;QACV,KAAK,EAAE,IAAI,CAAC,WAAW;KACxB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,6BAA6B,CAAC,IAM7C;IACC,MAAM,OAAO,GAAG,IAAA,oBAAS,EAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO;YACP,GAAG,EAAE,oCAAsB;YAC3B,YAAY,EAAE,iBAA0B;YACxC,IAAI,EAAE;gBACJ,IAAI,CAAC,SAAS;gBACd,IAAI,CAAC,eAAe;gBACpB,IAAI,CAAC,qBAAqB;gBAC1B,IAAI;aACI;SACX,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO;QACP,GAAG,EAAE,oCAAsB;QAC3B,YAAY,EAAE,iBAA0B;QACxC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAU;KAClE,CAAC;AACJ,CAAC"}
|
|
@@ -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 omnichain_js_1 = require("./omnichain.js");
|
|
9
|
+
const types_js_1 = require("./types.js");
|
|
8
10
|
const OWNER = "0x000000000000000000000000000000000000dEaD";
|
|
9
11
|
const SALT = "0xabababababababababababababababababababababababababababababababab";
|
|
10
12
|
const DEPLOY_721_CONFIG = {
|
|
@@ -12,17 +14,17 @@ const DEPLOY_721_CONFIG = {
|
|
|
12
14
|
name: "Test Collection",
|
|
13
15
|
symbol: "TEST",
|
|
14
16
|
baseUri: "ipfs://",
|
|
15
|
-
tokenUriResolver: zeroAddress,
|
|
17
|
+
tokenUriResolver: viem_1.zeroAddress,
|
|
16
18
|
contractUri: "",
|
|
17
19
|
tiersConfig: {
|
|
18
20
|
tiers: [
|
|
19
21
|
{
|
|
20
|
-
price: parseEther("0.01"),
|
|
22
|
+
price: (0, viem_1.parseEther)("0.01"),
|
|
21
23
|
initialSupply: 999_999_999, // "unlimited" sentinel (NOT uint32 max)
|
|
22
24
|
votingUnits: 0,
|
|
23
25
|
reserveFrequency: 0,
|
|
24
|
-
reserveBeneficiary: zeroAddress,
|
|
25
|
-
encodedIpfsUri: zeroHash,
|
|
26
|
+
reserveBeneficiary: viem_1.zeroAddress,
|
|
27
|
+
encodedIpfsUri: viem_1.zeroHash,
|
|
26
28
|
category: 1,
|
|
27
29
|
discountPercent: 0,
|
|
28
30
|
flags: {
|
|
@@ -54,90 +56,90 @@ const DEPLOY_721_CONFIG = {
|
|
|
54
56
|
};
|
|
55
57
|
function launchArgs() {
|
|
56
58
|
return {
|
|
57
|
-
chainId: sepolia.id,
|
|
58
|
-
chainIds: [sepolia.id, optimismSepolia.id, baseSepolia.id],
|
|
59
|
+
chainId: chains_1.sepolia.id,
|
|
60
|
+
chainIds: [chains_1.sepolia.id, chains_1.optimismSepolia.id, chains_1.baseSepolia.id],
|
|
59
61
|
owner: OWNER,
|
|
60
62
|
projectUri: "ipfs://bafy",
|
|
61
|
-
rulesetConfigurations: [buildRulesetConfiguration()],
|
|
62
|
-
terminalConfigurations: buildTerminalConfigurations({
|
|
63
|
-
chainId: sepolia.id,
|
|
63
|
+
rulesetConfigurations: [(0, launch_js_1.buildRulesetConfiguration)()],
|
|
64
|
+
terminalConfigurations: (0, launch_js_1.buildTerminalConfigurations)({
|
|
65
|
+
chainId: chains_1.sepolia.id,
|
|
64
66
|
}),
|
|
65
|
-
creationFee: parseEther("0.01"),
|
|
67
|
+
creationFee: (0, viem_1.parseEther)("0.01"),
|
|
66
68
|
salt: SALT,
|
|
67
69
|
};
|
|
68
70
|
}
|
|
69
|
-
describe("buildOmnichainLaunchProjectTx", () => {
|
|
70
|
-
test("encodes the 6-arg overload with sucker configs for every other chain", () => {
|
|
71
|
-
const request = buildOmnichainLaunchProjectTx(launchArgs());
|
|
72
|
-
expect(request.address).toBe(v6Address("JBOmnichainDeployer", sepolia.id));
|
|
73
|
-
expect(request.value).toBe(parseEther("0.01"));
|
|
74
|
-
expect(request.args).toHaveLength(6);
|
|
71
|
+
(0, vitest_1.describe)("buildOmnichainLaunchProjectTx", () => {
|
|
72
|
+
(0, vitest_1.test)("encodes the 6-arg overload with sucker configs for every other chain", () => {
|
|
73
|
+
const request = (0, omnichain_js_1.buildOmnichainLaunchProjectTx)(launchArgs());
|
|
74
|
+
(0, vitest_1.expect)(request.address).toBe((0, types_js_1.v6Address)("JBOmnichainDeployer", chains_1.sepolia.id));
|
|
75
|
+
(0, vitest_1.expect)(request.value).toBe((0, viem_1.parseEther)("0.01"));
|
|
76
|
+
(0, vitest_1.expect)(request.args).toHaveLength(6);
|
|
75
77
|
// The shared salt must flow into the sucker deployment configuration and
|
|
76
78
|
// a deployer config must exist for each REMOTE chain (not the local one).
|
|
77
79
|
const suckerConfiguration = request.args[5];
|
|
78
80
|
if (typeof suckerConfiguration === "string") {
|
|
79
81
|
throw new Error("expected a sucker deployment configuration");
|
|
80
82
|
}
|
|
81
|
-
expect(suckerConfiguration.salt).toBe(SALT);
|
|
82
|
-
expect(suckerConfiguration.deployerConfigurations).toHaveLength(2);
|
|
83
|
+
(0, vitest_1.expect)(suckerConfiguration.salt).toBe(SALT);
|
|
84
|
+
(0, vitest_1.expect)(suckerConfiguration.deployerConfigurations).toHaveLength(2);
|
|
83
85
|
for (const deployerConfiguration of suckerConfiguration.deployerConfigurations) {
|
|
84
|
-
expect(deployerConfiguration.peer).toBe(zeroHash);
|
|
85
|
-
expect(deployerConfiguration.mappings).toHaveLength(1);
|
|
86
|
+
(0, vitest_1.expect)(deployerConfiguration.peer).toBe(viem_1.zeroHash);
|
|
87
|
+
(0, vitest_1.expect)(deployerConfiguration.mappings).toHaveLength(1);
|
|
86
88
|
}
|
|
87
|
-
const data = encodeFunctionData(request);
|
|
88
|
-
const decoded = decodeFunctionData({ abi: jbOmnichainDeployerAbi, data });
|
|
89
|
-
expect(decoded.functionName).toBe("launchProjectFor");
|
|
89
|
+
const data = (0, viem_1.encodeFunctionData)(request);
|
|
90
|
+
const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.jbOmnichainDeployerAbi, data });
|
|
91
|
+
(0, vitest_1.expect)(decoded.functionName).toBe("launchProjectFor");
|
|
90
92
|
});
|
|
91
|
-
test("encodes the 7-arg overload when a 721 config is given", () => {
|
|
92
|
-
const request = buildOmnichainLaunchProjectTx({
|
|
93
|
+
(0, vitest_1.test)("encodes the 7-arg overload when a 721 config is given", () => {
|
|
94
|
+
const request = (0, omnichain_js_1.buildOmnichainLaunchProjectTx)({
|
|
93
95
|
...launchArgs(),
|
|
94
96
|
deploy721Config: DEPLOY_721_CONFIG,
|
|
95
97
|
});
|
|
96
|
-
expect(request.args).toHaveLength(7);
|
|
97
|
-
expect(request.args[2]).toBe(DEPLOY_721_CONFIG);
|
|
98
|
-
expect(request.value).toBe(parseEther("0.01"));
|
|
99
|
-
const data = encodeFunctionData(request);
|
|
100
|
-
expect(data.length).toBeGreaterThan(10);
|
|
98
|
+
(0, vitest_1.expect)(request.args).toHaveLength(7);
|
|
99
|
+
(0, vitest_1.expect)(request.args[2]).toBe(DEPLOY_721_CONFIG);
|
|
100
|
+
(0, vitest_1.expect)(request.value).toBe((0, viem_1.parseEther)("0.01"));
|
|
101
|
+
const data = (0, viem_1.encodeFunctionData)(request);
|
|
102
|
+
(0, vitest_1.expect)(data.length).toBeGreaterThan(10);
|
|
101
103
|
});
|
|
102
|
-
test("a single-chain launch produces no sucker deployer configs", () => {
|
|
103
|
-
const request = buildOmnichainLaunchProjectTx({
|
|
104
|
+
(0, vitest_1.test)("a single-chain launch produces no sucker deployer configs", () => {
|
|
105
|
+
const request = (0, omnichain_js_1.buildOmnichainLaunchProjectTx)({
|
|
104
106
|
...launchArgs(),
|
|
105
|
-
chainIds: [sepolia.id],
|
|
107
|
+
chainIds: [chains_1.sepolia.id],
|
|
106
108
|
});
|
|
107
109
|
const suckerConfiguration = request.args[5];
|
|
108
110
|
if (typeof suckerConfiguration === "string") {
|
|
109
111
|
throw new Error("expected a sucker deployment configuration");
|
|
110
112
|
}
|
|
111
|
-
expect(suckerConfiguration.deployerConfigurations).toEqual([]);
|
|
112
|
-
expect(() => encodeFunctionData(request)).not.toThrow();
|
|
113
|
+
(0, vitest_1.expect)(suckerConfiguration.deployerConfigurations).toEqual([]);
|
|
114
|
+
(0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(request)).not.toThrow();
|
|
113
115
|
});
|
|
114
116
|
});
|
|
115
|
-
describe("buildOmnichainQueueRulesetsTx", () => {
|
|
116
|
-
test("encodes the 3-arg overload", () => {
|
|
117
|
-
const request = buildOmnichainQueueRulesetsTx({
|
|
118
|
-
chainId: sepolia.id,
|
|
117
|
+
(0, vitest_1.describe)("buildOmnichainQueueRulesetsTx", () => {
|
|
118
|
+
(0, vitest_1.test)("encodes the 3-arg overload", () => {
|
|
119
|
+
const request = (0, omnichain_js_1.buildOmnichainQueueRulesetsTx)({
|
|
120
|
+
chainId: chains_1.sepolia.id,
|
|
119
121
|
projectId: 9n,
|
|
120
|
-
rulesetConfigurations: [buildRulesetConfiguration()],
|
|
122
|
+
rulesetConfigurations: [(0, launch_js_1.buildRulesetConfiguration)()],
|
|
121
123
|
memo: "queue",
|
|
122
124
|
});
|
|
123
|
-
expect(request.address).toBe(v6Address("JBOmnichainDeployer", sepolia.id));
|
|
124
|
-
expect(request.args).toHaveLength(3);
|
|
125
|
-
const data = encodeFunctionData(request);
|
|
126
|
-
const decoded = decodeFunctionData({ abi: jbOmnichainDeployerAbi, data });
|
|
127
|
-
expect(decoded.functionName).toBe("queueRulesetsOf");
|
|
128
|
-
expect(decoded.args[0]).toBe(9n);
|
|
125
|
+
(0, vitest_1.expect)(request.address).toBe((0, types_js_1.v6Address)("JBOmnichainDeployer", chains_1.sepolia.id));
|
|
126
|
+
(0, vitest_1.expect)(request.args).toHaveLength(3);
|
|
127
|
+
const data = (0, viem_1.encodeFunctionData)(request);
|
|
128
|
+
const decoded = (0, viem_1.decodeFunctionData)({ abi: juicebox_js_1.jbOmnichainDeployerAbi, data });
|
|
129
|
+
(0, vitest_1.expect)(decoded.functionName).toBe("queueRulesetsOf");
|
|
130
|
+
(0, vitest_1.expect)(decoded.args[0]).toBe(9n);
|
|
129
131
|
});
|
|
130
|
-
test("encodes the 4-arg overload when deploying a 721 hook", () => {
|
|
131
|
-
const request = buildOmnichainQueueRulesetsTx({
|
|
132
|
-
chainId: sepolia.id,
|
|
132
|
+
(0, vitest_1.test)("encodes the 4-arg overload when deploying a 721 hook", () => {
|
|
133
|
+
const request = (0, omnichain_js_1.buildOmnichainQueueRulesetsTx)({
|
|
134
|
+
chainId: chains_1.sepolia.id,
|
|
133
135
|
projectId: 9n,
|
|
134
|
-
rulesetConfigurations: [buildRulesetConfiguration()],
|
|
136
|
+
rulesetConfigurations: [(0, launch_js_1.buildRulesetConfiguration)()],
|
|
135
137
|
deploy721Config: DEPLOY_721_CONFIG,
|
|
136
138
|
});
|
|
137
|
-
expect(request.args).toHaveLength(4);
|
|
138
|
-
expect(request.args[1]).toBe(DEPLOY_721_CONFIG);
|
|
139
|
-
expect(request.args[3]).toBe(""); // default memo
|
|
140
|
-
expect(() => encodeFunctionData(request)).not.toThrow();
|
|
139
|
+
(0, vitest_1.expect)(request.args).toHaveLength(4);
|
|
140
|
+
(0, vitest_1.expect)(request.args[1]).toBe(DEPLOY_721_CONFIG);
|
|
141
|
+
(0, vitest_1.expect)(request.args[3]).toBe(""); // default memo
|
|
142
|
+
(0, vitest_1.expect)(() => (0, viem_1.encodeFunctionData)(request)).not.toThrow();
|
|
141
143
|
});
|
|
142
144
|
});
|
|
143
145
|
//# sourceMappingURL=omnichain.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omnichain.test.js","sourceRoot":"","sources":["../../../src/v6/omnichain.test.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"omnichain.test.js","sourceRoot":"","sources":["../../../src/v6/omnichain.test.ts"],"names":[],"mappings":";;AAAA,+BAMc;AACd,wCAAoE;AACpE,mCAAgD;AAChD,0DAAkE;AAClE,2CAGqB;AACrB,iDAIwB;AACxB,yCAAuC;AAEvC,MAAM,KAAK,GAAG,4CAAqD,CAAC;AACpE,MAAM,IAAI,GACR,oEAA6E,CAAC;AAEhF,MAAM,iBAAiB,GAA+B;IACpD,qBAAqB,EAAE;QACrB,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,SAAS;QAClB,gBAAgB,EAAE,kBAAW;QAC7B,WAAW,EAAE,EAAE;QACf,WAAW,EAAE;YACX,KAAK,EAAE;gBACL;oBACE,KAAK,EAAE,IAAA,iBAAU,EAAC,MAAM,CAAC;oBACzB,aAAa,EAAE,WAAW,EAAE,wCAAwC;oBACpE,WAAW,EAAE,CAAC;oBACd,gBAAgB,EAAE,CAAC;oBACnB,kBAAkB,EAAE,kBAAW;oBAC/B,cAAc,EAAE,eAAQ;oBACxB,QAAQ,EAAE,CAAC;oBACX,eAAe,EAAE,CAAC;oBAClB,KAAK,EAAE;wBACL,cAAc,EAAE,KAAK;wBACrB,8BAA8B,EAAE,KAAK;wBACrC,iBAAiB,EAAE,KAAK;wBACxB,cAAc,EAAE,KAAK;wBACrB,aAAa,EAAE,KAAK;wBACpB,2BAA2B,EAAE,KAAK;wBAClC,kBAAkB,EAAE,KAAK;qBAC1B;oBACD,YAAY,EAAE,CAAC;oBACf,MAAM,EAAE,EAAE;iBACX;aACF;YACD,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,EAAE;SACb;QACD,KAAK,EAAE;YACL,sBAAsB,EAAE,KAAK;YAC7B,mBAAmB,EAAE,KAAK;YAC1B,0BAA0B,EAAE,KAAK;YACjC,mBAAmB,EAAE,KAAK;YAC1B,oBAAoB,EAAE,KAAK;SAC5B;KACF;IACD,qBAAqB,EAAE,IAAI;IAC3B,IAAI,EAAE,IAAI;CACX,CAAC;AAEF,SAAS,UAAU;IACjB,OAAO;QACL,OAAO,EAAE,gBAAO,CAAC,EAAE;QACnB,QAAQ,EAAE,CAAC,gBAAO,CAAC,EAAE,EAAE,wBAAe,CAAC,EAAE,EAAE,oBAAW,CAAC,EAAE,CAAC;QAC1D,KAAK,EAAE,KAAK;QACZ,UAAU,EAAE,aAAa;QACzB,qBAAqB,EAAE,CAAC,IAAA,qCAAyB,GAAE,CAAC;QACpD,sBAAsB,EAAE,IAAA,uCAA2B,EAAC;YAClD,OAAO,EAAE,gBAAO,CAAC,EAAE;SACpB,CAAC;QACF,WAAW,EAAE,IAAA,iBAAU,EAAC,MAAM,CAAC;QAC/B,IAAI,EAAE,IAAI;KACX,CAAC;AACJ,CAAC;AAED,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,aAAI,EAAC,sEAAsE,EAAE,GAAG,EAAE;QAChF,MAAM,OAAO,GAAG,IAAA,4CAA6B,EAAC,UAAU,EAAE,CAAC,CAAC;QAE5D,IAAA,eAAM,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,oBAAS,EAAC,qBAAqB,EAAE,gBAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAA,eAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAU,EAAC,MAAM,CAAC,CAAC,CAAC;QAC/C,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAErC,yEAAyE;QACzE,0EAA0E;QAC1E,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,IAAA,eAAM,EAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAA,eAAM,EAAC,mBAAmB,CAAC,sBAAsB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACnE,KAAK,MAAM,qBAAqB,IAAI,mBAAmB,CAAC,sBAAsB,EAAE,CAAC;YAC/E,IAAA,eAAM,EAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAQ,CAAC,CAAC;YAClD,IAAA,eAAM,EAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,yBAAkB,EAAC,OAAO,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAA,yBAAkB,EAAC,EAAE,GAAG,EAAE,oCAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAA,eAAM,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,uDAAuD,EAAE,GAAG,EAAE;QACjE,MAAM,OAAO,GAAG,IAAA,4CAA6B,EAAC;YAC5C,GAAG,UAAU,EAAE;YACf,eAAe,EAAE,iBAAiB;SACnC,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAA,iBAAU,EAAC,MAAM,CAAC,CAAC,CAAC;QAE/C,MAAM,IAAI,GAAG,IAAA,yBAAkB,EAAC,OAAO,CAAC,CAAC;QACzC,IAAA,eAAM,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,2DAA2D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,IAAA,4CAA6B,EAAC;YAC5C,GAAG,UAAU,EAAE;YACf,QAAQ,EAAE,CAAC,gBAAO,CAAC,EAAE,CAAC;SACvB,CAAC,CAAC;QACH,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,OAAO,mBAAmB,KAAK,QAAQ,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAChE,CAAC;QACD,IAAA,eAAM,EAAC,mBAAmB,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC/D,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAkB,EAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,IAAA,iBAAQ,EAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,IAAA,aAAI,EAAC,4BAA4B,EAAE,GAAG,EAAE;QACtC,MAAM,OAAO,GAAG,IAAA,4CAA6B,EAAC;YAC5C,OAAO,EAAE,gBAAO,CAAC,EAAE;YACnB,SAAS,EAAE,EAAE;YACb,qBAAqB,EAAE,CAAC,IAAA,qCAAyB,GAAE,CAAC;YACpD,IAAI,EAAE,OAAO;SACd,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAA,oBAAS,EAAC,qBAAqB,EAAE,gBAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAErC,MAAM,IAAI,GAAG,IAAA,yBAAkB,EAAC,OAAO,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAA,yBAAkB,EAAC,EAAE,GAAG,EAAE,oCAAsB,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,IAAA,eAAM,EAAC,OAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,IAAA,aAAI,EAAC,sDAAsD,EAAE,GAAG,EAAE;QAChE,MAAM,OAAO,GAAG,IAAA,4CAA6B,EAAC;YAC5C,OAAO,EAAE,gBAAO,CAAC,EAAE;YACnB,SAAS,EAAE,EAAE;YACb,qBAAqB,EAAE,CAAC,IAAA,qCAAyB,GAAE,CAAC;YACpD,eAAe,EAAE,iBAAiB;SACnC,CAAC,CAAC;QAEH,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAChD,IAAA,eAAM,EAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe;QAEjD,IAAA,eAAM,EAAC,GAAG,EAAE,CAAC,IAAA,yBAAkB,EAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|