@bananapus/nana-sdk-core 1.11.1 → 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 +11 -7
- package/dist/cjs/v6/nft.d.ts.map +1 -1
- package/dist/cjs/v6/nft.js +26 -11
- 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 +11 -7
- package/dist/esm/v6/nft.d.ts.map +1 -1
- package/dist/esm/v6/nft.js +26 -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
package/dist/esm/utils/ipfs.js
CHANGED
|
@@ -7,8 +7,20 @@ function validatedIpfsAssetPath(value) {
|
|
|
7
7
|
const cid = value.split("/")[0];
|
|
8
8
|
return cid && isIpfsCid(cid) ? value : null;
|
|
9
9
|
}
|
|
10
|
+
/**
|
|
11
|
+
* An HTTP gateway URL for a CID (optionally with a path), or `null` when
|
|
12
|
+
* `cid` is not a CID.
|
|
13
|
+
*
|
|
14
|
+
* Fails closed rather than interpolating whatever it was handed: the previous
|
|
15
|
+
* signature accepted `undefined` and happily returned
|
|
16
|
+
* `https://ipfs.io/ipfs/undefined`, a 4xx fetch far from its source.
|
|
17
|
+
*/
|
|
10
18
|
export function ipfsGatewayUrl(cid, gatewayHostname) {
|
|
11
|
-
|
|
19
|
+
// Guarded at runtime too: JS callers were the ones passing `undefined`.
|
|
20
|
+
const assetPath = typeof cid === "string" ? validatedIpfsAssetPath(cid.trim()) : null;
|
|
21
|
+
if (!assetPath)
|
|
22
|
+
return null;
|
|
23
|
+
return `https://${gatewayHostname ?? PUBLIC_IPFS_GATEWAY_HOSTNAME}/ipfs/${assetPath}`;
|
|
12
24
|
}
|
|
13
25
|
/** Return an `ipfs://` URI for a CID and optional path. */
|
|
14
26
|
export function ipfsUri(cid, path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipfs.js","sourceRoot":"","sources":["../../../src/utils/ipfs.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,MAAM,4BAA4B,GAAG,SAAS,CAAC;AAC/C,MAAM,eAAe,GAAG,SAAS,CAAC;AAClC,MAAM,yBAAyB,GAAG,IAAI,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAC/D,MAAM,eAAe,GAAG,kCAAkC,CAAC;AAE3D,SAAS,sBAAsB,CAAC,KAAa;IAC3C,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,OAAO,GAAG,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,
|
|
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/esm/utils/revnet.js
CHANGED
|
@@ -6,7 +6,8 @@ const MIN_PREPAID_FEE = 25n;
|
|
|
6
6
|
// The divisor (max months) as a BigInt for the calculation.
|
|
7
7
|
const MAX_PREPAYMENT_MONTHS_BIGINT = 120n;
|
|
8
8
|
export function calcPrepaidFee(monthsToPrePay) {
|
|
9
|
-
const calcd = (BigInt(monthsToPrePay) * MAX_PREPAID_FEE_PERCENT_BIGINT) /
|
|
9
|
+
const calcd = (BigInt(monthsToPrePay) * MAX_PREPAID_FEE_PERCENT_BIGINT) /
|
|
10
|
+
MAX_PREPAYMENT_MONTHS_BIGINT +
|
|
10
11
|
MIN_PREPAID_FEE;
|
|
11
12
|
if (calcd < MIN_PREPAID_FEE) {
|
|
12
13
|
return MIN_PREPAID_FEE;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"revnet.js","sourceRoot":"","sources":["../../../src/utils/revnet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;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,MAAM,UAAU,cAAc,CAAC,cAAsB;IACnD,MAAM,KAAK,GACT,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,8BAA8B,CAAC,
|
|
1
|
+
{"version":3,"file":"revnet.js","sourceRoot":"","sources":["../../../src/utils/revnet.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;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,MAAM,UAAU,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,MAAM,UAAU,qBAAqB,CAAC,OAAkB,EAAE,OAAkB;IAC1E,OAAO,OAAO,KAAK,CAAC;QAClB,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC;QAC9C,CAAC,CAAC,iBAAiB,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"}
|
|
@@ -4,6 +4,13 @@ import { MAX_WEIGHT_CUT_PERCENT } from "../constants.js";
|
|
|
4
4
|
*
|
|
5
5
|
* Useful when projecting a project's future Token B price.
|
|
6
6
|
* E.g. "In the next ruleset, how much will Token B cost, given the new Weight?"
|
|
7
|
+
*
|
|
8
|
+
* Projects ONE cycle. `JBRulesets` applies the cut once per elapsed cycle
|
|
9
|
+
* (`JBRulesets.sol:685-690`), so this is not the weight `n` cycles out. It also
|
|
10
|
+
* does not model the weight-1 "inherit the previous weight" sentinel
|
|
11
|
+
* (`JBRulesets.sol:822-824`) — for a ruleset whose configured weight may still
|
|
12
|
+
* be `RULESET_WEIGHT_INHERIT`, use `resolveRulesetIssuanceStages` from
|
|
13
|
+
* `@bananapus/nana-sdk-core/v6` first.
|
|
7
14
|
*/
|
|
8
15
|
export function getNextRulesetWeight(currentRuleset) {
|
|
9
16
|
const nextRulesetWeight = (currentRuleset.weight *
|
|
@@ -13,8 +20,20 @@ export function getNextRulesetWeight(currentRuleset) {
|
|
|
13
20
|
}
|
|
14
21
|
/**
|
|
15
22
|
* Derive the previous ruleset's Weight value from the current ruleset.
|
|
23
|
+
*
|
|
24
|
+
* The inverse of {@link getNextRulesetWeight}, with the same one-cycle and
|
|
25
|
+
* sentinel caveats, and lossy by floor division.
|
|
26
|
+
*
|
|
27
|
+
* @throws {RangeError} When `weightCutPercent` is 100% (`MAX_WEIGHT_CUT_PERCENT`).
|
|
28
|
+
* A full cut sends every subsequent weight to 0, so no previous weight can be
|
|
29
|
+
* recovered from the current one — the inverse has no value to return.
|
|
16
30
|
*/
|
|
17
31
|
export function getPrevRulesetWeight(currentRuleset) {
|
|
32
|
+
// A 100% cut is a legal on-chain value (`JBRulesets.sol:139` rejects only
|
|
33
|
+
// `> MAX_WEIGHT_CUT_PERCENT`), so this is a reachable input, not an assert.
|
|
34
|
+
if (currentRuleset.weightCutPercent === MAX_WEIGHT_CUT_PERCENT) {
|
|
35
|
+
throw new RangeError("A 100% weightCutPercent has no invertible previous weight.");
|
|
36
|
+
}
|
|
18
37
|
// reverse of getNextRulesetWeight
|
|
19
38
|
const prevRulesetWeight = (currentRuleset.weight * BigInt(MAX_WEIGHT_CUT_PERCENT)) /
|
|
20
39
|
BigInt(MAX_WEIGHT_CUT_PERCENT - currentRuleset.weightCutPercent);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ruleset.js","sourceRoot":"","sources":["../../../src/utils/ruleset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD
|
|
1
|
+
{"version":3,"file":"ruleset.js","sourceRoot":"","sources":["../../../src/utils/ruleset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,oBAAoB,CAAC,cAGpC;IACC,MAAM,iBAAiB,GACrB,CAAC,cAAc,CAAC,MAAM;QACpB,MAAM,CAAC,sBAAsB,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACnE,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAEjC,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,cAGpC;IACC,0EAA0E;IAC1E,4EAA4E;IAC5E,IAAI,cAAc,CAAC,gBAAgB,KAAK,sBAAsB,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,sBAAsB,CAAC,CAAC;QACxD,MAAM,CAAC,sBAAsB,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAEnE,OAAO,iBAAiB,CAAC;AAC3B,CAAC"}
|
package/dist/esm/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/esm/utils/tx.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { toHex } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* A fresh 32-byte salt.
|
|
4
|
+
*
|
|
5
|
+
* Uses the platform CSPRNG and fills all 32 bytes. The previous implementation
|
|
6
|
+
* hexed `Math.random()` and right-padded it to 32 bytes, which put ~52 bits of
|
|
7
|
+
* non-cryptographic entropy in the HIGH bytes and left the rest zero — and
|
|
8
|
+
* these salts seed the deterministic addresses of omnichain suckers and project
|
|
9
|
+
* ERC-20s, where a collision or a prediction is not recoverable.
|
|
10
|
+
*/
|
|
2
11
|
export function createSalt() {
|
|
3
|
-
|
|
4
|
-
const salt = toHex(toBytes(base, { size: 32 }));
|
|
5
|
-
return salt;
|
|
12
|
+
return toHex(crypto.getRandomValues(new Uint8Array(32)));
|
|
6
13
|
}
|
|
7
14
|
//# sourceMappingURL=tx.js.map
|
package/dist/esm/utils/tx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../../../src/utils/tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"tx.js","sourceRoot":"","sources":["../../../src/utils/tx.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE7B;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
package/dist/esm/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/esm/utils/urn.js
CHANGED
|
@@ -1,45 +1,67 @@
|
|
|
1
1
|
import { JB_CHAIN_SLUGS } from "../constants.js";
|
|
2
|
+
/** The version a versionless URN (`eth:3`) is understood to name. */
|
|
3
|
+
const DEFAULT_URN_VERSION = 4;
|
|
4
|
+
/**
|
|
5
|
+
* Parse a Juicebox project URN.
|
|
6
|
+
*
|
|
7
|
+
* Two shapes are accepted: `<chainSlug>:<projectId>` (implicitly
|
|
8
|
+
* {@link DEFAULT_URN_VERSION}) and `v<version>:<chainSlug>:<projectId>`.
|
|
9
|
+
* `projectId` must be decimal digits naming a real project id (`>= 1`) — hex
|
|
10
|
+
* (`0x123`) and any other `BigInt`-coercible spelling are rejected rather than
|
|
11
|
+
* silently reinterpreted.
|
|
12
|
+
*/
|
|
2
13
|
export function jbUrn(urn) {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
if (!urlParts[0].startsWith("v"))
|
|
19
|
-
return null;
|
|
20
|
-
version = Number(urlParts[0].replace("v", ""));
|
|
21
|
-
chainSlug = urlParts[1];
|
|
22
|
-
projectId = urlParts[2];
|
|
23
|
-
}
|
|
24
|
-
const chain = JB_CHAIN_SLUGS[chainSlug];
|
|
25
|
-
if (!chain || !projectId || !isValidVersion(version))
|
|
14
|
+
const urlParts = urn.split(":").map((part) => part.trim());
|
|
15
|
+
if (urlParts.length < 2 || urlParts.length > 3)
|
|
16
|
+
return null;
|
|
17
|
+
let chainSlug;
|
|
18
|
+
let version;
|
|
19
|
+
let projectId;
|
|
20
|
+
if (urlParts.length === 2) {
|
|
21
|
+
// Versionless [/eth:3]
|
|
22
|
+
version = DEFAULT_URN_VERSION;
|
|
23
|
+
chainSlug = urlParts[0];
|
|
24
|
+
projectId = urlParts[1];
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
// With version [/v5:eth:3]
|
|
28
|
+
if (!urlParts[0].startsWith("v"))
|
|
26
29
|
return null;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
version,
|
|
31
|
-
};
|
|
30
|
+
version = Number(urlParts[0].replace("v", ""));
|
|
31
|
+
chainSlug = urlParts[1];
|
|
32
|
+
projectId = urlParts[2];
|
|
32
33
|
}
|
|
33
|
-
|
|
34
|
+
const chain = JB_CHAIN_SLUGS[chainSlug];
|
|
35
|
+
if (!chain || !isProjectIdDigits(projectId) || !isValidVersion(version)) {
|
|
34
36
|
return null;
|
|
35
37
|
}
|
|
38
|
+
return {
|
|
39
|
+
chainId: chain.chain.id,
|
|
40
|
+
projectId: BigInt(projectId),
|
|
41
|
+
version,
|
|
42
|
+
};
|
|
36
43
|
}
|
|
37
|
-
|
|
44
|
+
/**
|
|
45
|
+
* Format a Juicebox project URN.
|
|
46
|
+
*
|
|
47
|
+
* The version prefix is emitted whenever `version` is not
|
|
48
|
+
* {@link DEFAULT_URN_VERSION}, so a v5/v6 project round-trips through
|
|
49
|
+
* {@link jbUrn} as itself rather than collapsing into the v4 tables.
|
|
50
|
+
*
|
|
51
|
+
* Returns `null` for an unsupported chain, an unsupported version, or a
|
|
52
|
+
* `projectId` that {@link jbUrn} could not parse back (`<= 0`).
|
|
53
|
+
*/
|
|
54
|
+
export function toJbUrn(chainId, projectId, version = DEFAULT_URN_VERSION) {
|
|
38
55
|
const chain = Object.values(JB_CHAIN_SLUGS).find((chain) => chain.chain.id === chainId);
|
|
39
|
-
if (!chain) {
|
|
56
|
+
if (!chain || projectId <= 0n || !isValidVersion(version)) {
|
|
40
57
|
return null;
|
|
41
58
|
}
|
|
42
|
-
|
|
59
|
+
const prefix = version === DEFAULT_URN_VERSION ? "" : `v${version}:`;
|
|
60
|
+
return `${prefix}${chain.slug}:${projectId}`;
|
|
61
|
+
}
|
|
62
|
+
/** Whether `value` is decimal digits naming a real project id (`>= 1`). */
|
|
63
|
+
function isProjectIdDigits(value) {
|
|
64
|
+
return typeof value === "string" && /^\d+$/.test(value) && BigInt(value) > 0n;
|
|
43
65
|
}
|
|
44
66
|
function isValidVersion(version) {
|
|
45
67
|
return version === 4 || version === 5 || version === 6;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/utils/urn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,MAAM,UAAU,KAAK,CAAC,GAAW;IAK/B,
|
|
1
|
+
{"version":3,"file":"urn.js","sourceRoot":"","sources":["../../../src/utils/urn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAGjD,qEAAqE;AACrE,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAE9B;;;;;;;;GAQG;AACH,MAAM,UAAU,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,cAAc,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,MAAM,UAAU,OAAO,CACrB,OAAkB,EAClB,SAAiB,EACjB,UAAqB,mBAAmB;IAExC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,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/esm/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/esm/v6/cashOut.js
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { decodeAbiParameters, encodeAbiParameters, } from "viem";
|
|
2
2
|
import { jbMultiTerminalAbi, jbTerminalStoreAbi, } from "../generated/juicebox.js";
|
|
3
|
-
import { applyJbDaoCashOutFee } from "../utils/fee.js";
|
|
4
3
|
import { createHookMetadata, hookMetadataId } from "../utils/hook.js";
|
|
5
4
|
import { NATIVE_TOKEN_CURRENCY_ID } from "./currency.js";
|
|
6
5
|
import { v6Address } from "./types.js";
|
|
@@ -86,14 +85,40 @@ export function build721CashOutMetadata({ metadataIdTarget, tokenIds, }) {
|
|
|
86
85
|
* @param args.currency The currency to quote the reclaim amount in (an
|
|
87
86
|
* accounting-context currency, `uint32(uint160(token))`). Defaults to the native
|
|
88
87
|
* token's currency (61166).
|
|
89
|
-
* @
|
|
88
|
+
* @param args.cashOutTaxRate The ruleset's cash-out tax rate, used to gate the
|
|
89
|
+
* protocol fee (see {@link cashOutProtocolFee}). When omitted,
|
|
90
|
+
* `reclaimAmountAfterFee` is `undefined` rather than a fabricated value.
|
|
91
|
+
* @param args.feeFreeSurplus The terminal's `feeFreeSurplusOf` for the reclaimed
|
|
92
|
+
* token. Required to resolve the fee when `cashOutTaxRate` is zero.
|
|
93
|
+
* @param args.beneficiaryIsFeeless Whether the beneficiary is feeless (pays no
|
|
94
|
+
* protocol fee). Defaults to false.
|
|
95
|
+
* @returns The raw reclaim amount and, when the fee inputs are resolved, the
|
|
96
|
+
* amount net of the conditional 2.5% protocol fee.
|
|
90
97
|
*
|
|
91
98
|
* NOTE: the defaults quote in NATIVE terms (decimals 18, token-keyed native
|
|
92
99
|
* currency). For a project whose accounting token is not the native token
|
|
93
100
|
* (e.g. USDC), pass that token's `decimals` and `tokenCurrencyId(token)` to
|
|
94
101
|
* quote in its own terms and avoid a price-feed conversion.
|
|
102
|
+
*
|
|
103
|
+
* The quote envelope is set by the CURRENCY CONVENTION of the project's
|
|
104
|
+
* accounting contexts, not by which token it accounts in. `JBPrices` has no
|
|
105
|
+
* native special-case (`JBPrices.sol:226-246` only short-circuits same-currency
|
|
106
|
+
* pairs), so any cross-currency quote needs a registered feed. `deploy-all`
|
|
107
|
+
* registers the project-0 defaults `{ETH(1), uint32(NATIVE)}` (an identity
|
|
108
|
+
* feed) and `{ETH(1), USD(2)}` (`Deploy.s.sol:1546-1562`). So:
|
|
109
|
+
*
|
|
110
|
+
* - Native-context projects quote in ETH(1) fine.
|
|
111
|
+
* - Projects using the USD(2) currency convention for their ERC-20 contexts
|
|
112
|
+
* quote in ETH(1) fine.
|
|
113
|
+
* - Projects whose ERC-20 context is TOKEN-KEYED (`uint32(uint160(usdc))`)
|
|
114
|
+
* have no `{ETH(1), uint32(usdc)}` feed, so an ETH-denominated quote
|
|
115
|
+
* reverts.
|
|
116
|
+
*
|
|
117
|
+
* Prefer quoting each accounting context in its OWN currency
|
|
118
|
+
* (`tokenCurrencyId(context.token)` with `context.decimals`), which never needs
|
|
119
|
+
* a feed, and convert for display separately.
|
|
95
120
|
*/
|
|
96
|
-
export async function getCashOutQuote(client, { chainId, projectId, cashOutCount, decimals = 18n, currency = BigInt(NATIVE_TOKEN_CURRENCY_ID), }) {
|
|
121
|
+
export async function getCashOutQuote(client, { chainId, projectId, cashOutCount, decimals = 18n, currency = BigInt(NATIVE_TOKEN_CURRENCY_ID), cashOutTaxRate, feeFreeSurplus, beneficiaryIsFeeless = false, }) {
|
|
97
122
|
const reclaimAmount = await client.readContract({
|
|
98
123
|
address: v6Address("JBTerminalStore", chainId),
|
|
99
124
|
abi: jbTerminalStoreAbi,
|
|
@@ -102,9 +127,34 @@ export async function getCashOutQuote(client, { chainId, projectId, cashOutCount
|
|
|
102
127
|
});
|
|
103
128
|
return {
|
|
104
129
|
reclaimAmount,
|
|
105
|
-
reclaimAmountAfterFee:
|
|
130
|
+
reclaimAmountAfterFee: resolvedReclaimAmountAfterFee({
|
|
131
|
+
reclaimAmount,
|
|
132
|
+
cashOutTaxRate,
|
|
133
|
+
feeFreeSurplus,
|
|
134
|
+
beneficiaryIsFeeless,
|
|
135
|
+
}),
|
|
106
136
|
};
|
|
107
137
|
}
|
|
138
|
+
/**
|
|
139
|
+
* The reclaim net of the protocol fee, or `undefined` while the fee-gating
|
|
140
|
+
* inputs are unresolved (never a fabricated value): the fee needs the ruleset's
|
|
141
|
+
* `cashOutTaxRate`, and — when that rate is zero — the terminal's
|
|
142
|
+
* `feeFreeSurplusOf` too. Feeless beneficiaries resolve without either.
|
|
143
|
+
*/
|
|
144
|
+
function resolvedReclaimAmountAfterFee({ reclaimAmount, cashOutTaxRate, feeFreeSurplus, beneficiaryIsFeeless, }) {
|
|
145
|
+
if (beneficiaryIsFeeless)
|
|
146
|
+
return reclaimAmount;
|
|
147
|
+
if (cashOutTaxRate === undefined)
|
|
148
|
+
return undefined;
|
|
149
|
+
if (cashOutTaxRate === 0n && feeFreeSurplus === undefined)
|
|
150
|
+
return undefined;
|
|
151
|
+
return (reclaimAmount -
|
|
152
|
+
cashOutProtocolFee({
|
|
153
|
+
reclaimAmount,
|
|
154
|
+
cashOutTaxRate,
|
|
155
|
+
feeFreeSurplus: feeFreeSurplus ?? 0n,
|
|
156
|
+
}));
|
|
157
|
+
}
|
|
108
158
|
/**
|
|
109
159
|
* The default cash-out slippage tolerance, in basis points (1%).
|
|
110
160
|
*
|