@bananapus/nana-sdk-core 2.18.0 → 2.19.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/v6/deploymentAbi.d.ts +4 -0
- package/dist/cjs/v6/deploymentAbi.d.ts.map +1 -0
- package/dist/cjs/v6/deploymentAbi.js +15 -0
- package/dist/cjs/v6/deploymentAbi.js.map +1 -0
- package/dist/cjs/v6/deploymentDiagnostics.d.ts +45 -0
- package/dist/cjs/v6/deploymentDiagnostics.d.ts.map +1 -0
- package/dist/cjs/v6/deploymentDiagnostics.js +525 -0
- package/dist/cjs/v6/deploymentDiagnostics.js.map +1 -0
- package/dist/cjs/v6/index.d.ts +3 -0
- package/dist/cjs/v6/index.d.ts.map +1 -1
- package/dist/cjs/v6/index.js +3 -0
- package/dist/cjs/v6/index.js.map +1 -1
- package/dist/cjs/v6/nft.d.ts +15 -0
- package/dist/cjs/v6/nft.d.ts.map +1 -1
- package/dist/cjs/v6/nft.js +49 -29
- package/dist/cjs/v6/nft.js.map +1 -1
- package/dist/cjs/v6/omnichain.d.ts +3 -2
- package/dist/cjs/v6/omnichain.d.ts.map +1 -1
- package/dist/cjs/v6/omnichain.js +9 -4
- package/dist/cjs/v6/omnichain.js.map +1 -1
- package/dist/cjs/v6/revnet721.d.ts +42 -0
- package/dist/cjs/v6/revnet721.d.ts.map +1 -0
- package/dist/cjs/v6/revnet721.js +74 -0
- package/dist/cjs/v6/revnet721.js.map +1 -0
- package/dist/cjs/v6/revnets.d.ts +11 -3
- package/dist/cjs/v6/revnets.d.ts.map +1 -1
- package/dist/cjs/v6/revnets.js +36 -7
- package/dist/cjs/v6/revnets.js.map +1 -1
- package/dist/esm/v6/deploymentAbi.d.ts +4 -0
- package/dist/esm/v6/deploymentAbi.d.ts.map +1 -0
- package/dist/esm/v6/deploymentAbi.js +12 -0
- package/dist/esm/v6/deploymentAbi.js.map +1 -0
- package/dist/esm/v6/deploymentDiagnostics.d.ts +45 -0
- package/dist/esm/v6/deploymentDiagnostics.d.ts.map +1 -0
- package/dist/esm/v6/deploymentDiagnostics.js +521 -0
- package/dist/esm/v6/deploymentDiagnostics.js.map +1 -0
- package/dist/esm/v6/index.d.ts +3 -0
- package/dist/esm/v6/index.d.ts.map +1 -1
- package/dist/esm/v6/index.js +3 -0
- package/dist/esm/v6/index.js.map +1 -1
- package/dist/esm/v6/nft.d.ts +15 -0
- package/dist/esm/v6/nft.d.ts.map +1 -1
- package/dist/esm/v6/nft.js +48 -29
- package/dist/esm/v6/nft.js.map +1 -1
- package/dist/esm/v6/omnichain.d.ts +3 -2
- package/dist/esm/v6/omnichain.d.ts.map +1 -1
- package/dist/esm/v6/omnichain.js +9 -4
- package/dist/esm/v6/omnichain.js.map +1 -1
- package/dist/esm/v6/revnet721.d.ts +42 -0
- package/dist/esm/v6/revnet721.d.ts.map +1 -0
- package/dist/esm/v6/revnet721.js +70 -0
- package/dist/esm/v6/revnet721.js.map +1 -0
- package/dist/esm/v6/revnets.d.ts +11 -3
- package/dist/esm/v6/revnets.d.ts.map +1 -1
- package/dist/esm/v6/revnets.js +36 -7
- package/dist/esm/v6/revnets.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Abi } from "viem";
|
|
2
|
+
/** Preserve errors/events while selecting one tuple-heavy deployment overload. */
|
|
3
|
+
export declare function selectDeploymentAbi<T extends Abi>(abi: T, functionName: string, argumentCount: number): T;
|
|
4
|
+
//# sourceMappingURL=deploymentAbi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploymentAbi.d.ts","sourceRoot":"","sources":["../../../src/v6/deploymentAbi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,MAAM,CAAC;AAEhC,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,GAAG,EAC/C,GAAG,EAAE,CAAC,EACN,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,CAAC,CAmBH"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.selectDeploymentAbi = selectDeploymentAbi;
|
|
4
|
+
/** Preserve errors/events while selecting one tuple-heavy deployment overload. */
|
|
5
|
+
function selectDeploymentAbi(abi, functionName, argumentCount) {
|
|
6
|
+
if (abi.filter((item) => item.type === "function" &&
|
|
7
|
+
item.name === functionName &&
|
|
8
|
+
item.inputs.length === argumentCount).length !== 1) {
|
|
9
|
+
throw new Error(`Expected one ${functionName} overload with ${argumentCount} arguments.`);
|
|
10
|
+
}
|
|
11
|
+
return abi.filter((item) => item.type !== "function" ||
|
|
12
|
+
item.name !== functionName ||
|
|
13
|
+
item.inputs.length === argumentCount);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=deploymentAbi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploymentAbi.js","sourceRoot":"","sources":["../../../src/v6/deploymentAbi.ts"],"names":[],"mappings":";;AAGA,kDAuBC;AAxBD,kFAAkF;AAClF,SAAgB,mBAAmB,CACjC,GAAM,EACN,YAAoB,EACpB,aAAqB;IAErB,IACE,GAAG,CAAC,MAAM,CACR,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,UAAU;QACxB,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,aAAa,CACvC,CAAC,MAAM,KAAK,CAAC,EACd,CAAC;QACD,MAAM,IAAI,KAAK,CACb,gBAAgB,YAAY,kBAAkB,aAAa,aAAa,CACzE,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,MAAM,CACf,CAAC,IAAI,EAAE,EAAE,CACP,IAAI,CAAC,IAAI,KAAK,UAAU;QACxB,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,aAAa,CACvB,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Address, PublicClient } from "viem";
|
|
2
|
+
import { JBChainId } from "../types.js";
|
|
3
|
+
/** Indexer evidence is supplied by the caller, independently of chain reads. */
|
|
4
|
+
export type ProjectDataStatus = "available" | "missing" | "incomplete" | "unavailable" | "not-checked";
|
|
5
|
+
export declare function describeProjectDataStatus(status: ProjectDataStatus): string;
|
|
6
|
+
export interface ProjectDeploymentCheck {
|
|
7
|
+
id: string;
|
|
8
|
+
category: "project" | "hook" | "pricing" | "permissions";
|
|
9
|
+
status: "passed" | "mismatch" | "unsupported" | "unavailable" | "info";
|
|
10
|
+
label: string;
|
|
11
|
+
message: string;
|
|
12
|
+
actual?: string;
|
|
13
|
+
expected?: string;
|
|
14
|
+
action?: string;
|
|
15
|
+
}
|
|
16
|
+
/** Copyable, JSON-safe evidence. A passed check is limited to its stated claim. */
|
|
17
|
+
export interface ProjectDeploymentDiagnostics {
|
|
18
|
+
version: 6;
|
|
19
|
+
chainId: number;
|
|
20
|
+
projectId: string;
|
|
21
|
+
operator?: Address;
|
|
22
|
+
checkedAt: string;
|
|
23
|
+
checkedBlock: string | null;
|
|
24
|
+
kind: "revnet" | "juicebox" | "custom" | "unknown";
|
|
25
|
+
checks: ProjectDeploymentCheck[];
|
|
26
|
+
}
|
|
27
|
+
/** Inspect current v6 wiring without a wallet, tier enumeration or indexer.
|
|
28
|
+
* Reads are pinned to one block. Caller-supplied indexer evidence belongs in a
|
|
29
|
+
* separate report section: a failed indexer request proves nothing about wiring.
|
|
30
|
+
* Custom hooks/controllers are unsupported where capabilities cannot be verified,
|
|
31
|
+
* never invalid merely for differing from canonical deployments. Pricing units
|
|
32
|
+
* and operator powers are informational unless explicit expectations are supplied.
|
|
33
|
+
*/
|
|
34
|
+
export declare function getProjectDeploymentDiagnostics(client: PublicClient, args: {
|
|
35
|
+
chainId: JBChainId;
|
|
36
|
+
projectId: bigint;
|
|
37
|
+
/** Optional operator candidate, for reading actual shop powers. */
|
|
38
|
+
operator?: Address;
|
|
39
|
+
/** An intended pricing context, only when supplied by the deployer. */
|
|
40
|
+
expectedPricing?: {
|
|
41
|
+
currency: number;
|
|
42
|
+
decimals: number;
|
|
43
|
+
};
|
|
44
|
+
}): Promise<ProjectDeploymentDiagnostics>;
|
|
45
|
+
//# sourceMappingURL=deploymentDiagnostics.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploymentDiagnostics.d.ts","sourceRoot":"","sources":["../../../src/v6/deploymentDiagnostics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,YAAY,EAAoC,MAAM,MAAM,CAAC;AAS/E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAOxC,gFAAgF;AAChF,MAAM,MAAM,iBAAiB,GACzB,WAAW,GACX,SAAS,GACT,YAAY,GACZ,aAAa,GACb,aAAa,CAAC;AAElB,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAa3E;AAED,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;IACzD,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,GAAG,aAAa,GAAG,MAAM,CAAC;IACvE,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,mFAAmF;AACnF,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,CAAC,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IACnD,MAAM,EAAE,sBAAsB,EAAE,CAAC;CAClC;AAKD;;;;;;GAMG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IACJ,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uEAAuE;IACvE,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1D,GACA,OAAO,CAAC,4BAA4B,CAAC,CAiiBvC"}
|
|
@@ -0,0 +1,525 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.describeProjectDataStatus = describeProjectDataStatus;
|
|
4
|
+
exports.getProjectDeploymentDiagnostics = getProjectDeploymentDiagnostics;
|
|
5
|
+
const viem_1 = require("viem");
|
|
6
|
+
const juicebox_js_1 = require("../generated/juicebox.js");
|
|
7
|
+
const jbDirectoryAbi_js_1 = require("../generated/abi/jbDirectoryAbi.js");
|
|
8
|
+
const jbProjectsAbi_js_1 = require("../generated/abi/jbProjectsAbi.js");
|
|
9
|
+
const errors_js_1 = require("../utils/errors.js");
|
|
10
|
+
const nft_js_1 = require("./nft.js");
|
|
11
|
+
const permissions_js_1 = require("./permissions.js");
|
|
12
|
+
const rulesets_js_1 = require("./rulesets.js");
|
|
13
|
+
const types_js_1 = require("./types.js");
|
|
14
|
+
function describeProjectDataStatus(status) {
|
|
15
|
+
switch (status) {
|
|
16
|
+
case "available":
|
|
17
|
+
return "Indexed project details are available.";
|
|
18
|
+
case "missing":
|
|
19
|
+
return "The indexer returned no project record. This does not establish why it is missing.";
|
|
20
|
+
case "incomplete":
|
|
21
|
+
return "Some indexed project details are missing. This does not establish indexing progress.";
|
|
22
|
+
case "unavailable":
|
|
23
|
+
return "The indexer request did not complete. Indexing progress is unknown.";
|
|
24
|
+
case "not-checked":
|
|
25
|
+
return "The indexer was not checked.";
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const sameAddress = (left, right) => left.toLowerCase() === right.toLowerCase();
|
|
29
|
+
/** Inspect current v6 wiring without a wallet, tier enumeration or indexer.
|
|
30
|
+
* Reads are pinned to one block. Caller-supplied indexer evidence belongs in a
|
|
31
|
+
* separate report section: a failed indexer request proves nothing about wiring.
|
|
32
|
+
* Custom hooks/controllers are unsupported where capabilities cannot be verified,
|
|
33
|
+
* never invalid merely for differing from canonical deployments. Pricing units
|
|
34
|
+
* and operator powers are informational unless explicit expectations are supplied.
|
|
35
|
+
*/
|
|
36
|
+
async function getProjectDeploymentDiagnostics(client, args) {
|
|
37
|
+
const requestedOperator = args.operator && (0, viem_1.isAddress)(args.operator) ? args.operator : undefined;
|
|
38
|
+
const report = {
|
|
39
|
+
version: 6,
|
|
40
|
+
chainId: args.chainId,
|
|
41
|
+
projectId: args.projectId.toString(),
|
|
42
|
+
checkedAt: new Date().toISOString(),
|
|
43
|
+
checkedBlock: null,
|
|
44
|
+
kind: "unknown",
|
|
45
|
+
checks: [],
|
|
46
|
+
...(requestedOperator ? { operator: requestedOperator } : {}),
|
|
47
|
+
};
|
|
48
|
+
const add = (check) => {
|
|
49
|
+
if (check.status === "mismatch" && !check.action)
|
|
50
|
+
check.action =
|
|
51
|
+
"Compare these values with the original deployment call before choosing a correction; immutable settings may require a new deployment.";
|
|
52
|
+
report.checks.push(check);
|
|
53
|
+
};
|
|
54
|
+
const unavailable = (id, category, label, error) => add({
|
|
55
|
+
id,
|
|
56
|
+
category,
|
|
57
|
+
label,
|
|
58
|
+
status: (0, errors_js_1.isMissingContractFunctionError)(error)
|
|
59
|
+
? "unsupported"
|
|
60
|
+
: "unavailable",
|
|
61
|
+
message: (0, errors_js_1.isMissingContractFunctionError)(error)
|
|
62
|
+
? "The contract read reverted or returned no data, so this check could not be verified."
|
|
63
|
+
: "The chain read did not complete. No mismatch was established.",
|
|
64
|
+
action: "Retry the check or inspect this contract with your deployment configuration.",
|
|
65
|
+
});
|
|
66
|
+
if (args.projectId <= 0n) {
|
|
67
|
+
add({
|
|
68
|
+
id: "project",
|
|
69
|
+
category: "project",
|
|
70
|
+
status: "unsupported",
|
|
71
|
+
label: "Project",
|
|
72
|
+
message: "A positive project ID is required.",
|
|
73
|
+
});
|
|
74
|
+
return report;
|
|
75
|
+
}
|
|
76
|
+
let blockNumber;
|
|
77
|
+
try {
|
|
78
|
+
const chainId = await client.getChainId();
|
|
79
|
+
if (chainId !== args.chainId) {
|
|
80
|
+
add({
|
|
81
|
+
id: "network",
|
|
82
|
+
category: "project",
|
|
83
|
+
status: "unavailable",
|
|
84
|
+
label: "Network",
|
|
85
|
+
message: "The connected network does not match this project.",
|
|
86
|
+
actual: String(chainId),
|
|
87
|
+
expected: String(args.chainId),
|
|
88
|
+
action: "Choose the project's network and retry.",
|
|
89
|
+
});
|
|
90
|
+
return report;
|
|
91
|
+
}
|
|
92
|
+
blockNumber = await client.getBlockNumber();
|
|
93
|
+
report.checkedBlock = blockNumber.toString();
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
unavailable("network", "project", "Network");
|
|
97
|
+
return report;
|
|
98
|
+
}
|
|
99
|
+
let directory, projects, controller, revOwner, revDeployer, omni;
|
|
100
|
+
try {
|
|
101
|
+
directory = (0, types_js_1.v6Address)("JBDirectory", args.chainId);
|
|
102
|
+
projects = (0, types_js_1.v6Address)("JBProjects", args.chainId);
|
|
103
|
+
controller = (0, types_js_1.v6Address)("JBController", args.chainId);
|
|
104
|
+
revOwner = (0, types_js_1.v6Address)("REVOwner", args.chainId);
|
|
105
|
+
revDeployer = (0, types_js_1.v6Address)("REVDeployer", args.chainId);
|
|
106
|
+
omni = (0, types_js_1.v6Address)("JBOmnichainDeployer", args.chainId);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
add({
|
|
110
|
+
id: "network",
|
|
111
|
+
category: "project",
|
|
112
|
+
status: "unsupported",
|
|
113
|
+
label: "Network",
|
|
114
|
+
message: "This SDK has no supported v6 deployment on this network.",
|
|
115
|
+
});
|
|
116
|
+
return report;
|
|
117
|
+
}
|
|
118
|
+
// Every nested shared resolver uses this same block; no mutable latest reads.
|
|
119
|
+
const snapshot = {
|
|
120
|
+
...client,
|
|
121
|
+
readContract: (parameters) => client.readContract({ ...parameters, blockNumber }),
|
|
122
|
+
};
|
|
123
|
+
const read = snapshot.readContract;
|
|
124
|
+
const [ownerRead, controllerRead] = await Promise.allSettled([
|
|
125
|
+
read({
|
|
126
|
+
address: projects,
|
|
127
|
+
abi: jbProjectsAbi_js_1.jbProjectsAbi,
|
|
128
|
+
functionName: "ownerOf",
|
|
129
|
+
args: [args.projectId],
|
|
130
|
+
}),
|
|
131
|
+
read({
|
|
132
|
+
address: directory,
|
|
133
|
+
abi: jbDirectoryAbi_js_1.jbDirectoryAbi,
|
|
134
|
+
functionName: "controllerOf",
|
|
135
|
+
args: [args.projectId],
|
|
136
|
+
}),
|
|
137
|
+
]);
|
|
138
|
+
if (ownerRead.status === "rejected") {
|
|
139
|
+
unavailable("project.owner", "project", "Project owner", ownerRead.reason);
|
|
140
|
+
return report;
|
|
141
|
+
}
|
|
142
|
+
const owner = ownerRead.value;
|
|
143
|
+
const isRevnet = sameAddress(owner, revOwner);
|
|
144
|
+
report.kind = isRevnet ? "revnet" : "juicebox";
|
|
145
|
+
add({
|
|
146
|
+
id: "project.owner",
|
|
147
|
+
category: "project",
|
|
148
|
+
status: "passed",
|
|
149
|
+
label: "Project exists",
|
|
150
|
+
message: "The v6 project registry returned its current owner.",
|
|
151
|
+
actual: owner,
|
|
152
|
+
});
|
|
153
|
+
if (controllerRead.status === "rejected") {
|
|
154
|
+
unavailable("project.controller", "project", "Controller", controllerRead.reason);
|
|
155
|
+
return report;
|
|
156
|
+
}
|
|
157
|
+
if (!sameAddress(controllerRead.value, controller)) {
|
|
158
|
+
report.kind = "custom";
|
|
159
|
+
add({
|
|
160
|
+
id: "project.controller",
|
|
161
|
+
category: "project",
|
|
162
|
+
status: "unsupported",
|
|
163
|
+
label: "Controller",
|
|
164
|
+
message: "This controller requires deployment-specific checks.",
|
|
165
|
+
actual: controllerRead.value,
|
|
166
|
+
expected: controller,
|
|
167
|
+
action: "Compare with the controller chosen in the deployment script.",
|
|
168
|
+
});
|
|
169
|
+
return report;
|
|
170
|
+
}
|
|
171
|
+
add({
|
|
172
|
+
id: "project.controller",
|
|
173
|
+
category: "project",
|
|
174
|
+
status: "passed",
|
|
175
|
+
label: "Controller",
|
|
176
|
+
message: "The project uses the supported v6 controller.",
|
|
177
|
+
actual: controller,
|
|
178
|
+
});
|
|
179
|
+
let canonicalRevnet = false;
|
|
180
|
+
if (isRevnet) {
|
|
181
|
+
try {
|
|
182
|
+
const hash = await read({
|
|
183
|
+
address: revDeployer,
|
|
184
|
+
abi: juicebox_js_1.revDeployerAbi,
|
|
185
|
+
functionName: "hashedEncodedConfigurationOf",
|
|
186
|
+
args: [args.projectId],
|
|
187
|
+
});
|
|
188
|
+
canonicalRevnet = hash !== viem_1.zeroHash;
|
|
189
|
+
add({
|
|
190
|
+
id: "project.provenance",
|
|
191
|
+
category: "project",
|
|
192
|
+
status: canonicalRevnet ? "passed" : "unsupported",
|
|
193
|
+
label: "Revnet configuration",
|
|
194
|
+
message: canonicalRevnet
|
|
195
|
+
? "The canonical deployer has a configuration for this revnet."
|
|
196
|
+
: "No canonical configuration is registered. Ownership alone does not establish canonical deployment.",
|
|
197
|
+
actual: hash,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
unavailable("project.provenance", "project", "Revnet configuration", error);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
let current;
|
|
205
|
+
try {
|
|
206
|
+
current = await (0, rulesets_js_1.getCurrentRuleset)(snapshot, args);
|
|
207
|
+
}
|
|
208
|
+
catch (error) {
|
|
209
|
+
unavailable("project.ruleset", "project", "Current ruleset", error);
|
|
210
|
+
if (!isRevnet)
|
|
211
|
+
return report;
|
|
212
|
+
}
|
|
213
|
+
if (current?.ruleset.id === 0) {
|
|
214
|
+
add({
|
|
215
|
+
id: "project.ruleset",
|
|
216
|
+
category: "project",
|
|
217
|
+
status: "info",
|
|
218
|
+
label: "Current ruleset",
|
|
219
|
+
message: "No active ruleset is available yet. Hook routing cannot be checked.",
|
|
220
|
+
});
|
|
221
|
+
if (!isRevnet)
|
|
222
|
+
return report;
|
|
223
|
+
current = undefined;
|
|
224
|
+
}
|
|
225
|
+
const metadata = current?.metadata;
|
|
226
|
+
if (metadata) {
|
|
227
|
+
const expectedHook = canonicalRevnet ? revOwner : undefined;
|
|
228
|
+
add({
|
|
229
|
+
id: "hook.routing",
|
|
230
|
+
category: "hook",
|
|
231
|
+
status: expectedHook && !sameAddress(metadata.dataHook, expectedHook)
|
|
232
|
+
? "mismatch"
|
|
233
|
+
: "info",
|
|
234
|
+
label: "Payment hook routing",
|
|
235
|
+
message: "The current ruleset selects this data hook.",
|
|
236
|
+
actual: metadata.dataHook,
|
|
237
|
+
...(expectedHook ? { expected: expectedHook } : {}),
|
|
238
|
+
});
|
|
239
|
+
const canonicalComposite = canonicalRevnet;
|
|
240
|
+
add({
|
|
241
|
+
id: "hook.flags",
|
|
242
|
+
category: "hook",
|
|
243
|
+
status: canonicalComposite &&
|
|
244
|
+
(!metadata.useDataHookForPay || !metadata.useDataHookForCashOut)
|
|
245
|
+
? "mismatch"
|
|
246
|
+
: "info",
|
|
247
|
+
label: "Hook enablement",
|
|
248
|
+
message: canonicalComposite
|
|
249
|
+
? "Canonical composite hooks enable both payment and cash-out routing."
|
|
250
|
+
: "Hook enablement can be an intentional ruleset choice.",
|
|
251
|
+
actual: `payments=${metadata.useDataHookForPay}; cashOuts=${metadata.useDataHookForCashOut}`,
|
|
252
|
+
...(canonicalComposite
|
|
253
|
+
? { expected: "payments=true; cashOuts=true" }
|
|
254
|
+
: {}),
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
let resolved;
|
|
258
|
+
try {
|
|
259
|
+
resolved = await (0, nft_js_1.resolveProject721Hook)(snapshot, {
|
|
260
|
+
...args,
|
|
261
|
+
isRevnet,
|
|
262
|
+
ruleset: current,
|
|
263
|
+
includeInactiveHook: true,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
catch (error) {
|
|
267
|
+
unavailable("hook.shop", "hook", "Shop hook", error);
|
|
268
|
+
return report;
|
|
269
|
+
}
|
|
270
|
+
if (!resolved) {
|
|
271
|
+
const custom = metadata &&
|
|
272
|
+
metadata.dataHook !== viem_1.zeroAddress &&
|
|
273
|
+
!sameAddress(metadata.dataHook, omni) &&
|
|
274
|
+
!isRevnet;
|
|
275
|
+
if (custom)
|
|
276
|
+
report.kind = "custom";
|
|
277
|
+
add({
|
|
278
|
+
id: "hook.shop",
|
|
279
|
+
category: "hook",
|
|
280
|
+
status: canonicalRevnet ? "mismatch" : custom ? "unsupported" : "info",
|
|
281
|
+
label: "Shop hook",
|
|
282
|
+
message: canonicalRevnet
|
|
283
|
+
? "The canonical revnet has no registered shop hook."
|
|
284
|
+
: custom
|
|
285
|
+
? "The selected custom data hook does not expose a supported 721 shop."
|
|
286
|
+
: "No 721 shop is configured. This is valid for a Juicebox project.",
|
|
287
|
+
...(canonicalRevnet
|
|
288
|
+
? { actual: viem_1.zeroAddress, expected: "A registered 721 hook" }
|
|
289
|
+
: {}),
|
|
290
|
+
});
|
|
291
|
+
return report;
|
|
292
|
+
}
|
|
293
|
+
const hook = resolved.hook;
|
|
294
|
+
add({
|
|
295
|
+
id: "hook.shop",
|
|
296
|
+
category: "hook",
|
|
297
|
+
status: "passed",
|
|
298
|
+
label: "Shop hook",
|
|
299
|
+
message: "The project resolves to a hook reporting a 721 store address.",
|
|
300
|
+
actual: hook,
|
|
301
|
+
});
|
|
302
|
+
const bind = async (id, label, readValue, expected) => {
|
|
303
|
+
try {
|
|
304
|
+
const actual = String(await readValue());
|
|
305
|
+
add({
|
|
306
|
+
id,
|
|
307
|
+
category: "hook",
|
|
308
|
+
label,
|
|
309
|
+
status: expected
|
|
310
|
+
? actual.toLowerCase() === expected.toLowerCase()
|
|
311
|
+
? "passed"
|
|
312
|
+
: "mismatch"
|
|
313
|
+
: "info",
|
|
314
|
+
message: expected
|
|
315
|
+
? "Compared the hook's binding with this project."
|
|
316
|
+
: "The hook reported this value; custom ownership can be intentional.",
|
|
317
|
+
actual,
|
|
318
|
+
...(expected ? { expected } : {}),
|
|
319
|
+
});
|
|
320
|
+
return actual;
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
unavailable(id, "hook", label, error);
|
|
324
|
+
return undefined;
|
|
325
|
+
}
|
|
326
|
+
};
|
|
327
|
+
const [hookProject, , hookOwner, permissionRegistry] = await Promise.all([
|
|
328
|
+
bind("hook.projectId", "Hook project", () => read({
|
|
329
|
+
address: hook,
|
|
330
|
+
abi: juicebox_js_1.jb721TiersHookAbi,
|
|
331
|
+
functionName: "projectId",
|
|
332
|
+
}), args.projectId.toString()),
|
|
333
|
+
bind("hook.directory", "Hook directory", () => read({
|
|
334
|
+
address: hook,
|
|
335
|
+
abi: juicebox_js_1.jb721TiersHookAbi,
|
|
336
|
+
functionName: "DIRECTORY",
|
|
337
|
+
}), directory),
|
|
338
|
+
bind("hook.owner", "Shop authority", () => read({ address: hook, abi: juicebox_js_1.jb721TiersHookAbi, functionName: "owner" }), canonicalRevnet ? revOwner : undefined),
|
|
339
|
+
bind("hook.permissions", "Permission registry", () => read({
|
|
340
|
+
address: hook,
|
|
341
|
+
abi: juicebox_js_1.jb721TiersHookAbi,
|
|
342
|
+
functionName: "PERMISSIONS",
|
|
343
|
+
})),
|
|
344
|
+
]);
|
|
345
|
+
await Promise.all([
|
|
346
|
+
(async () => {
|
|
347
|
+
if (sameAddress(resolved.store, viem_1.zeroAddress)) {
|
|
348
|
+
add({
|
|
349
|
+
id: "hook.store",
|
|
350
|
+
category: "hook",
|
|
351
|
+
status: "mismatch",
|
|
352
|
+
label: "Shop store",
|
|
353
|
+
message: "The hook reports no store address.",
|
|
354
|
+
actual: viem_1.zeroAddress,
|
|
355
|
+
expected: "A deployed 721 store",
|
|
356
|
+
action: "Compare the hook initialization with the deployment script before using its shop.",
|
|
357
|
+
});
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
try {
|
|
361
|
+
const maxTierId = await read({
|
|
362
|
+
address: resolved.store,
|
|
363
|
+
abi: juicebox_js_1.jb721TiersHookStoreAbi,
|
|
364
|
+
functionName: "maxTierIdOf",
|
|
365
|
+
args: [hook],
|
|
366
|
+
});
|
|
367
|
+
add({
|
|
368
|
+
id: "hook.store",
|
|
369
|
+
category: "hook",
|
|
370
|
+
status: "passed",
|
|
371
|
+
label: "Shop store",
|
|
372
|
+
message: `The reported store is readable; highest tier ID is ${maxTierId}.`,
|
|
373
|
+
actual: resolved.store,
|
|
374
|
+
});
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
unavailable("hook.store", "hook", "Shop store", error);
|
|
378
|
+
}
|
|
379
|
+
})(),
|
|
380
|
+
(async () => {
|
|
381
|
+
try {
|
|
382
|
+
const factory = await read({
|
|
383
|
+
address: (0, types_js_1.v6Address)("JBAddressRegistry", args.chainId),
|
|
384
|
+
abi: juicebox_js_1.jbAddressRegistryAbi,
|
|
385
|
+
functionName: "deployerOf",
|
|
386
|
+
args: [hook],
|
|
387
|
+
});
|
|
388
|
+
const expected = (0, types_js_1.v6Address)("JB721TiersHookDeployer", args.chainId);
|
|
389
|
+
add({
|
|
390
|
+
id: "hook.provenance",
|
|
391
|
+
category: "hook",
|
|
392
|
+
status: sameAddress(factory, expected) ? "passed" : "unsupported",
|
|
393
|
+
label: "Shop factory",
|
|
394
|
+
message: sameAddress(factory, expected)
|
|
395
|
+
? "The registry records the canonical 721 factory."
|
|
396
|
+
: "The registry does not establish canonical factory provenance. Custom hooks need separate review.",
|
|
397
|
+
actual: factory,
|
|
398
|
+
expected,
|
|
399
|
+
});
|
|
400
|
+
}
|
|
401
|
+
catch (error) {
|
|
402
|
+
unavailable("hook.provenance", "hook", "Shop factory", error);
|
|
403
|
+
}
|
|
404
|
+
})(),
|
|
405
|
+
(async () => {
|
|
406
|
+
try {
|
|
407
|
+
const [currency, decimals] = await read({
|
|
408
|
+
address: hook,
|
|
409
|
+
abi: juicebox_js_1.jb721TiersHookAbi,
|
|
410
|
+
functionName: "pricingContext",
|
|
411
|
+
});
|
|
412
|
+
const expected = args.expectedPricing;
|
|
413
|
+
add({
|
|
414
|
+
id: "shop.pricing",
|
|
415
|
+
category: "pricing",
|
|
416
|
+
status: expected
|
|
417
|
+
? currency === BigInt(expected.currency) &&
|
|
418
|
+
decimals === BigInt(expected.decimals)
|
|
419
|
+
? "passed"
|
|
420
|
+
: "mismatch"
|
|
421
|
+
: "info",
|
|
422
|
+
label: "Shop pricing",
|
|
423
|
+
message: "Prices use these units. Precision alone cannot establish whether an item was priced as intended.",
|
|
424
|
+
actual: `currency=${currency}; decimals=${decimals}`,
|
|
425
|
+
...(expected
|
|
426
|
+
? {
|
|
427
|
+
expected: `currency=${expected.currency}; decimals=${expected.decimals}`,
|
|
428
|
+
}
|
|
429
|
+
: {}),
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
catch (error) {
|
|
433
|
+
unavailable("shop.pricing", "pricing", "Shop pricing", error);
|
|
434
|
+
}
|
|
435
|
+
})(),
|
|
436
|
+
(async () => {
|
|
437
|
+
if (args.operator && !requestedOperator) {
|
|
438
|
+
add({
|
|
439
|
+
id: "shop.permissions",
|
|
440
|
+
category: "permissions",
|
|
441
|
+
status: "unsupported",
|
|
442
|
+
label: "Shop permissions",
|
|
443
|
+
message: "The supplied operator is not a valid address.",
|
|
444
|
+
action: "Supply the operator address from your deployment configuration.",
|
|
445
|
+
});
|
|
446
|
+
return;
|
|
447
|
+
}
|
|
448
|
+
if (!requestedOperator) {
|
|
449
|
+
add({
|
|
450
|
+
id: "shop.permissions",
|
|
451
|
+
category: "permissions",
|
|
452
|
+
status: "info",
|
|
453
|
+
label: "Shop permissions",
|
|
454
|
+
message: "Operator permissions can be intentionally restricted. Supply an operator address to read its current powers.",
|
|
455
|
+
...(hookOwner ? { actual: `Shop authority: ${hookOwner}` } : {}),
|
|
456
|
+
});
|
|
457
|
+
return;
|
|
458
|
+
}
|
|
459
|
+
if (!hookOwner || !hookProject || !permissionRegistry) {
|
|
460
|
+
const dependencies = [
|
|
461
|
+
"hook.owner",
|
|
462
|
+
"hook.projectId",
|
|
463
|
+
"hook.permissions",
|
|
464
|
+
].map((id) => report.checks.find((item) => item.id === id));
|
|
465
|
+
add({
|
|
466
|
+
id: "shop.permissions",
|
|
467
|
+
category: "permissions",
|
|
468
|
+
status: dependencies.some((item) => item?.status === "unavailable")
|
|
469
|
+
? "unavailable"
|
|
470
|
+
: "unsupported",
|
|
471
|
+
label: "Shop permissions",
|
|
472
|
+
message: "A required hook authority or binding read could not be verified. Operator powers remain unknown.",
|
|
473
|
+
action: "Retry the missing hook reads before checking operator powers.",
|
|
474
|
+
});
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
const operator = requestedOperator;
|
|
478
|
+
if (sameAddress(operator, viem_1.zeroAddress) ||
|
|
479
|
+
hookProject !== args.projectId.toString() ||
|
|
480
|
+
!permissionRegistry ||
|
|
481
|
+
!sameAddress(permissionRegistry, (0, types_js_1.v6Address)("JBPermissions", args.chainId))) {
|
|
482
|
+
add({
|
|
483
|
+
id: "shop.permissions",
|
|
484
|
+
category: "permissions",
|
|
485
|
+
status: "unsupported",
|
|
486
|
+
label: "Shop permissions",
|
|
487
|
+
message: "Operator powers cannot be established for an unverified project binding, custom permission registry or zero operator.",
|
|
488
|
+
action: "Verify the hook's project and permission registry, then supply a nonzero operator address.",
|
|
489
|
+
});
|
|
490
|
+
return;
|
|
491
|
+
}
|
|
492
|
+
const permissions = [
|
|
493
|
+
["Adjust tiers", permissions_js_1.JBPermissionIdsV6.ADJUST_721_TIERS],
|
|
494
|
+
["Update metadata", permissions_js_1.JBPermissionIdsV6.SET_721_METADATA],
|
|
495
|
+
["Mint items", permissions_js_1.JBPermissionIdsV6.MINT_721],
|
|
496
|
+
["Increase discounts", permissions_js_1.JBPermissionIdsV6.SET_721_DISCOUNT_PERCENT],
|
|
497
|
+
];
|
|
498
|
+
await Promise.all(permissions.map(async ([label, id]) => {
|
|
499
|
+
try {
|
|
500
|
+
const allowed = sameAddress(operator, hookOwner) ||
|
|
501
|
+
(await (0, permissions_js_1.hasPermissions)(snapshot, {
|
|
502
|
+
...args,
|
|
503
|
+
operator,
|
|
504
|
+
account: hookOwner,
|
|
505
|
+
permissionIds: [id],
|
|
506
|
+
}));
|
|
507
|
+
add({
|
|
508
|
+
id: `shop.permission.${id}`,
|
|
509
|
+
category: "permissions",
|
|
510
|
+
status: "info",
|
|
511
|
+
label,
|
|
512
|
+
message: "This is the supplied operator's current capability, including owner, root and wildcard authority.",
|
|
513
|
+
actual: allowed ? "Allowed" : "Not allowed",
|
|
514
|
+
});
|
|
515
|
+
}
|
|
516
|
+
catch (error) {
|
|
517
|
+
unavailable(`shop.permission.${id}`, "permissions", label, error);
|
|
518
|
+
}
|
|
519
|
+
}));
|
|
520
|
+
})(),
|
|
521
|
+
]);
|
|
522
|
+
report.checks.sort((left, right) => left.id.localeCompare(right.id));
|
|
523
|
+
return report;
|
|
524
|
+
}
|
|
525
|
+
//# sourceMappingURL=deploymentDiagnostics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploymentDiagnostics.js","sourceRoot":"","sources":["../../../src/v6/deploymentDiagnostics.ts"],"names":[],"mappings":"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"}
|
package/dist/cjs/v6/index.d.ts
CHANGED
|
@@ -22,4 +22,7 @@ export * from "./permissions.js";
|
|
|
22
22
|
export * from "./suckers.js";
|
|
23
23
|
export * from "./loans.js";
|
|
24
24
|
export * from "./sticky.js";
|
|
25
|
+
export * from "./revnet721.js";
|
|
26
|
+
export * from "./deploymentDiagnostics.js";
|
|
27
|
+
export * from "./deploymentAbi.js";
|
|
25
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,oBAAoB,CAAC"}
|
package/dist/cjs/v6/index.js
CHANGED
|
@@ -38,4 +38,7 @@ __exportStar(require("./permissions.js"), exports);
|
|
|
38
38
|
__exportStar(require("./suckers.js"), exports);
|
|
39
39
|
__exportStar(require("./loans.js"), exports);
|
|
40
40
|
__exportStar(require("./sticky.js"), exports);
|
|
41
|
+
__exportStar(require("./revnet721.js"), exports);
|
|
42
|
+
__exportStar(require("./deploymentDiagnostics.js"), exports);
|
|
43
|
+
__exportStar(require("./deploymentAbi.js"), exports);
|
|
41
44
|
//# sourceMappingURL=index.js.map
|