@bananapus/nana-sdk-core 1.11.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/actions/JBSuckerAbi.d.ts +12 -2
- package/dist/cjs/actions/JBSuckerAbi.d.ts.map +1 -1
- package/dist/cjs/actions/JBSuckerAbi.js +12 -2
- package/dist/cjs/actions/JBSuckerAbi.js.map +1 -1
- package/dist/cjs/actions/projectMetadata.d.ts.map +1 -1
- package/dist/cjs/actions/projectMetadata.js +15 -9
- package/dist/cjs/actions/projectMetadata.js.map +1 -1
- package/dist/cjs/actions/suckerPairs.d.ts +26 -0
- package/dist/cjs/actions/suckerPairs.d.ts.map +1 -1
- package/dist/cjs/actions/suckerPairs.js +73 -39
- package/dist/cjs/actions/suckerPairs.js.map +1 -1
- package/dist/cjs/constants.d.ts +17 -7
- package/dist/cjs/constants.d.ts.map +1 -1
- package/dist/cjs/constants.js +45 -31
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/contracts.d.ts +6 -1
- package/dist/cjs/contracts.d.ts.map +1 -1
- package/dist/cjs/contracts.js +7 -1
- package/dist/cjs/contracts.js.map +1 -1
- package/dist/cjs/generated/juicebox.d.ts +8779 -6436
- package/dist/cjs/generated/juicebox.d.ts.map +1 -1
- package/dist/cjs/generated/juicebox.js +3027 -1244
- package/dist/cjs/generated/juicebox.js.map +1 -1
- package/dist/cjs/types.d.ts +13 -10
- package/dist/cjs/types.d.ts.map +1 -1
- package/dist/cjs/types.js +10 -6
- package/dist/cjs/types.js.map +1 -1
- package/dist/cjs/utils/bendystraw.d.ts +19 -3
- package/dist/cjs/utils/bendystraw.d.ts.map +1 -1
- package/dist/cjs/utils/bendystraw.js +38 -10
- package/dist/cjs/utils/bendystraw.js.map +1 -1
- package/dist/cjs/utils/errors.d.ts +19 -0
- package/dist/cjs/utils/errors.d.ts.map +1 -0
- package/dist/cjs/utils/errors.js +32 -0
- package/dist/cjs/utils/errors.js.map +1 -0
- package/dist/cjs/utils/fee.d.ts +12 -0
- package/dist/cjs/utils/fee.d.ts.map +1 -1
- package/dist/cjs/utils/fee.js +13 -2
- package/dist/cjs/utils/fee.js.map +1 -1
- package/dist/cjs/utils/hook.d.ts +17 -4
- package/dist/cjs/utils/hook.d.ts.map +1 -1
- package/dist/cjs/utils/hook.js +60 -31
- package/dist/cjs/utils/hook.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +1 -0
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +1 -0
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/ipfs.d.ts +9 -1
- package/dist/cjs/utils/ipfs.d.ts.map +1 -1
- package/dist/cjs/utils/ipfs.js +13 -1
- package/dist/cjs/utils/ipfs.js.map +1 -1
- package/dist/cjs/utils/revnet.d.ts +1 -1
- package/dist/cjs/utils/revnet.d.ts.map +1 -1
- package/dist/cjs/utils/revnet.js +2 -1
- package/dist/cjs/utils/revnet.js.map +1 -1
- package/dist/cjs/utils/ruleset.d.ts +14 -0
- package/dist/cjs/utils/ruleset.d.ts.map +1 -1
- package/dist/cjs/utils/ruleset.js +19 -0
- package/dist/cjs/utils/ruleset.js.map +1 -1
- package/dist/cjs/utils/tx.d.ts +9 -0
- package/dist/cjs/utils/tx.d.ts.map +1 -1
- package/dist/cjs/utils/tx.js +10 -3
- package/dist/cjs/utils/tx.js.map +1 -1
- package/dist/cjs/utils/urn.d.ts +20 -1
- package/dist/cjs/utils/urn.d.ts.map +1 -1
- package/dist/cjs/utils/urn.js +54 -32
- package/dist/cjs/utils/urn.js.map +1 -1
- package/dist/cjs/v6/cashOut.d.ts +40 -6
- package/dist/cjs/v6/cashOut.d.ts.map +1 -1
- package/dist/cjs/v6/cashOut.js +54 -4
- package/dist/cjs/v6/cashOut.js.map +1 -1
- package/dist/cjs/v6/fees.d.ts +11 -8
- package/dist/cjs/v6/fees.d.ts.map +1 -1
- package/dist/cjs/v6/fees.js +12 -9
- package/dist/cjs/v6/fees.js.map +1 -1
- package/dist/cjs/v6/index.d.ts +1 -0
- package/dist/cjs/v6/index.d.ts.map +1 -1
- package/dist/cjs/v6/index.js +1 -0
- package/dist/cjs/v6/index.js.map +1 -1
- package/dist/cjs/v6/loans.d.ts +13 -4
- package/dist/cjs/v6/loans.d.ts.map +1 -1
- package/dist/cjs/v6/loans.js +14 -5
- package/dist/cjs/v6/loans.js.map +1 -1
- package/dist/cjs/v6/nft.d.ts +43 -7
- package/dist/cjs/v6/nft.d.ts.map +1 -1
- package/dist/cjs/v6/nft.js +69 -12
- package/dist/cjs/v6/nft.js.map +1 -1
- package/dist/cjs/v6/priceFeeds.d.ts +78 -0
- package/dist/cjs/v6/priceFeeds.d.ts.map +1 -0
- package/dist/cjs/v6/priceFeeds.js +109 -0
- package/dist/cjs/v6/priceFeeds.js.map +1 -0
- package/dist/cjs/v6/revnets.d.ts +21 -2
- package/dist/cjs/v6/revnets.d.ts.map +1 -1
- package/dist/cjs/v6/revnets.js +35 -3
- package/dist/cjs/v6/revnets.js.map +1 -1
- package/dist/cjs/v6/suckers.d.ts +11 -0
- package/dist/cjs/v6/suckers.d.ts.map +1 -1
- package/dist/cjs/v6/suckers.js +22 -1
- package/dist/cjs/v6/suckers.js.map +1 -1
- package/dist/cjs/v6/terminals.d.ts +24 -4
- package/dist/cjs/v6/terminals.d.ts.map +1 -1
- package/dist/cjs/v6/terminals.js +13 -2
- package/dist/cjs/v6/terminals.js.map +1 -1
- package/dist/esm/actions/JBSuckerAbi.d.ts +12 -2
- package/dist/esm/actions/JBSuckerAbi.d.ts.map +1 -1
- package/dist/esm/actions/JBSuckerAbi.js +12 -2
- package/dist/esm/actions/JBSuckerAbi.js.map +1 -1
- package/dist/esm/actions/projectMetadata.d.ts.map +1 -1
- package/dist/esm/actions/projectMetadata.js +16 -10
- package/dist/esm/actions/projectMetadata.js.map +1 -1
- package/dist/esm/actions/suckerPairs.d.ts +26 -0
- package/dist/esm/actions/suckerPairs.d.ts.map +1 -1
- package/dist/esm/actions/suckerPairs.js +75 -41
- package/dist/esm/actions/suckerPairs.js.map +1 -1
- package/dist/esm/constants.d.ts +17 -7
- package/dist/esm/constants.d.ts.map +1 -1
- package/dist/esm/constants.js +44 -30
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/contracts.d.ts +6 -1
- package/dist/esm/contracts.d.ts.map +1 -1
- package/dist/esm/contracts.js +6 -0
- package/dist/esm/contracts.js.map +1 -1
- package/dist/esm/generated/juicebox.d.ts +8779 -6436
- package/dist/esm/generated/juicebox.d.ts.map +1 -1
- package/dist/esm/generated/juicebox.js +9644 -7861
- package/dist/esm/generated/juicebox.js.map +1 -1
- package/dist/esm/types.d.ts +13 -10
- package/dist/esm/types.d.ts.map +1 -1
- package/dist/esm/types.js +10 -6
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils/bendystraw.d.ts +19 -3
- package/dist/esm/utils/bendystraw.d.ts.map +1 -1
- package/dist/esm/utils/bendystraw.js +36 -9
- package/dist/esm/utils/bendystraw.js.map +1 -1
- package/dist/esm/utils/errors.d.ts +19 -0
- package/dist/esm/utils/errors.d.ts.map +1 -0
- package/dist/esm/utils/errors.js +28 -0
- package/dist/esm/utils/errors.js.map +1 -0
- package/dist/esm/utils/fee.d.ts +12 -0
- package/dist/esm/utils/fee.d.ts.map +1 -1
- package/dist/esm/utils/fee.js +13 -2
- package/dist/esm/utils/fee.js.map +1 -1
- package/dist/esm/utils/hook.d.ts +17 -4
- package/dist/esm/utils/hook.d.ts.map +1 -1
- package/dist/esm/utils/hook.js +61 -32
- package/dist/esm/utils/hook.js.map +1 -1
- package/dist/esm/utils/index.d.ts +1 -0
- package/dist/esm/utils/index.d.ts.map +1 -1
- package/dist/esm/utils/index.js +1 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/utils/ipfs.d.ts +9 -1
- package/dist/esm/utils/ipfs.d.ts.map +1 -1
- package/dist/esm/utils/ipfs.js +13 -1
- package/dist/esm/utils/ipfs.js.map +1 -1
- package/dist/esm/utils/revnet.d.ts +1 -1
- package/dist/esm/utils/revnet.d.ts.map +1 -1
- package/dist/esm/utils/revnet.js +2 -1
- package/dist/esm/utils/revnet.js.map +1 -1
- package/dist/esm/utils/ruleset.d.ts +14 -0
- package/dist/esm/utils/ruleset.d.ts.map +1 -1
- package/dist/esm/utils/ruleset.js +19 -0
- package/dist/esm/utils/ruleset.js.map +1 -1
- package/dist/esm/utils/tx.d.ts +9 -0
- package/dist/esm/utils/tx.d.ts.map +1 -1
- package/dist/esm/utils/tx.js +11 -4
- package/dist/esm/utils/tx.js.map +1 -1
- package/dist/esm/utils/urn.d.ts +20 -1
- package/dist/esm/utils/urn.d.ts.map +1 -1
- package/dist/esm/utils/urn.js +54 -32
- package/dist/esm/utils/urn.js.map +1 -1
- package/dist/esm/v6/cashOut.d.ts +40 -6
- package/dist/esm/v6/cashOut.d.ts.map +1 -1
- package/dist/esm/v6/cashOut.js +54 -4
- package/dist/esm/v6/cashOut.js.map +1 -1
- package/dist/esm/v6/fees.d.ts +11 -8
- package/dist/esm/v6/fees.d.ts.map +1 -1
- package/dist/esm/v6/fees.js +11 -8
- package/dist/esm/v6/fees.js.map +1 -1
- package/dist/esm/v6/index.d.ts +1 -0
- package/dist/esm/v6/index.d.ts.map +1 -1
- package/dist/esm/v6/index.js +1 -0
- package/dist/esm/v6/index.js.map +1 -1
- package/dist/esm/v6/loans.d.ts +13 -4
- package/dist/esm/v6/loans.d.ts.map +1 -1
- package/dist/esm/v6/loans.js +13 -4
- package/dist/esm/v6/loans.js.map +1 -1
- package/dist/esm/v6/nft.d.ts +43 -7
- package/dist/esm/v6/nft.d.ts.map +1 -1
- package/dist/esm/v6/nft.js +66 -11
- package/dist/esm/v6/nft.js.map +1 -1
- package/dist/esm/v6/priceFeeds.d.ts +78 -0
- package/dist/esm/v6/priceFeeds.d.ts.map +1 -0
- package/dist/esm/v6/priceFeeds.js +105 -0
- package/dist/esm/v6/priceFeeds.js.map +1 -0
- package/dist/esm/v6/revnets.d.ts +21 -2
- package/dist/esm/v6/revnets.d.ts.map +1 -1
- package/dist/esm/v6/revnets.js +34 -3
- package/dist/esm/v6/revnets.js.map +1 -1
- package/dist/esm/v6/suckers.d.ts +11 -0
- package/dist/esm/v6/suckers.d.ts.map +1 -1
- package/dist/esm/v6/suckers.js +21 -1
- package/dist/esm/v6/suckers.js.map +1 -1
- package/dist/esm/v6/terminals.d.ts +24 -4
- package/dist/esm/v6/terminals.d.ts.map +1 -1
- package/dist/esm/v6/terminals.js +13 -2
- package/dist/esm/v6/terminals.js.map +1 -1
- package/package.json +7 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":"AAaA,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ipfs.d.ts","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":"AAaA;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,eAAe,CAAC,EAAE,MAAM,GACvB,MAAM,GAAG,IAAI,CAQf;AAED,2DAA2D;AAC3D,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,4DAA4D;AAC5D,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwB1D;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG3D;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKhD;AA2GD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,iBAWxC;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,UAS/C;AAED,2EAA2E;AAC3E,eAAO,MAAM,cAAc,sBAAgB,CAAC;AAE5C;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3D;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAC/B,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAgBlC"}
|
package/dist/cjs/utils/ipfs.js
CHANGED
|
@@ -23,8 +23,20 @@ function validatedIpfsAssetPath(value) {
|
|
|
23
23
|
const cid = value.split("/")[0];
|
|
24
24
|
return cid && isIpfsCid(cid) ? value : null;
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* An HTTP gateway URL for a CID (optionally with a path), or `null` when
|
|
28
|
+
* `cid` is not a CID.
|
|
29
|
+
*
|
|
30
|
+
* Fails closed rather than interpolating whatever it was handed: the previous
|
|
31
|
+
* signature accepted `undefined` and happily returned
|
|
32
|
+
* `https://ipfs.io/ipfs/undefined`, a 4xx fetch far from its source.
|
|
33
|
+
*/
|
|
26
34
|
function ipfsGatewayUrl(cid, gatewayHostname) {
|
|
27
|
-
|
|
35
|
+
// Guarded at runtime too: JS callers were the ones passing `undefined`.
|
|
36
|
+
const assetPath = typeof cid === "string" ? validatedIpfsAssetPath(cid.trim()) : null;
|
|
37
|
+
if (!assetPath)
|
|
38
|
+
return null;
|
|
39
|
+
return `https://${gatewayHostname ?? PUBLIC_IPFS_GATEWAY_HOSTNAME}/ipfs/${assetPath}`;
|
|
28
40
|
}
|
|
29
41
|
/** Return an `ipfs://` URI for a CID and optional path. */
|
|
30
42
|
function ipfsUri(cid, path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { JBChainId } from "
|
|
1
|
+
import { JBChainId } from "../types.js";
|
|
2
2
|
import { JBVersion } from "../contracts.js";
|
|
3
3
|
export declare function calcPrepaidFee(monthsToPrePay: number): bigint;
|
|
4
4
|
export declare function getRevnetLoanContract(version: JBVersion, chainId: JBChainId): "0xde1e70faf22024559e7d94ab814abd7e42ca849b" | "0x1880d832aa283d05b8eab68877717e25fbd550bb" | "0x056265c31157748818f0910d1859acd2f7d427de";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revnet.d.ts","sourceRoot":"","sources":["../../../src/utils/revnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"revnet.d.ts","sourceRoot":"","sources":["../../../src/utils/revnet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAY5C,wBAAgB,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAa7D;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,8IAI3E"}
|
package/dist/cjs/utils/revnet.js
CHANGED
|
@@ -10,7 +10,8 @@ const MIN_PREPAID_FEE = 25n;
|
|
|
10
10
|
// The divisor (max months) as a BigInt for the calculation.
|
|
11
11
|
const MAX_PREPAYMENT_MONTHS_BIGINT = 120n;
|
|
12
12
|
function calcPrepaidFee(monthsToPrePay) {
|
|
13
|
-
const calcd = (BigInt(monthsToPrePay) * MAX_PREPAID_FEE_PERCENT_BIGINT) /
|
|
13
|
+
const calcd = (BigInt(monthsToPrePay) * MAX_PREPAID_FEE_PERCENT_BIGINT) /
|
|
14
|
+
MAX_PREPAYMENT_MONTHS_BIGINT +
|
|
14
15
|
MIN_PREPAID_FEE;
|
|
15
16
|
if (calcd < MIN_PREPAID_FEE) {
|
|
16
17
|
return MIN_PREPAID_FEE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revnet.js","sourceRoot":"","sources":["../../../src/utils/revnet.ts"],"names":[],"mappings":";;AAaA,
|
|
1
|
+
{"version":3,"file":"revnet.js","sourceRoot":"","sources":["../../../src/utils/revnet.ts"],"names":[],"mappings":";;AAaA,wCAaC;AAED,sDAIC;AA9BD,0DAA6D;AAE7D,0BAA0B;AAC1B,MAAM,8BAA8B,GAAG,IAAI,CAAC;AAE5C,oDAAoD;AACpD,MAAM,eAAe,GAAG,GAAG,CAAC;AAE5B,4DAA4D;AAC5D,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAE1C,SAAgB,cAAc,CAAC,cAAsB;IACnD,MAAM,KAAK,GACT,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,8BAA8B,CAAC;QACvD,4BAA4B;QAC9B,eAAe,CAAC;IAElB,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;QAC5B,OAAO,eAAe,CAAC;IACzB,CAAC;SAAM,IAAI,KAAK,GAAG,8BAA8B,EAAE,CAAC;QAClD,OAAO,8BAA8B,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,qBAAqB,CAAC,OAAkB,EAAE,OAAkB;IAC1E,OAAO,OAAO,KAAK,CAAC;QAClB,CAAC,CAAC,+BAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC;QAC9C,CAAC,CAAC,+BAAiB,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Useful when projecting a project's future Token B price.
|
|
5
5
|
* E.g. "In the next ruleset, how much will Token B cost, given the new Weight?"
|
|
6
|
+
*
|
|
7
|
+
* Projects ONE cycle. `JBRulesets` applies the cut once per elapsed cycle
|
|
8
|
+
* (`JBRulesets.sol:685-690`), so this is not the weight `n` cycles out. It also
|
|
9
|
+
* does not model the weight-1 "inherit the previous weight" sentinel
|
|
10
|
+
* (`JBRulesets.sol:822-824`) — for a ruleset whose configured weight may still
|
|
11
|
+
* be `RULESET_WEIGHT_INHERIT`, use `resolveRulesetIssuanceStages` from
|
|
12
|
+
* `@bananapus/nana-sdk-core/v6` first.
|
|
6
13
|
*/
|
|
7
14
|
export declare function getNextRulesetWeight(currentRuleset: {
|
|
8
15
|
weight: bigint;
|
|
@@ -10,6 +17,13 @@ export declare function getNextRulesetWeight(currentRuleset: {
|
|
|
10
17
|
}): bigint;
|
|
11
18
|
/**
|
|
12
19
|
* Derive the previous ruleset's Weight value from the current ruleset.
|
|
20
|
+
*
|
|
21
|
+
* The inverse of {@link getNextRulesetWeight}, with the same one-cycle and
|
|
22
|
+
* sentinel caveats, and lossy by floor division.
|
|
23
|
+
*
|
|
24
|
+
* @throws {RangeError} When `weightCutPercent` is 100% (`MAX_WEIGHT_CUT_PERCENT`).
|
|
25
|
+
* A full cut sends every subsequent weight to 0, so no previous weight can be
|
|
26
|
+
* recovered from the current one — the inverse has no value to return.
|
|
13
27
|
*/
|
|
14
28
|
export declare function getPrevRulesetWeight(currentRuleset: {
|
|
15
29
|
weight: bigint;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleset.d.ts","sourceRoot":"","sources":["../../../src/utils/ruleset.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"ruleset.d.ts","sourceRoot":"","sources":["../../../src/utils/ruleset.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,UAOA;AAED;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;CAC1B,UAeA"}
|
|
@@ -8,6 +8,13 @@ const constants_js_1 = require("../constants.js");
|
|
|
8
8
|
*
|
|
9
9
|
* Useful when projecting a project's future Token B price.
|
|
10
10
|
* E.g. "In the next ruleset, how much will Token B cost, given the new Weight?"
|
|
11
|
+
*
|
|
12
|
+
* Projects ONE cycle. `JBRulesets` applies the cut once per elapsed cycle
|
|
13
|
+
* (`JBRulesets.sol:685-690`), so this is not the weight `n` cycles out. It also
|
|
14
|
+
* does not model the weight-1 "inherit the previous weight" sentinel
|
|
15
|
+
* (`JBRulesets.sol:822-824`) — for a ruleset whose configured weight may still
|
|
16
|
+
* be `RULESET_WEIGHT_INHERIT`, use `resolveRulesetIssuanceStages` from
|
|
17
|
+
* `@bananapus/nana-sdk-core/v6` first.
|
|
11
18
|
*/
|
|
12
19
|
function getNextRulesetWeight(currentRuleset) {
|
|
13
20
|
const nextRulesetWeight = (currentRuleset.weight *
|
|
@@ -17,8 +24,20 @@ function getNextRulesetWeight(currentRuleset) {
|
|
|
17
24
|
}
|
|
18
25
|
/**
|
|
19
26
|
* Derive the previous ruleset's Weight value from the current ruleset.
|
|
27
|
+
*
|
|
28
|
+
* The inverse of {@link getNextRulesetWeight}, with the same one-cycle and
|
|
29
|
+
* sentinel caveats, and lossy by floor division.
|
|
30
|
+
*
|
|
31
|
+
* @throws {RangeError} When `weightCutPercent` is 100% (`MAX_WEIGHT_CUT_PERCENT`).
|
|
32
|
+
* A full cut sends every subsequent weight to 0, so no previous weight can be
|
|
33
|
+
* recovered from the current one — the inverse has no value to return.
|
|
20
34
|
*/
|
|
21
35
|
function getPrevRulesetWeight(currentRuleset) {
|
|
36
|
+
// A 100% cut is a legal on-chain value (`JBRulesets.sol:139` rejects only
|
|
37
|
+
// `> MAX_WEIGHT_CUT_PERCENT`), so this is a reachable input, not an assert.
|
|
38
|
+
if (currentRuleset.weightCutPercent === constants_js_1.MAX_WEIGHT_CUT_PERCENT) {
|
|
39
|
+
throw new RangeError("A 100% weightCutPercent has no invertible previous weight.");
|
|
40
|
+
}
|
|
22
41
|
// reverse of getNextRulesetWeight
|
|
23
42
|
const prevRulesetWeight = (currentRuleset.weight * BigInt(constants_js_1.MAX_WEIGHT_CUT_PERCENT)) /
|
|
24
43
|
BigInt(constants_js_1.MAX_WEIGHT_CUT_PERCENT - currentRuleset.weightCutPercent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleset.js","sourceRoot":"","sources":["../../../src/utils/ruleset.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ruleset.js","sourceRoot":"","sources":["../../../src/utils/ruleset.ts"],"names":[],"mappings":";;AAeA,oDAUC;AAYD,oDAkBC;AAvDD,kDAAyD;AAEzD;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAAC,cAGpC;IACC,MAAM,iBAAiB,GACrB,CAAC,cAAc,CAAC,MAAM;QACpB,MAAM,CAAC,qCAAsB,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACnE,MAAM,CAAC,qCAAsB,CAAC,CAAC;IAEjC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,oBAAoB,CAAC,cAGpC;IACC,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,cAAc,CAAC,gBAAgB,KAAK,qCAAsB,EAAE,CAAC;QAC/D,MAAM,IAAI,UAAU,CAClB,4DAA4D,CAC7D,CAAC;IACJ,CAAC;IAED,kCAAkC;IAClC,MAAM,iBAAiB,GACrB,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,qCAAsB,CAAC,CAAC;QACxD,MAAM,CAAC,qCAAsB,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEnE,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|
package/dist/cjs/utils/tx.d.ts
CHANGED
|
@@ -1,2 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A fresh 32-byte salt.
|
|
3
|
+
*
|
|
4
|
+
* Uses the platform CSPRNG and fills all 32 bytes. The previous implementation
|
|
5
|
+
* hexed `Math.random()` and right-padded it to 32 bytes, which put ~52 bits of
|
|
6
|
+
* non-cryptographic entropy in the HIGH bytes and left the rest zero — and
|
|
7
|
+
* these salts seed the deterministic addresses of omnichain suckers and project
|
|
8
|
+
* ERC-20s, where a collision or a prediction is not recoverable.
|
|
9
|
+
*/
|
|
1
10
|
export declare function createSalt(): `0x${string}`;
|
|
2
11
|
//# sourceMappingURL=tx.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../src/utils/tx.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,
|
|
1
|
+
{"version":3,"file":"tx.d.ts","sourceRoot":"","sources":["../../../src/utils/tx.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,UAAU,kBAEzB"}
|
package/dist/cjs/utils/tx.js
CHANGED
|
@@ -2,9 +2,16 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.createSalt = createSalt;
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
|
+
/**
|
|
6
|
+
* A fresh 32-byte salt.
|
|
7
|
+
*
|
|
8
|
+
* Uses the platform CSPRNG and fills all 32 bytes. The previous implementation
|
|
9
|
+
* hexed `Math.random()` and right-padded it to 32 bytes, which put ~52 bits of
|
|
10
|
+
* non-cryptographic entropy in the HIGH bytes and left the rest zero — and
|
|
11
|
+
* these salts seed the deterministic addresses of omnichain suckers and project
|
|
12
|
+
* ERC-20s, where a collision or a prediction is not recoverable.
|
|
13
|
+
*/
|
|
5
14
|
function createSalt() {
|
|
6
|
-
|
|
7
|
-
const salt = (0, viem_1.toHex)((0, viem_1.toBytes)(base, { size: 32 }));
|
|
8
|
-
return salt;
|
|
15
|
+
return (0, viem_1.toHex)(crypto.getRandomValues(new Uint8Array(32)));
|
|
9
16
|
}
|
|
10
17
|
//# sourceMappingURL=tx.js.map
|
package/dist/cjs/utils/tx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../../../src/utils/tx.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../../../src/utils/tx.ts"],"names":[],"mappings":";;AAWA,gCAEC;AAbD,+BAA6B;AAE7B;;;;;;;;GAQG;AACH,SAAgB,UAAU;IACxB,OAAO,IAAA,YAAK,EAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/cjs/utils/urn.d.ts
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
import { JBChainId, JBVersion } from "../types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Parse a Juicebox project URN.
|
|
4
|
+
*
|
|
5
|
+
* Two shapes are accepted: `<chainSlug>:<projectId>` (implicitly
|
|
6
|
+
* {@link DEFAULT_URN_VERSION}) and `v<version>:<chainSlug>:<projectId>`.
|
|
7
|
+
* `projectId` must be decimal digits naming a real project id (`>= 1`) — hex
|
|
8
|
+
* (`0x123`) and any other `BigInt`-coercible spelling are rejected rather than
|
|
9
|
+
* silently reinterpreted.
|
|
10
|
+
*/
|
|
2
11
|
export declare function jbUrn(urn: string): {
|
|
3
12
|
chainId: JBChainId;
|
|
4
13
|
projectId: bigint;
|
|
5
14
|
version: JBVersion;
|
|
6
15
|
} | null;
|
|
7
|
-
|
|
16
|
+
/**
|
|
17
|
+
* Format a Juicebox project URN.
|
|
18
|
+
*
|
|
19
|
+
* The version prefix is emitted whenever `version` is not
|
|
20
|
+
* {@link DEFAULT_URN_VERSION}, so a v5/v6 project round-trips through
|
|
21
|
+
* {@link jbUrn} as itself rather than collapsing into the v4 tables.
|
|
22
|
+
*
|
|
23
|
+
* Returns `null` for an unsupported chain, an unsupported version, or a
|
|
24
|
+
* `projectId` that {@link jbUrn} could not parse back (`<= 0`).
|
|
25
|
+
*/
|
|
26
|
+
export declare function toJbUrn(chainId: JBChainId, projectId: bigint, version?: JBVersion): string | null;
|
|
8
27
|
//# sourceMappingURL=urn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urn.d.ts","sourceRoot":"","sources":["../../../src/utils/urn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"urn.d.ts","sourceRoot":"","sources":["../../../src/utils/urn.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAKnD;;;;;;;;GAQG;AACH,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG;IAClC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,SAAS,CAAC;CACpB,GAAG,IAAI,CA+BP;AAED;;;;;;;;;GASG;AACH,wBAAgB,OAAO,CACrB,OAAO,EAAE,SAAS,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,SAA+B,GACvC,MAAM,GAAG,IAAI,CAUf"}
|
package/dist/cjs/utils/urn.js
CHANGED
|
@@ -3,47 +3,69 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.jbUrn = jbUrn;
|
|
4
4
|
exports.toJbUrn = toJbUrn;
|
|
5
5
|
const constants_js_1 = require("../constants.js");
|
|
6
|
+
/** The version a versionless URN (`eth:3`) is understood to name. */
|
|
7
|
+
const DEFAULT_URN_VERSION = 4;
|
|
8
|
+
/**
|
|
9
|
+
* Parse a Juicebox project URN.
|
|
10
|
+
*
|
|
11
|
+
* Two shapes are accepted: `<chainSlug>:<projectId>` (implicitly
|
|
12
|
+
* {@link DEFAULT_URN_VERSION}) and `v<version>:<chainSlug>:<projectId>`.
|
|
13
|
+
* `projectId` must be decimal digits naming a real project id (`>= 1`) — hex
|
|
14
|
+
* (`0x123`) and any other `BigInt`-coercible spelling are rejected rather than
|
|
15
|
+
* silently reinterpreted.
|
|
16
|
+
*/
|
|
6
17
|
function jbUrn(urn) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
if (!urlParts[0].startsWith("v"))
|
|
23
|
-
return null;
|
|
24
|
-
version = Number(urlParts[0].replace("v", ""));
|
|
25
|
-
chainSlug = urlParts[1];
|
|
26
|
-
projectId = urlParts[2];
|
|
27
|
-
}
|
|
28
|
-
const chain = constants_js_1.JB_CHAIN_SLUGS[chainSlug];
|
|
29
|
-
if (!chain || !projectId || !isValidVersion(version))
|
|
18
|
+
const urlParts = urn.split(":").map((part) => part.trim());
|
|
19
|
+
if (urlParts.length < 2 || urlParts.length > 3)
|
|
20
|
+
return null;
|
|
21
|
+
let chainSlug;
|
|
22
|
+
let version;
|
|
23
|
+
let projectId;
|
|
24
|
+
if (urlParts.length === 2) {
|
|
25
|
+
// Versionless [/eth:3]
|
|
26
|
+
version = DEFAULT_URN_VERSION;
|
|
27
|
+
chainSlug = urlParts[0];
|
|
28
|
+
projectId = urlParts[1];
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
// With version [/v5:eth:3]
|
|
32
|
+
if (!urlParts[0].startsWith("v"))
|
|
30
33
|
return null;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
version,
|
|
35
|
-
};
|
|
34
|
+
version = Number(urlParts[0].replace("v", ""));
|
|
35
|
+
chainSlug = urlParts[1];
|
|
36
|
+
projectId = urlParts[2];
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
+
const chain = constants_js_1.JB_CHAIN_SLUGS[chainSlug];
|
|
39
|
+
if (!chain || !isProjectIdDigits(projectId) || !isValidVersion(version)) {
|
|
38
40
|
return null;
|
|
39
41
|
}
|
|
42
|
+
return {
|
|
43
|
+
chainId: chain.chain.id,
|
|
44
|
+
projectId: BigInt(projectId),
|
|
45
|
+
version,
|
|
46
|
+
};
|
|
40
47
|
}
|
|
41
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Format a Juicebox project URN.
|
|
50
|
+
*
|
|
51
|
+
* The version prefix is emitted whenever `version` is not
|
|
52
|
+
* {@link DEFAULT_URN_VERSION}, so a v5/v6 project round-trips through
|
|
53
|
+
* {@link jbUrn} as itself rather than collapsing into the v4 tables.
|
|
54
|
+
*
|
|
55
|
+
* Returns `null` for an unsupported chain, an unsupported version, or a
|
|
56
|
+
* `projectId` that {@link jbUrn} could not parse back (`<= 0`).
|
|
57
|
+
*/
|
|
58
|
+
function toJbUrn(chainId, projectId, version = DEFAULT_URN_VERSION) {
|
|
42
59
|
const chain = Object.values(constants_js_1.JB_CHAIN_SLUGS).find((chain) => chain.chain.id === chainId);
|
|
43
|
-
if (!chain) {
|
|
60
|
+
if (!chain || projectId <= 0n || !isValidVersion(version)) {
|
|
44
61
|
return null;
|
|
45
62
|
}
|
|
46
|
-
|
|
63
|
+
const prefix = version === DEFAULT_URN_VERSION ? "" : `v${version}:`;
|
|
64
|
+
return `${prefix}${chain.slug}:${projectId}`;
|
|
65
|
+
}
|
|
66
|
+
/** Whether `value` is decimal digits naming a real project id (`>= 1`). */
|
|
67
|
+
function isProjectIdDigits(value) {
|
|
68
|
+
return typeof value === "string" && /^\d+$/.test(value) && BigInt(value) > 0n;
|
|
47
69
|
}
|
|
48
70
|
function isValidVersion(version) {
|
|
49
71
|
return version === 4 || version === 5 || version === 6;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/utils/urn.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/utils/urn.ts"],"names":[],"mappings":";;AAeA,sBAmCC;AAYD,0BAcC;AA5ED,kDAAiD;AAGjD,qEAAqE;AACrE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;;;;;GAQG;AACH,SAAgB,KAAK,CAAC,GAAW;IAK/B,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE5D,IAAI,SAA6B,CAAC;IAClC,IAAI,OAA2B,CAAC;IAChC,IAAI,SAA6B,CAAC;IAElC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,uBAAuB;QACvB,OAAO,GAAG,mBAAmB,CAAC;QAC9B,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;SAAM,CAAC;QACN,2BAA2B;QAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;QAC/C,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,KAAK,GAAG,6BAAc,CAAC,SAAS,CAAC,CAAC;IACxC,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QACxE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO;QACL,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,EAAe;QACpC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;QAC5B,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,OAAO,CACrB,OAAkB,EAClB,SAAiB,EACjB,UAAqB,mBAAmB;IAExC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,6BAAc,CAAC,CAAC,IAAI,CAC9C,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CACtC,CAAC;IACF,IAAI,CAAC,KAAK,IAAI,SAAS,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,OAAO,KAAK,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC;IACrE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC;AAC/C,CAAC;AAED,2EAA2E;AAC3E,SAAS,iBAAiB,CAAC,KAAyB;IAClD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAChF,CAAC;AAED,SAAS,cAAc,CAAC,OAAe;IACrC,OAAO,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;AACzD,CAAC"}
|
package/dist/cjs/v6/cashOut.d.ts
CHANGED
|
@@ -73,12 +73,17 @@ export interface CashOutQuote {
|
|
|
73
73
|
*/
|
|
74
74
|
reclaimAmount: bigint;
|
|
75
75
|
/**
|
|
76
|
-
* The reclaim amount net of the 2.5% protocol cash out fee
|
|
76
|
+
* The reclaim amount net of the 2.5% protocol cash out fee (`x - x / 40`),
|
|
77
|
+
* computed via {@link cashOutProtocolFee}.
|
|
77
78
|
*
|
|
78
|
-
* The fee
|
|
79
|
-
*
|
|
79
|
+
* The fee is conditional: with a non-zero cash-out tax rate every cash out
|
|
80
|
+
* pays it in full; zero-tax cash outs pay it on
|
|
81
|
+
* `min(reclaimAmount, feeFreeSurplusOf)`, which is often but NOT always
|
|
82
|
+
* zero; feeless beneficiaries pay none. `undefined` when the gating inputs
|
|
83
|
+
* (`cashOutTaxRate`, plus `feeFreeSurplus` for zero-tax rulesets) were not
|
|
84
|
+
* supplied — an unknown fee is not fabricated as either extreme.
|
|
80
85
|
*/
|
|
81
|
-
reclaimAmountAfterFee: bigint;
|
|
86
|
+
reclaimAmountAfterFee: bigint | undefined;
|
|
82
87
|
}
|
|
83
88
|
/**
|
|
84
89
|
* Quote the surplus reclaimed by cashing out `cashOutCount` project tokens, via
|
|
@@ -95,19 +100,48 @@ export interface CashOutQuote {
|
|
|
95
100
|
* @param args.currency The currency to quote the reclaim amount in (an
|
|
96
101
|
* accounting-context currency, `uint32(uint160(token))`). Defaults to the native
|
|
97
102
|
* token's currency (61166).
|
|
98
|
-
* @
|
|
103
|
+
* @param args.cashOutTaxRate The ruleset's cash-out tax rate, used to gate the
|
|
104
|
+
* protocol fee (see {@link cashOutProtocolFee}). When omitted,
|
|
105
|
+
* `reclaimAmountAfterFee` is `undefined` rather than a fabricated value.
|
|
106
|
+
* @param args.feeFreeSurplus The terminal's `feeFreeSurplusOf` for the reclaimed
|
|
107
|
+
* token. Required to resolve the fee when `cashOutTaxRate` is zero.
|
|
108
|
+
* @param args.beneficiaryIsFeeless Whether the beneficiary is feeless (pays no
|
|
109
|
+
* protocol fee). Defaults to false.
|
|
110
|
+
* @returns The raw reclaim amount and, when the fee inputs are resolved, the
|
|
111
|
+
* amount net of the conditional 2.5% protocol fee.
|
|
99
112
|
*
|
|
100
113
|
* NOTE: the defaults quote in NATIVE terms (decimals 18, token-keyed native
|
|
101
114
|
* currency). For a project whose accounting token is not the native token
|
|
102
115
|
* (e.g. USDC), pass that token's `decimals` and `tokenCurrencyId(token)` to
|
|
103
116
|
* quote in its own terms and avoid a price-feed conversion.
|
|
117
|
+
*
|
|
118
|
+
* The quote envelope is set by the CURRENCY CONVENTION of the project's
|
|
119
|
+
* accounting contexts, not by which token it accounts in. `JBPrices` has no
|
|
120
|
+
* native special-case (`JBPrices.sol:226-246` only short-circuits same-currency
|
|
121
|
+
* pairs), so any cross-currency quote needs a registered feed. `deploy-all`
|
|
122
|
+
* registers the project-0 defaults `{ETH(1), uint32(NATIVE)}` (an identity
|
|
123
|
+
* feed) and `{ETH(1), USD(2)}` (`Deploy.s.sol:1546-1562`). So:
|
|
124
|
+
*
|
|
125
|
+
* - Native-context projects quote in ETH(1) fine.
|
|
126
|
+
* - Projects using the USD(2) currency convention for their ERC-20 contexts
|
|
127
|
+
* quote in ETH(1) fine.
|
|
128
|
+
* - Projects whose ERC-20 context is TOKEN-KEYED (`uint32(uint160(usdc))`)
|
|
129
|
+
* have no `{ETH(1), uint32(usdc)}` feed, so an ETH-denominated quote
|
|
130
|
+
* reverts.
|
|
131
|
+
*
|
|
132
|
+
* Prefer quoting each accounting context in its OWN currency
|
|
133
|
+
* (`tokenCurrencyId(context.token)` with `context.decimals`), which never needs
|
|
134
|
+
* a feed, and convert for display separately.
|
|
104
135
|
*/
|
|
105
|
-
export declare function getCashOutQuote(client: PublicClient, { chainId, projectId, cashOutCount, decimals, currency, }: {
|
|
136
|
+
export declare function getCashOutQuote(client: PublicClient, { chainId, projectId, cashOutCount, decimals, currency, cashOutTaxRate, feeFreeSurplus, beneficiaryIsFeeless, }: {
|
|
106
137
|
chainId: JBChainId;
|
|
107
138
|
projectId: bigint;
|
|
108
139
|
cashOutCount: bigint;
|
|
109
140
|
decimals?: bigint;
|
|
110
141
|
currency?: bigint;
|
|
142
|
+
cashOutTaxRate?: bigint;
|
|
143
|
+
feeFreeSurplus?: bigint;
|
|
144
|
+
beneficiaryIsFeeless?: boolean;
|
|
111
145
|
}): Promise<CashOutQuote>;
|
|
112
146
|
/**
|
|
113
147
|
* The default cash-out slippage tolerance, in basis points (1%).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cashOut.d.ts","sourceRoot":"","sources":["../../../src/v6/cashOut.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,GAAG,EACH,YAAY,EAGb,MAAM,MAAM,CAAC;AACd,OAAO,EACL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cashOut.d.ts","sourceRoot":"","sources":["../../../src/v6/cashOut.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/v6/cashOut.js
CHANGED
|
@@ -18,7 +18,6 @@ exports.prepareHookAwareCashOut = prepareHookAwareCashOut;
|
|
|
18
18
|
exports.prepareBestCashOut = prepareBestCashOut;
|
|
19
19
|
const viem_1 = require("viem");
|
|
20
20
|
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
21
|
-
const fee_js_1 = require("../utils/fee.js");
|
|
22
21
|
const hook_js_1 = require("../utils/hook.js");
|
|
23
22
|
const currency_js_1 = require("./currency.js");
|
|
24
23
|
const types_js_1 = require("./types.js");
|
|
@@ -104,14 +103,40 @@ function build721CashOutMetadata({ metadataIdTarget, tokenIds, }) {
|
|
|
104
103
|
* @param args.currency The currency to quote the reclaim amount in (an
|
|
105
104
|
* accounting-context currency, `uint32(uint160(token))`). Defaults to the native
|
|
106
105
|
* token's currency (61166).
|
|
107
|
-
* @
|
|
106
|
+
* @param args.cashOutTaxRate The ruleset's cash-out tax rate, used to gate the
|
|
107
|
+
* protocol fee (see {@link cashOutProtocolFee}). When omitted,
|
|
108
|
+
* `reclaimAmountAfterFee` is `undefined` rather than a fabricated value.
|
|
109
|
+
* @param args.feeFreeSurplus The terminal's `feeFreeSurplusOf` for the reclaimed
|
|
110
|
+
* token. Required to resolve the fee when `cashOutTaxRate` is zero.
|
|
111
|
+
* @param args.beneficiaryIsFeeless Whether the beneficiary is feeless (pays no
|
|
112
|
+
* protocol fee). Defaults to false.
|
|
113
|
+
* @returns The raw reclaim amount and, when the fee inputs are resolved, the
|
|
114
|
+
* amount net of the conditional 2.5% protocol fee.
|
|
108
115
|
*
|
|
109
116
|
* NOTE: the defaults quote in NATIVE terms (decimals 18, token-keyed native
|
|
110
117
|
* currency). For a project whose accounting token is not the native token
|
|
111
118
|
* (e.g. USDC), pass that token's `decimals` and `tokenCurrencyId(token)` to
|
|
112
119
|
* quote in its own terms and avoid a price-feed conversion.
|
|
120
|
+
*
|
|
121
|
+
* The quote envelope is set by the CURRENCY CONVENTION of the project's
|
|
122
|
+
* accounting contexts, not by which token it accounts in. `JBPrices` has no
|
|
123
|
+
* native special-case (`JBPrices.sol:226-246` only short-circuits same-currency
|
|
124
|
+
* pairs), so any cross-currency quote needs a registered feed. `deploy-all`
|
|
125
|
+
* registers the project-0 defaults `{ETH(1), uint32(NATIVE)}` (an identity
|
|
126
|
+
* feed) and `{ETH(1), USD(2)}` (`Deploy.s.sol:1546-1562`). So:
|
|
127
|
+
*
|
|
128
|
+
* - Native-context projects quote in ETH(1) fine.
|
|
129
|
+
* - Projects using the USD(2) currency convention for their ERC-20 contexts
|
|
130
|
+
* quote in ETH(1) fine.
|
|
131
|
+
* - Projects whose ERC-20 context is TOKEN-KEYED (`uint32(uint160(usdc))`)
|
|
132
|
+
* have no `{ETH(1), uint32(usdc)}` feed, so an ETH-denominated quote
|
|
133
|
+
* reverts.
|
|
134
|
+
*
|
|
135
|
+
* Prefer quoting each accounting context in its OWN currency
|
|
136
|
+
* (`tokenCurrencyId(context.token)` with `context.decimals`), which never needs
|
|
137
|
+
* a feed, and convert for display separately.
|
|
113
138
|
*/
|
|
114
|
-
async function getCashOutQuote(client, { chainId, projectId, cashOutCount, decimals = 18n, currency = BigInt(currency_js_1.NATIVE_TOKEN_CURRENCY_ID), }) {
|
|
139
|
+
async function getCashOutQuote(client, { chainId, projectId, cashOutCount, decimals = 18n, currency = BigInt(currency_js_1.NATIVE_TOKEN_CURRENCY_ID), cashOutTaxRate, feeFreeSurplus, beneficiaryIsFeeless = false, }) {
|
|
115
140
|
const reclaimAmount = await client.readContract({
|
|
116
141
|
address: (0, types_js_1.v6Address)("JBTerminalStore", chainId),
|
|
117
142
|
abi: juicebox_js_1.jbTerminalStoreAbi,
|
|
@@ -120,9 +145,34 @@ async function getCashOutQuote(client, { chainId, projectId, cashOutCount, decim
|
|
|
120
145
|
});
|
|
121
146
|
return {
|
|
122
147
|
reclaimAmount,
|
|
123
|
-
reclaimAmountAfterFee: (
|
|
148
|
+
reclaimAmountAfterFee: resolvedReclaimAmountAfterFee({
|
|
149
|
+
reclaimAmount,
|
|
150
|
+
cashOutTaxRate,
|
|
151
|
+
feeFreeSurplus,
|
|
152
|
+
beneficiaryIsFeeless,
|
|
153
|
+
}),
|
|
124
154
|
};
|
|
125
155
|
}
|
|
156
|
+
/**
|
|
157
|
+
* The reclaim net of the protocol fee, or `undefined` while the fee-gating
|
|
158
|
+
* inputs are unresolved (never a fabricated value): the fee needs the ruleset's
|
|
159
|
+
* `cashOutTaxRate`, and — when that rate is zero — the terminal's
|
|
160
|
+
* `feeFreeSurplusOf` too. Feeless beneficiaries resolve without either.
|
|
161
|
+
*/
|
|
162
|
+
function resolvedReclaimAmountAfterFee({ reclaimAmount, cashOutTaxRate, feeFreeSurplus, beneficiaryIsFeeless, }) {
|
|
163
|
+
if (beneficiaryIsFeeless)
|
|
164
|
+
return reclaimAmount;
|
|
165
|
+
if (cashOutTaxRate === undefined)
|
|
166
|
+
return undefined;
|
|
167
|
+
if (cashOutTaxRate === 0n && feeFreeSurplus === undefined)
|
|
168
|
+
return undefined;
|
|
169
|
+
return (reclaimAmount -
|
|
170
|
+
cashOutProtocolFee({
|
|
171
|
+
reclaimAmount,
|
|
172
|
+
cashOutTaxRate,
|
|
173
|
+
feeFreeSurplus: feeFreeSurplus ?? 0n,
|
|
174
|
+
}));
|
|
175
|
+
}
|
|
126
176
|
/**
|
|
127
177
|
* The default cash-out slippage tolerance, in basis points (1%).
|
|
128
178
|
*
|