@bananapus/nana-sdk-core 1.3.0 → 1.4.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/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 +33 -1
- package/dist/cjs/utils/ipfs.d.ts.map +1 -1
- package/dist/cjs/utils/ipfs.js +212 -8
- package/dist/cjs/utils/ipfs.js.map +1 -1
- package/dist/cjs/utils/token.d.ts +2 -2
- package/dist/cjs/utils/token.d.ts.map +1 -1
- package/dist/cjs/utils/token.js +30 -9
- package/dist/cjs/utils/token.js.map +1 -1
- package/dist/cjs/v6/index.d.ts +2 -0
- package/dist/cjs/v6/index.d.ts.map +1 -1
- package/dist/cjs/v6/index.js +2 -0
- package/dist/cjs/v6/index.js.map +1 -1
- package/dist/cjs/v6/launch.d.ts +23 -2
- package/dist/cjs/v6/launch.d.ts.map +1 -1
- package/dist/cjs/v6/launch.js +40 -1
- package/dist/cjs/v6/launch.js.map +1 -1
- package/dist/cjs/v6/nft.d.ts +67 -0
- package/dist/cjs/v6/nft.d.ts.map +1 -1
- package/dist/cjs/v6/nft.js +192 -2
- package/dist/cjs/v6/nft.js.map +1 -1
- package/dist/cjs/v6/permissions.d.ts +21 -0
- package/dist/cjs/v6/permissions.d.ts.map +1 -1
- package/dist/cjs/v6/permissions.js +44 -1
- package/dist/cjs/v6/permissions.js.map +1 -1
- package/dist/cjs/v6/projectPayers.d.ts +178 -0
- package/dist/cjs/v6/projectPayers.d.ts.map +1 -0
- package/dist/cjs/v6/projectPayers.js +108 -0
- package/dist/cjs/v6/projectPayers.js.map +1 -0
- package/dist/cjs/v6/revnets.d.ts +3 -2
- package/dist/cjs/v6/revnets.d.ts.map +1 -1
- package/dist/cjs/v6/revnets.js +3 -2
- package/dist/cjs/v6/revnets.js.map +1 -1
- package/dist/cjs/v6/rulesets.d.ts +42 -0
- package/dist/cjs/v6/rulesets.d.ts.map +1 -1
- package/dist/cjs/v6/rulesets.js +87 -0
- package/dist/cjs/v6/rulesets.js.map +1 -1
- package/dist/cjs/v6/suckers.d.ts +740 -2
- package/dist/cjs/v6/suckers.d.ts.map +1 -1
- package/dist/cjs/v6/suckers.js +647 -8
- package/dist/cjs/v6/suckers.js.map +1 -1
- package/dist/cjs/v6/uniswapV4.d.ts +82 -0
- package/dist/cjs/v6/uniswapV4.d.ts.map +1 -0
- package/dist/cjs/v6/uniswapV4.js +336 -0
- package/dist/cjs/v6/uniswapV4.js.map +1 -0
- 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 +33 -1
- package/dist/esm/utils/ipfs.d.ts.map +1 -1
- package/dist/esm/utils/ipfs.js +204 -8
- package/dist/esm/utils/ipfs.js.map +1 -1
- package/dist/esm/utils/token.d.ts +2 -2
- package/dist/esm/utils/token.d.ts.map +1 -1
- package/dist/esm/utils/token.js +30 -9
- package/dist/esm/utils/token.js.map +1 -1
- package/dist/esm/v6/index.d.ts +2 -0
- package/dist/esm/v6/index.d.ts.map +1 -1
- package/dist/esm/v6/index.js +2 -0
- package/dist/esm/v6/index.js.map +1 -1
- package/dist/esm/v6/launch.d.ts +23 -2
- package/dist/esm/v6/launch.d.ts.map +1 -1
- package/dist/esm/v6/launch.js +39 -2
- package/dist/esm/v6/launch.js.map +1 -1
- package/dist/esm/v6/nft.d.ts +67 -0
- package/dist/esm/v6/nft.d.ts.map +1 -1
- package/dist/esm/v6/nft.js +183 -1
- package/dist/esm/v6/nft.js.map +1 -1
- package/dist/esm/v6/permissions.d.ts +21 -0
- package/dist/esm/v6/permissions.d.ts.map +1 -1
- package/dist/esm/v6/permissions.js +40 -0
- package/dist/esm/v6/permissions.js.map +1 -1
- package/dist/esm/v6/projectPayers.d.ts +178 -0
- package/dist/esm/v6/projectPayers.d.ts.map +1 -0
- package/dist/esm/v6/projectPayers.js +101 -0
- package/dist/esm/v6/projectPayers.js.map +1 -0
- package/dist/esm/v6/revnets.d.ts +3 -2
- package/dist/esm/v6/revnets.d.ts.map +1 -1
- package/dist/esm/v6/revnets.js +3 -2
- package/dist/esm/v6/revnets.js.map +1 -1
- package/dist/esm/v6/rulesets.d.ts +42 -0
- package/dist/esm/v6/rulesets.d.ts.map +1 -1
- package/dist/esm/v6/rulesets.js +83 -0
- package/dist/esm/v6/rulesets.js.map +1 -1
- package/dist/esm/v6/suckers.d.ts +740 -2
- package/dist/esm/v6/suckers.d.ts.map +1 -1
- package/dist/esm/v6/suckers.js +630 -8
- package/dist/esm/v6/suckers.js.map +1 -1
- package/dist/esm/v6/uniswapV4.d.ts +82 -0
- package/dist/esm/v6/uniswapV4.d.ts.map +1 -0
- package/dist/esm/v6/uniswapV4.js +318 -0
- package/dist/esm/v6/uniswapV4.js.map +1 -0
- package/package.json +17 -10
- package/dist/cjs/utils/data.test.d.ts +0 -2
- package/dist/cjs/utils/data.test.d.ts.map +0 -1
- package/dist/cjs/utils/data.test.js +0 -27
- package/dist/cjs/utils/data.test.js.map +0 -1
- package/dist/cjs/utils/deploy.test.d.ts +0 -2
- package/dist/cjs/utils/deploy.test.d.ts.map +0 -1
- package/dist/cjs/utils/deploy.test.js +0 -65
- package/dist/cjs/utils/deploy.test.js.map +0 -1
- package/dist/cjs/utils/fee.test.d.ts +0 -2
- package/dist/cjs/utils/fee.test.d.ts.map +0 -1
- package/dist/cjs/utils/fee.test.js +0 -11
- package/dist/cjs/utils/fee.test.js.map +0 -1
- package/dist/cjs/utils/format.test.d.ts +0 -2
- package/dist/cjs/utils/format.test.d.ts.map +0 -1
- package/dist/cjs/utils/format.test.js +0 -27
- package/dist/cjs/utils/format.test.js.map +0 -1
- package/dist/cjs/utils/ipfs.test.d.ts +0 -2
- package/dist/cjs/utils/ipfs.test.d.ts.map +0 -1
- package/dist/cjs/utils/ipfs.test.js +0 -33
- package/dist/cjs/utils/ipfs.test.js.map +0 -1
- package/dist/cjs/utils/revnet.test.d.ts +0 -2
- package/dist/cjs/utils/revnet.test.d.ts.map +0 -1
- package/dist/cjs/utils/revnet.test.js +0 -12
- package/dist/cjs/utils/revnet.test.js.map +0 -1
- package/dist/cjs/utils/ruleset.test.d.ts +0 -2
- package/dist/cjs/utils/ruleset.test.d.ts.map +0 -1
- package/dist/cjs/utils/ruleset.test.js +0 -23
- package/dist/cjs/utils/ruleset.test.js.map +0 -1
- package/dist/cjs/utils/token.test.d.ts +0 -2
- package/dist/cjs/utils/token.test.d.ts.map +0 -1
- package/dist/cjs/utils/token.test.js +0 -40
- package/dist/cjs/utils/token.test.js.map +0 -1
- package/dist/cjs/utils/urn.test.d.ts +0 -2
- package/dist/cjs/utils/urn.test.d.ts.map +0 -1
- package/dist/cjs/utils/urn.test.js +0 -114
- package/dist/cjs/utils/urn.test.js.map +0 -1
- package/dist/cjs/v6/cashOut.test.d.ts +0 -2
- package/dist/cjs/v6/cashOut.test.d.ts.map +0 -1
- package/dist/cjs/v6/cashOut.test.js +0 -122
- package/dist/cjs/v6/cashOut.test.js.map +0 -1
- package/dist/cjs/v6/currency.test.d.ts +0 -2
- package/dist/cjs/v6/currency.test.d.ts.map +0 -1
- package/dist/cjs/v6/currency.test.js +0 -26
- package/dist/cjs/v6/currency.test.js.map +0 -1
- package/dist/cjs/v6/fees.test.d.ts +0 -2
- package/dist/cjs/v6/fees.test.d.ts.map +0 -1
- package/dist/cjs/v6/fees.test.js +0 -40
- package/dist/cjs/v6/fees.test.js.map +0 -1
- package/dist/cjs/v6/launch.test.d.ts +0 -2
- package/dist/cjs/v6/launch.test.d.ts.map +0 -1
- package/dist/cjs/v6/launch.test.js +0 -137
- package/dist/cjs/v6/launch.test.js.map +0 -1
- package/dist/cjs/v6/loans.test.d.ts +0 -2
- package/dist/cjs/v6/loans.test.d.ts.map +0 -1
- package/dist/cjs/v6/loans.test.js +0 -129
- package/dist/cjs/v6/loans.test.js.map +0 -1
- package/dist/cjs/v6/nft.test.d.ts +0 -2
- package/dist/cjs/v6/nft.test.d.ts.map +0 -1
- package/dist/cjs/v6/nft.test.js +0 -206
- package/dist/cjs/v6/nft.test.js.map +0 -1
- package/dist/cjs/v6/omnichain.test.d.ts +0 -2
- package/dist/cjs/v6/omnichain.test.d.ts.map +0 -1
- package/dist/cjs/v6/omnichain.test.js +0 -145
- package/dist/cjs/v6/omnichain.test.js.map +0 -1
- package/dist/cjs/v6/pay.test.d.ts +0 -2
- package/dist/cjs/v6/pay.test.d.ts.map +0 -1
- package/dist/cjs/v6/pay.test.js +0 -137
- package/dist/cjs/v6/pay.test.js.map +0 -1
- package/dist/cjs/v6/permissions.test.d.ts +0 -2
- package/dist/cjs/v6/permissions.test.d.ts.map +0 -1
- package/dist/cjs/v6/permissions.test.js +0 -117
- package/dist/cjs/v6/permissions.test.js.map +0 -1
- package/dist/cjs/v6/revnets.test.d.ts +0 -2
- package/dist/cjs/v6/revnets.test.d.ts.map +0 -1
- package/dist/cjs/v6/revnets.test.js +0 -233
- package/dist/cjs/v6/revnets.test.js.map +0 -1
- package/dist/cjs/v6/rulesets.test.d.ts +0 -2
- package/dist/cjs/v6/rulesets.test.d.ts.map +0 -1
- package/dist/cjs/v6/rulesets.test.js +0 -106
- package/dist/cjs/v6/rulesets.test.js.map +0 -1
- package/dist/cjs/v6/splits.test.d.ts +0 -2
- package/dist/cjs/v6/splits.test.d.ts.map +0 -1
- package/dist/cjs/v6/splits.test.js +0 -135
- package/dist/cjs/v6/splits.test.js.map +0 -1
- package/dist/cjs/v6/suckers.test.d.ts +0 -2
- package/dist/cjs/v6/suckers.test.d.ts.map +0 -1
- package/dist/cjs/v6/suckers.test.js +0 -134
- package/dist/cjs/v6/suckers.test.js.map +0 -1
- package/dist/cjs/v6/terminals.test.d.ts +0 -2
- package/dist/cjs/v6/terminals.test.d.ts.map +0 -1
- package/dist/cjs/v6/terminals.test.js +0 -59
- package/dist/cjs/v6/terminals.test.js.map +0 -1
- package/dist/cjs/v6/tokens.test.d.ts +0 -2
- package/dist/cjs/v6/tokens.test.d.ts.map +0 -1
- package/dist/cjs/v6/tokens.test.js +0 -141
- package/dist/cjs/v6/tokens.test.js.map +0 -1
- package/dist/esm/utils/data.test.d.ts +0 -2
- package/dist/esm/utils/data.test.d.ts.map +0 -1
- package/dist/esm/utils/data.test.js +0 -25
- package/dist/esm/utils/data.test.js.map +0 -1
- package/dist/esm/utils/deploy.test.d.ts +0 -2
- package/dist/esm/utils/deploy.test.d.ts.map +0 -1
- package/dist/esm/utils/deploy.test.js +0 -63
- package/dist/esm/utils/deploy.test.js.map +0 -1
- package/dist/esm/utils/fee.test.d.ts +0 -2
- package/dist/esm/utils/fee.test.d.ts.map +0 -1
- package/dist/esm/utils/fee.test.js +0 -9
- package/dist/esm/utils/fee.test.js.map +0 -1
- package/dist/esm/utils/format.test.d.ts +0 -2
- package/dist/esm/utils/format.test.d.ts.map +0 -1
- package/dist/esm/utils/format.test.js +0 -25
- package/dist/esm/utils/format.test.js.map +0 -1
- package/dist/esm/utils/ipfs.test.d.ts +0 -2
- package/dist/esm/utils/ipfs.test.d.ts.map +0 -1
- package/dist/esm/utils/ipfs.test.js +0 -28
- package/dist/esm/utils/ipfs.test.js.map +0 -1
- package/dist/esm/utils/revnet.test.d.ts +0 -2
- package/dist/esm/utils/revnet.test.d.ts.map +0 -1
- package/dist/esm/utils/revnet.test.js +0 -10
- package/dist/esm/utils/revnet.test.js.map +0 -1
- package/dist/esm/utils/ruleset.test.d.ts +0 -2
- package/dist/esm/utils/ruleset.test.d.ts.map +0 -1
- package/dist/esm/utils/ruleset.test.js +0 -21
- package/dist/esm/utils/ruleset.test.js.map +0 -1
- package/dist/esm/utils/token.test.d.ts +0 -2
- package/dist/esm/utils/token.test.d.ts.map +0 -1
- package/dist/esm/utils/token.test.js +0 -38
- package/dist/esm/utils/token.test.js.map +0 -1
- package/dist/esm/utils/urn.test.d.ts +0 -2
- package/dist/esm/utils/urn.test.d.ts.map +0 -1
- package/dist/esm/utils/urn.test.js +0 -112
- package/dist/esm/utils/urn.test.js.map +0 -1
- package/dist/esm/v6/cashOut.test.d.ts +0 -2
- package/dist/esm/v6/cashOut.test.d.ts.map +0 -1
- package/dist/esm/v6/cashOut.test.js +0 -120
- package/dist/esm/v6/cashOut.test.js.map +0 -1
- package/dist/esm/v6/currency.test.d.ts +0 -2
- package/dist/esm/v6/currency.test.d.ts.map +0 -1
- package/dist/esm/v6/currency.test.js +0 -24
- package/dist/esm/v6/currency.test.js.map +0 -1
- package/dist/esm/v6/fees.test.d.ts +0 -2
- package/dist/esm/v6/fees.test.d.ts.map +0 -1
- package/dist/esm/v6/fees.test.js +0 -38
- package/dist/esm/v6/fees.test.js.map +0 -1
- package/dist/esm/v6/launch.test.d.ts +0 -2
- package/dist/esm/v6/launch.test.d.ts.map +0 -1
- package/dist/esm/v6/launch.test.js +0 -135
- package/dist/esm/v6/launch.test.js.map +0 -1
- package/dist/esm/v6/loans.test.d.ts +0 -2
- package/dist/esm/v6/loans.test.d.ts.map +0 -1
- package/dist/esm/v6/loans.test.js +0 -127
- package/dist/esm/v6/loans.test.js.map +0 -1
- package/dist/esm/v6/nft.test.d.ts +0 -2
- package/dist/esm/v6/nft.test.d.ts.map +0 -1
- package/dist/esm/v6/nft.test.js +0 -204
- package/dist/esm/v6/nft.test.js.map +0 -1
- package/dist/esm/v6/omnichain.test.d.ts +0 -2
- package/dist/esm/v6/omnichain.test.d.ts.map +0 -1
- package/dist/esm/v6/omnichain.test.js +0 -143
- package/dist/esm/v6/omnichain.test.js.map +0 -1
- package/dist/esm/v6/pay.test.d.ts +0 -2
- package/dist/esm/v6/pay.test.d.ts.map +0 -1
- package/dist/esm/v6/pay.test.js +0 -135
- package/dist/esm/v6/pay.test.js.map +0 -1
- package/dist/esm/v6/permissions.test.d.ts +0 -2
- package/dist/esm/v6/permissions.test.d.ts.map +0 -1
- package/dist/esm/v6/permissions.test.js +0 -115
- package/dist/esm/v6/permissions.test.js.map +0 -1
- package/dist/esm/v6/revnets.test.d.ts +0 -2
- package/dist/esm/v6/revnets.test.d.ts.map +0 -1
- package/dist/esm/v6/revnets.test.js +0 -231
- package/dist/esm/v6/revnets.test.js.map +0 -1
- package/dist/esm/v6/rulesets.test.d.ts +0 -2
- package/dist/esm/v6/rulesets.test.d.ts.map +0 -1
- package/dist/esm/v6/rulesets.test.js +0 -104
- package/dist/esm/v6/rulesets.test.js.map +0 -1
- package/dist/esm/v6/splits.test.d.ts +0 -2
- package/dist/esm/v6/splits.test.d.ts.map +0 -1
- package/dist/esm/v6/splits.test.js +0 -133
- package/dist/esm/v6/splits.test.js.map +0 -1
- package/dist/esm/v6/suckers.test.d.ts +0 -2
- package/dist/esm/v6/suckers.test.d.ts.map +0 -1
- package/dist/esm/v6/suckers.test.js +0 -132
- package/dist/esm/v6/suckers.test.js.map +0 -1
- package/dist/esm/v6/terminals.test.d.ts +0 -2
- package/dist/esm/v6/terminals.test.d.ts.map +0 -1
- package/dist/esm/v6/terminals.test.js +0 -57
- package/dist/esm/v6/terminals.test.js.map +0 -1
- package/dist/esm/v6/tokens.test.d.ts +0 -2
- package/dist/esm/v6/tokens.test.d.ts.map +0 -1
- package/dist/esm/v6/tokens.test.js +0 -139
- package/dist/esm/v6/tokens.test.js.map +0 -1
- package/dist/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.tsbuildinfo +0 -1
package/dist/esm/v6/nft.js
CHANGED
|
@@ -1,13 +1,192 @@
|
|
|
1
1
|
import { zeroAddress } from "viem";
|
|
2
2
|
import { JBOmnichainDeployerContracts } from "../contracts.js";
|
|
3
3
|
import { jb721TiersHookAbi, jb721TiersHookStoreAbi, jbContractAddress, jbOmnichainDeployerAbi, } from "../generated/juicebox.js";
|
|
4
|
+
import { ipfsAssetPath, isIpfsCid } from "../utils/ipfs.js";
|
|
4
5
|
import { getRevnetTiered721Hook } from "./revnets.js";
|
|
5
6
|
import { getCurrentRuleset } from "./rulesets.js";
|
|
7
|
+
/**
|
|
8
|
+
* App-level sentinel convention used by Juicebox 721 shops for effectively
|
|
9
|
+
* unlimited inventory.
|
|
10
|
+
*/
|
|
11
|
+
export const TIER_UNLIMITED_SUPPLY = 999_999_999;
|
|
6
12
|
/**
|
|
7
13
|
* JB721TiersHookStore's `DISCOUNT_DENOMINATOR`: a tier's `discountPercent` is
|
|
8
14
|
* out of 200, so the shopper-facing "% off" is `discountPercent / 2`.
|
|
9
15
|
*/
|
|
10
16
|
export const DISCOUNT_DENOMINATOR = 200n;
|
|
17
|
+
function nonEmptyString(value) {
|
|
18
|
+
return typeof value === "string" && value ? value : undefined;
|
|
19
|
+
}
|
|
20
|
+
function decodeBase64Utf8(value) {
|
|
21
|
+
const binary = atob(value);
|
|
22
|
+
return new TextDecoder().decode(Uint8Array.from(binary, (character) => character.charCodeAt(0)));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Parse a `data:application/json` tier URI. Invalid, non-object, and non-data
|
|
26
|
+
* values return `null` so callers can fall back to an IPFS metadata fetch.
|
|
27
|
+
*/
|
|
28
|
+
export function parseTierMetadataJson(uri) {
|
|
29
|
+
if (!uri.startsWith("data:application/json"))
|
|
30
|
+
return null;
|
|
31
|
+
const comma = uri.indexOf(",");
|
|
32
|
+
if (comma === -1)
|
|
33
|
+
return null;
|
|
34
|
+
try {
|
|
35
|
+
const header = uri.slice(0, comma);
|
|
36
|
+
const payload = uri.slice(comma + 1);
|
|
37
|
+
const json = JSON.parse(header.split(";").includes("base64")
|
|
38
|
+
? decodeBase64Utf8(payload)
|
|
39
|
+
: decodeURIComponent(payload));
|
|
40
|
+
return json !== null && typeof json === "object" && !Array.isArray(json)
|
|
41
|
+
? json
|
|
42
|
+
: null;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Normalize legacy and current tier metadata field names into one display
|
|
50
|
+
* shape. Only non-empty strings are returned.
|
|
51
|
+
*/
|
|
52
|
+
export function pickTierMetadata(json) {
|
|
53
|
+
return {
|
|
54
|
+
name: nonEmptyString(json.productName) ?? nonEmptyString(json.name),
|
|
55
|
+
description: nonEmptyString(json.productDescription) ??
|
|
56
|
+
nonEmptyString(json.description),
|
|
57
|
+
image: nonEmptyString(json.image) ?? nonEmptyString(json.imageUri),
|
|
58
|
+
animationUrl: nonEmptyString(json.animation_url) ?? nonEmptyString(json.animationUrl),
|
|
59
|
+
mediaType: nonEmptyString(json.mediaType) ??
|
|
60
|
+
nonEmptyString(json.animationType) ??
|
|
61
|
+
nonEmptyString(json.mimeType),
|
|
62
|
+
categoryName: nonEmptyString(json.categoryName),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/** Whether a tier media value uses an immutable or browser-loadable URI form. */
|
|
66
|
+
export function isSafeTierMediaUri(value) {
|
|
67
|
+
const uri = value.trim();
|
|
68
|
+
if (!uri || /\s/.test(uri))
|
|
69
|
+
return false;
|
|
70
|
+
const ipfsPath = ipfsAssetPath(uri);
|
|
71
|
+
if (ipfsPath && isIpfsCid(ipfsPath.split("/")[0]))
|
|
72
|
+
return true;
|
|
73
|
+
if (isIpfsCid(uri.split("/")[0]))
|
|
74
|
+
return true;
|
|
75
|
+
if (/^data:(image|audio|video)\/[a-z0-9.+-]+[;,]/i.test(uri))
|
|
76
|
+
return true;
|
|
77
|
+
try {
|
|
78
|
+
const url = new URL(uri);
|
|
79
|
+
return url.protocol === "https:" || url.protocol === "http:";
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/** Build the canonical JSON object pinned for one tier. */
|
|
86
|
+
export function buildTierMetadata(input) {
|
|
87
|
+
const name = input.name.trim();
|
|
88
|
+
if (!name)
|
|
89
|
+
throw new Error("Tier name is required.");
|
|
90
|
+
const optional = (value) => value?.trim() || undefined;
|
|
91
|
+
const image = optional(input.image);
|
|
92
|
+
const animationUrl = optional(input.animationUrl);
|
|
93
|
+
const mediaType = optional(input.mediaType);
|
|
94
|
+
if (image && !isSafeTierMediaUri(image)) {
|
|
95
|
+
throw new Error("Tier images must use IPFS, HTTP, HTTPS, or an image data URI.");
|
|
96
|
+
}
|
|
97
|
+
if (animationUrl && !isSafeTierMediaUri(animationUrl)) {
|
|
98
|
+
throw new Error("Tier animations must use IPFS, HTTP, HTTPS, or a media data URI.");
|
|
99
|
+
}
|
|
100
|
+
if (mediaType &&
|
|
101
|
+
!/^[a-z0-9!#$&^_.+-]+\/[a-z0-9!#$&^_.+-]+$/i.test(mediaType)) {
|
|
102
|
+
throw new Error("Tier media type must be a valid MIME type.");
|
|
103
|
+
}
|
|
104
|
+
return {
|
|
105
|
+
name,
|
|
106
|
+
description: optional(input.description),
|
|
107
|
+
image,
|
|
108
|
+
animation_url: animationUrl,
|
|
109
|
+
mediaType,
|
|
110
|
+
categoryName: optional(input.categoryName),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Route IPFS media through a caller-selected gateway base URL. Data URIs and
|
|
115
|
+
* ordinary HTTP URLs pass through unchanged.
|
|
116
|
+
*/
|
|
117
|
+
export function tierMediaAssetUrl(value, ipfsGatewayBaseUrl = "https://ipfs.io/ipfs/") {
|
|
118
|
+
if (typeof value !== "string" || !value)
|
|
119
|
+
return undefined;
|
|
120
|
+
if (value.startsWith("data:"))
|
|
121
|
+
return value;
|
|
122
|
+
const trimmed = value.trim();
|
|
123
|
+
const path = ipfsAssetPath(trimmed) ??
|
|
124
|
+
(isIpfsCid(trimmed.split("/")[0]) ? trimmed : null);
|
|
125
|
+
if (!path)
|
|
126
|
+
return value;
|
|
127
|
+
return `${ipfsGatewayBaseUrl.replace(/\/?$/, "/")}${path}`;
|
|
128
|
+
}
|
|
129
|
+
function svgDataUriMarkup(uri) {
|
|
130
|
+
const match = /^data:image\/svg\+xml([^,]*),([\s\S]*)$/.exec(uri);
|
|
131
|
+
if (!match)
|
|
132
|
+
return null;
|
|
133
|
+
try {
|
|
134
|
+
return match[1].split(";").includes("base64")
|
|
135
|
+
? decodeBase64Utf8(match[2])
|
|
136
|
+
: decodeURIComponent(match[2]);
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Return a browser-renderable tier image URL. SVG data URIs that only wrap an
|
|
144
|
+
* external `<image href>` are unwrapped because browsers block that nested
|
|
145
|
+
* network request when the SVG itself is used as an `<img>` source.
|
|
146
|
+
*/
|
|
147
|
+
export function tierMediaImageUrl(image, ipfsGatewayBaseUrl) {
|
|
148
|
+
if (typeof image !== "string" || !image)
|
|
149
|
+
return undefined;
|
|
150
|
+
const markup = svgDataUriMarkup(image);
|
|
151
|
+
if (markup) {
|
|
152
|
+
const href = /<image[^>]+href=["']([^"']+)["']/.exec(markup)?.[1];
|
|
153
|
+
if (href && !href.startsWith("data:")) {
|
|
154
|
+
return tierMediaAssetUrl(href, ipfsGatewayBaseUrl);
|
|
155
|
+
}
|
|
156
|
+
return image;
|
|
157
|
+
}
|
|
158
|
+
return tierMediaAssetUrl(image, ipfsGatewayBaseUrl);
|
|
159
|
+
}
|
|
160
|
+
/** Pick and resolve all tier metadata fields in one pass. */
|
|
161
|
+
export function tierDisplayMetadata(json, ipfsGatewayBaseUrl) {
|
|
162
|
+
const metadata = pickTierMetadata(json);
|
|
163
|
+
return {
|
|
164
|
+
...metadata,
|
|
165
|
+
image: tierMediaImageUrl(metadata.image, ipfsGatewayBaseUrl),
|
|
166
|
+
animationUrl: tierMediaAssetUrl(metadata.animationUrl, ipfsGatewayBaseUrl),
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/** Stable first-seen category ids, with blank categories assigned to 0. */
|
|
170
|
+
export function buildTierCategoryPlan(tiers) {
|
|
171
|
+
const categoryIds = new Map();
|
|
172
|
+
const categoryByTierId = {};
|
|
173
|
+
const storeCategories = {};
|
|
174
|
+
for (const tier of tiers) {
|
|
175
|
+
const name = tier.categoryName?.trim() || "";
|
|
176
|
+
if (!name) {
|
|
177
|
+
categoryByTierId[tier.id] = 0;
|
|
178
|
+
continue;
|
|
179
|
+
}
|
|
180
|
+
let category = categoryIds.get(name);
|
|
181
|
+
if (category === undefined) {
|
|
182
|
+
category = categoryIds.size + 1;
|
|
183
|
+
categoryIds.set(name, category);
|
|
184
|
+
storeCategories[String(category)] = name;
|
|
185
|
+
}
|
|
186
|
+
categoryByTierId[tier.id] = category;
|
|
187
|
+
}
|
|
188
|
+
return { categoryByTierId, storeCategories };
|
|
189
|
+
}
|
|
11
190
|
/**
|
|
12
191
|
* A tier's effective (discounted) price, matching the on-chain formula in
|
|
13
192
|
* JB721TiersHookStore: `price - mulDiv(price, discountPercent, 200)` with
|
|
@@ -153,7 +332,10 @@ export async function getProject721Shop(client, { chainId, projectId, isRevnet,
|
|
|
153
332
|
hook,
|
|
154
333
|
store,
|
|
155
334
|
metadataIdTarget,
|
|
156
|
-
pricing: {
|
|
335
|
+
pricing: {
|
|
336
|
+
currency: Number(pricingRaw[0]),
|
|
337
|
+
decimals: Number(pricingRaw[1]),
|
|
338
|
+
},
|
|
157
339
|
tiers,
|
|
158
340
|
};
|
|
159
341
|
}
|
package/dist/esm/v6/nft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nft.js","sourceRoot":"","sources":["../../../src/v6/nft.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,WAAW,EAAE,MAAM,MAAM,CAAC;AAC/D,OAAO,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EACL,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"nft.js","sourceRoot":"","sources":["../../../src/v6/nft.ts"],"names":[],"mappings":"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"}
|
|
@@ -58,6 +58,27 @@ export declare const JBPermissionIdsV6: {
|
|
|
58
58
|
* A v6 permission id.
|
|
59
59
|
*/
|
|
60
60
|
export type JBPermissionIdV6 = (typeof JBPermissionIdsV6)[keyof typeof JBPermissionIdsV6];
|
|
61
|
+
/** A symbolic v6 permission name, such as `QUEUE_RULESETS`. */
|
|
62
|
+
export type JBPermissionKeyV6 = keyof typeof JBPermissionIdsV6;
|
|
63
|
+
/** Canonical permission names and ids, sorted by id. */
|
|
64
|
+
export declare const JBPermissionCatalogV6: readonly {
|
|
65
|
+
key: JBPermissionKeyV6;
|
|
66
|
+
id: JBPermissionIdV6;
|
|
67
|
+
}[];
|
|
68
|
+
/** Return the SDK permission name for an id, or `null` for a newer/unknown id. */
|
|
69
|
+
export declare function permissionKeyV6(id: number): JBPermissionKeyV6 | null;
|
|
70
|
+
/**
|
|
71
|
+
* Decode `JBPermissions.permissionsOf`'s packed bitmap into ascending ids.
|
|
72
|
+
*
|
|
73
|
+
* By default only ids known to this SDK release are returned. Pass
|
|
74
|
+
* `includeUnknown: true` to preserve set bits from future permission-id
|
|
75
|
+
* releases as well.
|
|
76
|
+
*/
|
|
77
|
+
export declare function decodePermissionBitmap(bitmap: bigint, { includeUnknown }?: {
|
|
78
|
+
includeUnknown?: boolean;
|
|
79
|
+
}): number[];
|
|
80
|
+
/** Encode permission ids into the packed bitmap returned by `permissionsOf`. */
|
|
81
|
+
export declare function encodePermissionBitmap(permissionIds: readonly number[]): bigint;
|
|
61
82
|
/**
|
|
62
83
|
* A prepared `setPermissionsFor` transaction request.
|
|
63
84
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/v6/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDK,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,gBAAgB,CAAC;IAC7B,YAAY,EAAE,mBAAmB,CAAC;IAClC,IAAI,EAAE,SAAS;QACb,OAAO;QACP;YAAE,QAAQ,EAAE,OAAO,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,EAAE,CAAA;SAAE;KAClE,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,GACd,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,yBAAyB,CAQ5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,EACE,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAkB,EAClB,wBAA+B,GAChC,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GACA,OAAO,CAAC,OAAO,CAAC,CAclB"}
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../../src/v6/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB;IAC5B;;OAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDK,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAC1B,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,OAAO,iBAAiB,CAAC,CAAC;AAE7D,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,wDAAwD;AACxD,eAAO,MAAM,qBAAqB,EAAE,SAAS;IAC3C,GAAG,EAAE,iBAAiB,CAAC;IACvB,EAAE,EAAE,gBAAgB,CAAC;CACtB,EAI6B,CAAC;AAM/B,kFAAkF;AAClF,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,EAAE,cAAsB,EAAE,GAAE;IAAE,cAAc,CAAC,EAAE,OAAO,CAAA;CAAO,GAC5D,MAAM,EAAE,CAUV;AAED,gFAAgF;AAChF,wBAAgB,sBAAsB,CACpC,aAAa,EAAE,SAAS,MAAM,EAAE,GAC/B,MAAM,CASR;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,OAAO,gBAAgB,CAAC;IAC7B,YAAY,EAAE,mBAAmB,CAAC;IAClC,IAAI,EAAE,SAAS;QACb,OAAO;QACP;YAAE,QAAQ,EAAE,OAAO,CAAC;YAAC,SAAS,EAAE,MAAM,CAAC;YAAC,aAAa,EAAE,MAAM,EAAE,CAAA;SAAE;KAClE,CAAC;CACH;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAS,EACT,aAAa,GACd,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB,GAAG,yBAAyB,CAQ5B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,EACE,OAAO,EACP,QAAQ,EACR,OAAO,EACP,SAAS,EACT,aAAa,EACb,WAAkB,EAClB,wBAA+B,GAChC,EAAE;IACD,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,GACA,OAAO,CAAC,OAAO,CAAC,CAclB"}
|
|
@@ -59,6 +59,46 @@ export const JBPermissionIdsV6 = {
|
|
|
59
59
|
REALLOCATE_LOAN: 38,
|
|
60
60
|
REPAY_LOAN: 39,
|
|
61
61
|
};
|
|
62
|
+
/** Canonical permission names and ids, sorted by id. */
|
|
63
|
+
export const JBPermissionCatalogV6 = Object.entries(JBPermissionIdsV6)
|
|
64
|
+
.map(([key, id]) => ({ key, id }))
|
|
65
|
+
.sort((a, b) => a.id - b.id);
|
|
66
|
+
const JB_PERMISSION_KEY_BY_ID = new Map(JBPermissionCatalogV6.map(({ key, id }) => [id, key]));
|
|
67
|
+
/** Return the SDK permission name for an id, or `null` for a newer/unknown id. */
|
|
68
|
+
export function permissionKeyV6(id) {
|
|
69
|
+
return JB_PERMISSION_KEY_BY_ID.get(id) ?? null;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Decode `JBPermissions.permissionsOf`'s packed bitmap into ascending ids.
|
|
73
|
+
*
|
|
74
|
+
* By default only ids known to this SDK release are returned. Pass
|
|
75
|
+
* `includeUnknown: true` to preserve set bits from future permission-id
|
|
76
|
+
* releases as well.
|
|
77
|
+
*/
|
|
78
|
+
export function decodePermissionBitmap(bitmap, { includeUnknown = false } = {}) {
|
|
79
|
+
if (bitmap < 0n)
|
|
80
|
+
throw new Error("A permission bitmap cannot be negative.");
|
|
81
|
+
const ids = [];
|
|
82
|
+
const maxId = includeUnknown
|
|
83
|
+
? 255
|
|
84
|
+
: (JBPermissionCatalogV6[JBPermissionCatalogV6.length - 1]?.id ?? 0);
|
|
85
|
+
for (let id = 1; id <= maxId; id++) {
|
|
86
|
+
if (((bitmap >> BigInt(id)) & 1n) === 1n)
|
|
87
|
+
ids.push(id);
|
|
88
|
+
}
|
|
89
|
+
return ids;
|
|
90
|
+
}
|
|
91
|
+
/** Encode permission ids into the packed bitmap returned by `permissionsOf`. */
|
|
92
|
+
export function encodePermissionBitmap(permissionIds) {
|
|
93
|
+
let bitmap = 0n;
|
|
94
|
+
for (const id of permissionIds) {
|
|
95
|
+
if (!Number.isInteger(id) || id < 1 || id > 255) {
|
|
96
|
+
throw new Error(`Invalid permission id: ${id}.`);
|
|
97
|
+
}
|
|
98
|
+
bitmap |= 1n << BigInt(id);
|
|
99
|
+
}
|
|
100
|
+
return bitmap;
|
|
101
|
+
}
|
|
62
102
|
/**
|
|
63
103
|
* Build a `JBPermissions.setPermissionsFor(account, { operator, projectId,
|
|
64
104
|
* permissionIds })` transaction request.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/v6/permissions.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B;;OAEG;IACH,IAAI,EAAE,CAAC;IAEP,eAAe;IACf,cAAc,EAAE,CAAC;IACjB,eAAe,EAAE,CAAC;IAClB,eAAe,EAAE,CAAC;IAClB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,eAAe,EAAE,CAAC;IAClB,YAAY,EAAE,CAAC;IACf,SAAS,EAAE,CAAC;IACZ,WAAW,EAAE,EAAE;IACf,WAAW,EAAE,EAAE;IACf,YAAY,EAAE,EAAE;IAChB,gBAAgB,EAAE,EAAE;IACpB,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,EAAE;IACjB,aAAa,EAAE,EAAE;IACjB,oBAAoB,EAAE,EAAE;IACxB,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,EAAE;IACpB,cAAc,EAAE,EAAE;IAClB,uBAAuB,EAAE,EAAE;IAC3B,kBAAkB,EAAE,EAAE;IACtB,cAAc,EAAE,EAAE;IAElB,mBAAmB;IACnB,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,EAAE;IACpB,QAAQ,EAAE,EAAE;IACZ,wBAAwB,EAAE,EAAE;IAE5B,uBAAuB;IACvB,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,EAAE;IACpB,gBAAgB,EAAE,EAAE;IAEpB,0BAA0B;IAC1B,mBAAmB,EAAE,EAAE;IAEvB,kBAAkB;IAClB,gBAAgB,EAAE,EAAE;IACpB,cAAc,EAAE,EAAE;IAClB,eAAe,EAAE,EAAE;IACnB,aAAa,EAAE,EAAE;IACjB,sBAAsB,EAAE,EAAE;IAE1B,iBAAiB;IACjB,SAAS,EAAE,EAAE;IACb,eAAe,EAAE,EAAE;IACnB,UAAU,EAAE,EAAE;CACN,CAAC;
|
|
1
|
+
{"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../../src/v6/permissions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { type Address, type Hex } from "viem";
|
|
2
|
+
import type { JBChainId } from "../types.js";
|
|
3
|
+
/**
|
|
4
|
+
* Canonical JBProjectPayerDeployer address. The v6 deployment uses the same
|
|
5
|
+
* CREATE2 address on every chain supported by the SDK.
|
|
6
|
+
*/
|
|
7
|
+
export declare const JB_PROJECT_PAYER_DEPLOYER: Address;
|
|
8
|
+
/** JBProjectPayerDeployer surface needed by web clients. */
|
|
9
|
+
export declare const jbProjectPayerDeployerAbi: readonly [{
|
|
10
|
+
readonly type: "function";
|
|
11
|
+
readonly name: "deployProjectPayer";
|
|
12
|
+
readonly stateMutability: "nonpayable";
|
|
13
|
+
readonly inputs: readonly [{
|
|
14
|
+
readonly name: "defaultProjectId";
|
|
15
|
+
readonly type: "uint256";
|
|
16
|
+
}, {
|
|
17
|
+
readonly name: "defaultBeneficiary";
|
|
18
|
+
readonly type: "address";
|
|
19
|
+
}, {
|
|
20
|
+
readonly name: "defaultMemo";
|
|
21
|
+
readonly type: "string";
|
|
22
|
+
}, {
|
|
23
|
+
readonly name: "defaultMetadata";
|
|
24
|
+
readonly type: "bytes";
|
|
25
|
+
}, {
|
|
26
|
+
readonly name: "defaultAddToBalance";
|
|
27
|
+
readonly type: "bool";
|
|
28
|
+
}, {
|
|
29
|
+
readonly name: "owner";
|
|
30
|
+
readonly type: "address";
|
|
31
|
+
}];
|
|
32
|
+
readonly outputs: readonly [{
|
|
33
|
+
readonly name: "projectPayer";
|
|
34
|
+
readonly type: "address";
|
|
35
|
+
}];
|
|
36
|
+
}, {
|
|
37
|
+
readonly type: "event";
|
|
38
|
+
readonly name: "DeployProjectPayer";
|
|
39
|
+
readonly anonymous: false;
|
|
40
|
+
readonly inputs: readonly [{
|
|
41
|
+
readonly name: "projectPayer";
|
|
42
|
+
readonly type: "address";
|
|
43
|
+
readonly indexed: true;
|
|
44
|
+
}, {
|
|
45
|
+
readonly name: "defaultProjectId";
|
|
46
|
+
readonly type: "uint256";
|
|
47
|
+
readonly indexed: false;
|
|
48
|
+
}, {
|
|
49
|
+
readonly name: "defaultBeneficiary";
|
|
50
|
+
readonly type: "address";
|
|
51
|
+
readonly indexed: false;
|
|
52
|
+
}, {
|
|
53
|
+
readonly name: "defaultMemo";
|
|
54
|
+
readonly type: "string";
|
|
55
|
+
readonly indexed: false;
|
|
56
|
+
}, {
|
|
57
|
+
readonly name: "defaultMetadata";
|
|
58
|
+
readonly type: "bytes";
|
|
59
|
+
readonly indexed: false;
|
|
60
|
+
}, {
|
|
61
|
+
readonly name: "defaultAddToBalance";
|
|
62
|
+
readonly type: "bool";
|
|
63
|
+
readonly indexed: false;
|
|
64
|
+
}, {
|
|
65
|
+
readonly name: "directory";
|
|
66
|
+
readonly type: "address";
|
|
67
|
+
readonly indexed: false;
|
|
68
|
+
}, {
|
|
69
|
+
readonly name: "owner";
|
|
70
|
+
readonly type: "address";
|
|
71
|
+
readonly indexed: false;
|
|
72
|
+
}, {
|
|
73
|
+
readonly name: "caller";
|
|
74
|
+
readonly type: "address";
|
|
75
|
+
readonly indexed: false;
|
|
76
|
+
}];
|
|
77
|
+
}];
|
|
78
|
+
/** Validate and normalize metadata bytes forwarded by a project payer. */
|
|
79
|
+
export declare function normalizeProjectPayerMetadata(value?: string): Hex;
|
|
80
|
+
/** Build a JBProjectPayerDeployer.deployProjectPayer transaction request. */
|
|
81
|
+
export declare function buildDeployProjectPayerTx(args: {
|
|
82
|
+
chainId: JBChainId;
|
|
83
|
+
projectId: bigint;
|
|
84
|
+
beneficiary: Address;
|
|
85
|
+
memo?: string;
|
|
86
|
+
metadata?: string;
|
|
87
|
+
addToBalance?: boolean;
|
|
88
|
+
owner: Address;
|
|
89
|
+
}): {
|
|
90
|
+
chainId: 1 | 10 | 11155111 | 11155420 | 421614 | 84532 | 42161 | 8453;
|
|
91
|
+
address: `0x${string}`;
|
|
92
|
+
abi: readonly [{
|
|
93
|
+
readonly type: "function";
|
|
94
|
+
readonly name: "deployProjectPayer";
|
|
95
|
+
readonly stateMutability: "nonpayable";
|
|
96
|
+
readonly inputs: readonly [{
|
|
97
|
+
readonly name: "defaultProjectId";
|
|
98
|
+
readonly type: "uint256";
|
|
99
|
+
}, {
|
|
100
|
+
readonly name: "defaultBeneficiary";
|
|
101
|
+
readonly type: "address";
|
|
102
|
+
}, {
|
|
103
|
+
readonly name: "defaultMemo";
|
|
104
|
+
readonly type: "string";
|
|
105
|
+
}, {
|
|
106
|
+
readonly name: "defaultMetadata";
|
|
107
|
+
readonly type: "bytes";
|
|
108
|
+
}, {
|
|
109
|
+
readonly name: "defaultAddToBalance";
|
|
110
|
+
readonly type: "bool";
|
|
111
|
+
}, {
|
|
112
|
+
readonly name: "owner";
|
|
113
|
+
readonly type: "address";
|
|
114
|
+
}];
|
|
115
|
+
readonly outputs: readonly [{
|
|
116
|
+
readonly name: "projectPayer";
|
|
117
|
+
readonly type: "address";
|
|
118
|
+
}];
|
|
119
|
+
}, {
|
|
120
|
+
readonly type: "event";
|
|
121
|
+
readonly name: "DeployProjectPayer";
|
|
122
|
+
readonly anonymous: false;
|
|
123
|
+
readonly inputs: readonly [{
|
|
124
|
+
readonly name: "projectPayer";
|
|
125
|
+
readonly type: "address";
|
|
126
|
+
readonly indexed: true;
|
|
127
|
+
}, {
|
|
128
|
+
readonly name: "defaultProjectId";
|
|
129
|
+
readonly type: "uint256";
|
|
130
|
+
readonly indexed: false;
|
|
131
|
+
}, {
|
|
132
|
+
readonly name: "defaultBeneficiary";
|
|
133
|
+
readonly type: "address";
|
|
134
|
+
readonly indexed: false;
|
|
135
|
+
}, {
|
|
136
|
+
readonly name: "defaultMemo";
|
|
137
|
+
readonly type: "string";
|
|
138
|
+
readonly indexed: false;
|
|
139
|
+
}, {
|
|
140
|
+
readonly name: "defaultMetadata";
|
|
141
|
+
readonly type: "bytes";
|
|
142
|
+
readonly indexed: false;
|
|
143
|
+
}, {
|
|
144
|
+
readonly name: "defaultAddToBalance";
|
|
145
|
+
readonly type: "bool";
|
|
146
|
+
readonly indexed: false;
|
|
147
|
+
}, {
|
|
148
|
+
readonly name: "directory";
|
|
149
|
+
readonly type: "address";
|
|
150
|
+
readonly indexed: false;
|
|
151
|
+
}, {
|
|
152
|
+
readonly name: "owner";
|
|
153
|
+
readonly type: "address";
|
|
154
|
+
readonly indexed: false;
|
|
155
|
+
}, {
|
|
156
|
+
readonly name: "caller";
|
|
157
|
+
readonly type: "address";
|
|
158
|
+
readonly indexed: false;
|
|
159
|
+
}];
|
|
160
|
+
}];
|
|
161
|
+
functionName: "deployProjectPayer";
|
|
162
|
+
args: readonly [bigint, `0x${string}`, string, `0x${string}`, boolean, `0x${string}`];
|
|
163
|
+
};
|
|
164
|
+
/** Minimal receipt-log shape needed to decode a project-payer deployment. */
|
|
165
|
+
export interface ProjectPayerDeployLog {
|
|
166
|
+
address: Address;
|
|
167
|
+
data: Hex;
|
|
168
|
+
topics: readonly Hex[];
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Decode the payer address from a canonical JBProjectPayerDeployer event.
|
|
172
|
+
* Emitter verification prevents an unrelated same-signature log from being
|
|
173
|
+
* mistaken for the newly deployed payer.
|
|
174
|
+
*/
|
|
175
|
+
export declare function decodeDeployedProjectPayer(log: ProjectPayerDeployLog): Address | null;
|
|
176
|
+
/** Return the first canonical project-payer deployment found in a receipt. */
|
|
177
|
+
export declare function projectPayerFromDeployLogs(logs: readonly ProjectPayerDeployLog[]): Address | null;
|
|
178
|
+
//# sourceMappingURL=projectPayers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectPayers.d.ts","sourceRoot":"","sources":["../../../src/v6/projectPayers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,OAAO,EAAE,KAAK,GAAG,EAAE,MAAM,MAAM,CAAC;AAC9E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;;GAGG;AACH,eAAO,MAAM,yBAAyB,EACY,OAAO,CAAC;AAE1D,4DAA4D;AAC5D,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+B5B,CAAC;AAEX,0EAA0E;AAC1E,wBAAgB,6BAA6B,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAMjE;AAED,6EAA6E;AAC7E,wBAAgB,yBAAyB,CAAC,IAAI,EAAE;IAC9C,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;CAChB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBA;AAED,6EAA6E;AAC7E,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,GAAG,CAAC;IACV,MAAM,EAAE,SAAS,GAAG,EAAE,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,qBAAqB,GACzB,OAAO,GAAG,IAAI,CAiBhB;AAED,8EAA8E;AAC9E,wBAAgB,0BAA0B,CACxC,IAAI,EAAE,SAAS,qBAAqB,EAAE,GACrC,OAAO,GAAG,IAAI,CAMhB"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { decodeEventLog, isAddressEqual } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* Canonical JBProjectPayerDeployer address. The v6 deployment uses the same
|
|
4
|
+
* CREATE2 address on every chain supported by the SDK.
|
|
5
|
+
*/
|
|
6
|
+
export const JB_PROJECT_PAYER_DEPLOYER = "0x7321740fd0dcf73dd3e2aa8fc060454abfce9517";
|
|
7
|
+
/** JBProjectPayerDeployer surface needed by web clients. */
|
|
8
|
+
export const jbProjectPayerDeployerAbi = [
|
|
9
|
+
{
|
|
10
|
+
type: "function",
|
|
11
|
+
name: "deployProjectPayer",
|
|
12
|
+
stateMutability: "nonpayable",
|
|
13
|
+
inputs: [
|
|
14
|
+
{ name: "defaultProjectId", type: "uint256" },
|
|
15
|
+
{ name: "defaultBeneficiary", type: "address" },
|
|
16
|
+
{ name: "defaultMemo", type: "string" },
|
|
17
|
+
{ name: "defaultMetadata", type: "bytes" },
|
|
18
|
+
{ name: "defaultAddToBalance", type: "bool" },
|
|
19
|
+
{ name: "owner", type: "address" },
|
|
20
|
+
],
|
|
21
|
+
outputs: [{ name: "projectPayer", type: "address" }],
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
type: "event",
|
|
25
|
+
name: "DeployProjectPayer",
|
|
26
|
+
anonymous: false,
|
|
27
|
+
inputs: [
|
|
28
|
+
{ name: "projectPayer", type: "address", indexed: true },
|
|
29
|
+
{ name: "defaultProjectId", type: "uint256", indexed: false },
|
|
30
|
+
{ name: "defaultBeneficiary", type: "address", indexed: false },
|
|
31
|
+
{ name: "defaultMemo", type: "string", indexed: false },
|
|
32
|
+
{ name: "defaultMetadata", type: "bytes", indexed: false },
|
|
33
|
+
{ name: "defaultAddToBalance", type: "bool", indexed: false },
|
|
34
|
+
{ name: "directory", type: "address", indexed: false },
|
|
35
|
+
{ name: "owner", type: "address", indexed: false },
|
|
36
|
+
{ name: "caller", type: "address", indexed: false },
|
|
37
|
+
],
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
/** Validate and normalize metadata bytes forwarded by a project payer. */
|
|
41
|
+
export function normalizeProjectPayerMetadata(value) {
|
|
42
|
+
const metadata = value?.trim() || "0x";
|
|
43
|
+
if (!/^0x(?:[0-9a-fA-F]{2})*$/.test(metadata)) {
|
|
44
|
+
throw new Error("Project payer metadata must be whole hex bytes.");
|
|
45
|
+
}
|
|
46
|
+
return metadata;
|
|
47
|
+
}
|
|
48
|
+
/** Build a JBProjectPayerDeployer.deployProjectPayer transaction request. */
|
|
49
|
+
export function buildDeployProjectPayerTx(args) {
|
|
50
|
+
if (args.projectId <= 0n) {
|
|
51
|
+
throw new Error("A project payer requires a positive project ID.");
|
|
52
|
+
}
|
|
53
|
+
return {
|
|
54
|
+
chainId: args.chainId,
|
|
55
|
+
address: JB_PROJECT_PAYER_DEPLOYER,
|
|
56
|
+
abi: jbProjectPayerDeployerAbi,
|
|
57
|
+
functionName: "deployProjectPayer",
|
|
58
|
+
args: [
|
|
59
|
+
args.projectId,
|
|
60
|
+
args.beneficiary,
|
|
61
|
+
args.memo ?? "",
|
|
62
|
+
normalizeProjectPayerMetadata(args.metadata),
|
|
63
|
+
args.addToBalance ?? false,
|
|
64
|
+
args.owner,
|
|
65
|
+
],
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Decode the payer address from a canonical JBProjectPayerDeployer event.
|
|
70
|
+
* Emitter verification prevents an unrelated same-signature log from being
|
|
71
|
+
* mistaken for the newly deployed payer.
|
|
72
|
+
*/
|
|
73
|
+
export function decodeDeployedProjectPayer(log) {
|
|
74
|
+
if (!isAddressEqual(log.address, JB_PROJECT_PAYER_DEPLOYER))
|
|
75
|
+
return null;
|
|
76
|
+
try {
|
|
77
|
+
const decoded = decodeEventLog({
|
|
78
|
+
abi: jbProjectPayerDeployerAbi,
|
|
79
|
+
eventName: "DeployProjectPayer",
|
|
80
|
+
data: log.data,
|
|
81
|
+
topics: log.topics,
|
|
82
|
+
strict: true,
|
|
83
|
+
});
|
|
84
|
+
return decoded.eventName === "DeployProjectPayer"
|
|
85
|
+
? decoded.args.projectPayer
|
|
86
|
+
: null;
|
|
87
|
+
}
|
|
88
|
+
catch {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
/** Return the first canonical project-payer deployment found in a receipt. */
|
|
93
|
+
export function projectPayerFromDeployLogs(logs) {
|
|
94
|
+
for (const log of logs) {
|
|
95
|
+
const payer = decodeDeployedProjectPayer(log);
|
|
96
|
+
if (payer)
|
|
97
|
+
return payer;
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=projectPayers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectPayers.js","sourceRoot":"","sources":["../../../src/v6/projectPayers.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/v6/revnets.d.ts
CHANGED
|
@@ -50,8 +50,9 @@ export type REVCroptopAllowedPost = RevDeployArgs6[5][number];
|
|
|
50
50
|
* issuance), out of 1e9; the group must total exactly 1e9 — use
|
|
51
51
|
* `fillSplitPercents`.
|
|
52
52
|
* - `initialIssuance`: tokens minted per unit of base currency, 18-decimal
|
|
53
|
-
* fixed point (uint112). The
|
|
54
|
-
* stage's issuance with its cuts applied"
|
|
53
|
+
* fixed point (uint112). The exported `RULESET_WEIGHT_INHERIT` sentinel
|
|
54
|
+
* (1n) means "inherit the previous stage's issuance with its cuts applied";
|
|
55
|
+
* zero means genuine zero issuance.
|
|
55
56
|
* - `issuanceCutFrequency`: seconds between issuance cuts (should be >= 1
|
|
56
57
|
* day; it becomes the stage's ruleset duration).
|
|
57
58
|
* - `issuanceCutPercent`: how much issuance drops each period, out of 1e9
|