@bananapus/nana-sdk-core 2.10.0 → 2.12.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/contracts.d.ts +8 -1
- package/dist/cjs/contracts.d.ts.map +1 -1
- package/dist/cjs/contracts.js +9 -1
- package/dist/cjs/contracts.js.map +1 -1
- package/dist/cjs/generated/juicebox.d.ts +3846 -0
- package/dist/cjs/generated/juicebox.d.ts.map +1 -1
- package/dist/cjs/generated/juicebox.js +2802 -2
- package/dist/cjs/generated/juicebox.js.map +1 -1
- package/dist/cjs/jbcenter/decode.d.ts +0 -10
- package/dist/cjs/jbcenter/decode.d.ts.map +1 -1
- package/dist/cjs/jbcenter/decode.js +0 -45
- package/dist/cjs/jbcenter/decode.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/sticky.d.ts +70 -0
- package/dist/cjs/v6/sticky.d.ts.map +1 -0
- package/dist/cjs/v6/sticky.js +132 -0
- package/dist/cjs/v6/sticky.js.map +1 -0
- package/dist/esm/contracts.d.ts +8 -1
- package/dist/esm/contracts.d.ts.map +1 -1
- package/dist/esm/contracts.js +8 -0
- package/dist/esm/contracts.js.map +1 -1
- package/dist/esm/generated/juicebox.d.ts +3846 -0
- package/dist/esm/generated/juicebox.d.ts.map +1 -1
- package/dist/esm/generated/juicebox.js +2800 -0
- package/dist/esm/generated/juicebox.js.map +1 -1
- package/dist/esm/jbcenter/decode.d.ts +0 -10
- package/dist/esm/jbcenter/decode.d.ts.map +1 -1
- package/dist/esm/jbcenter/decode.js +1 -46
- package/dist/esm/jbcenter/decode.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/sticky.d.ts +70 -0
- package/dist/esm/v6/sticky.d.ts.map +1 -0
- package/dist/esm/v6/sticky.js +123 -0
- package/dist/esm/v6/sticky.js.map +1 -0
- package/package.json +1 -1
|
@@ -34,16 +34,6 @@ export type JBCenterDecodedLaunch = {
|
|
|
34
34
|
stages: REVConfig["stageConfigurations"];
|
|
35
35
|
description: REVConfig["description"];
|
|
36
36
|
accountingContexts: readonly JBAccountingContext[];
|
|
37
|
-
} | {
|
|
38
|
-
flavor: "homerun-fund";
|
|
39
|
-
owner: Address;
|
|
40
|
-
projectUri: string;
|
|
41
|
-
tokenName: string;
|
|
42
|
-
ticker: string;
|
|
43
|
-
to: Address;
|
|
44
|
-
mustStartAtOrAfter: number;
|
|
45
|
-
salt: Hex;
|
|
46
|
-
peerSuckerDeployers: readonly Address[];
|
|
47
37
|
} | {
|
|
48
38
|
flavor: "safe-create";
|
|
49
39
|
to: Address;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../../src/jbcenter/decode.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"decode.d.ts","sourceRoot":"","sources":["../../../src/jbcenter/decode.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,OAAO,EACZ,KAAK,GAAG,EACT,MAAM,MAAM,CAAC;AAQd,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAW7D,MAAM,MAAM,qBAAqB,GAC7B;IACE,MAAM,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,sBAAsB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;CACd,GACD;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,sBAAsB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,GAAG,CAAC;CACX,GACD;IACE,MAAM,EAAE,WAAW,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,qBAAqB,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,sBAAsB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,CAAC;CACjB,GACD;IACE,MAAM,EAAE,QAAQ,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,SAAS,CAAC,qBAAqB,CAAC,CAAC;IACzC,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IACtC,kBAAkB,EAAE,SAAS,mBAAmB,EAAE,CAAC;CACpD,GACD;IACE,MAAM,EAAE,aAAa,CAAC;IACtB,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,SAAS,OAAO,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,OAAO,CAAC;IACzB,OAAO,EAAE,OAAO,CAAC;CAClB,GACD;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,EAAE,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,GAAG,CAAA;CAAE,CAAC;AAmPtD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,sBAAsB,GAC3B,qBAAqB,CAMvB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { decodeFunctionData, encodeFunctionData, isAddressEqual,
|
|
1
|
+
import { decodeFunctionData, encodeFunctionData, isAddressEqual, slice, toHex, zeroAddress, } from "viem";
|
|
2
2
|
import { jb721TiersHookProjectDeployerAbi, jbControllerAbi, jbOmnichainDeployerAbi, revDeployerAbi, } from "../generated/juicebox.js";
|
|
3
3
|
import { v6Address } from "../v6/types.js";
|
|
4
4
|
import { SAFE_CREATE_ABI, SAFE_FACTORY, SAFE_FALLBACK, SAFE_PROXY_CREATION_CODE, SAFE_SINGLETON, buildSafeInitializer, predictSafeAddress, } from "../safe.js";
|
|
@@ -129,50 +129,6 @@ function decodeRevnetDeploy(call) {
|
|
|
129
129
|
return null;
|
|
130
130
|
}
|
|
131
131
|
}
|
|
132
|
-
/** Source: HomerunDeployer.sol. Carried here because Homerun deploys its own
|
|
133
|
-
* per-chain deployer, which the V6 address registry does not name. */
|
|
134
|
-
const homerunLaunchFundAbi = parseAbi([
|
|
135
|
-
"function launchFundFor(address owner, string projectUri, string name, string ticker, uint48 mustStartAtOrAfter, bytes32 salt, address[] peerSuckerDeployers) payable returns (uint256 projectId, address token)",
|
|
136
|
-
]);
|
|
137
|
-
/** HomerunDeployer's address on each chain it is deployed to: one salt across
|
|
138
|
-
* the mainnets, another across the testnets. Source: Homerun's
|
|
139
|
-
* `deployments/<chain>/HomerunDeployer.json`. */
|
|
140
|
-
const HOMERUN_DEPLOYER_ADDRESSES = {
|
|
141
|
-
1: "0xac9250654ea223513ffee25fdb647dc016873905",
|
|
142
|
-
10: "0xac9250654ea223513ffee25fdb647dc016873905",
|
|
143
|
-
8453: "0xac9250654ea223513ffee25fdb647dc016873905",
|
|
144
|
-
42161: "0xac9250654ea223513ffee25fdb647dc016873905",
|
|
145
|
-
11155111: "0xe944fe96765450877f95cc36aa36ec72b4388721",
|
|
146
|
-
11155420: "0xe944fe96765450877f95cc36aa36ec72b4388721",
|
|
147
|
-
84532: "0xe944fe96765450877f95cc36aa36ec72b4388721",
|
|
148
|
-
421614: "0xe944fe96765450877f95cc36aa36ec72b4388721",
|
|
149
|
-
};
|
|
150
|
-
function decodeHomerunFundLaunch(call) {
|
|
151
|
-
try {
|
|
152
|
-
const address = HOMERUN_DEPLOYER_ADDRESSES[call.chainId];
|
|
153
|
-
if (!address || !isAddressEqual(address, call.to))
|
|
154
|
-
return null;
|
|
155
|
-
const decoded = decodeFunctionData({
|
|
156
|
-
abi: homerunLaunchFundAbi,
|
|
157
|
-
data: call.data,
|
|
158
|
-
});
|
|
159
|
-
const [owner, projectUri, tokenName, ticker, mustStartAtOrAfter, salt, peerSuckerDeployers,] = decoded.args;
|
|
160
|
-
return {
|
|
161
|
-
flavor: "homerun-fund",
|
|
162
|
-
owner,
|
|
163
|
-
projectUri,
|
|
164
|
-
tokenName,
|
|
165
|
-
ticker,
|
|
166
|
-
to: call.to,
|
|
167
|
-
mustStartAtOrAfter,
|
|
168
|
-
salt,
|
|
169
|
-
peerSuckerDeployers,
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
catch {
|
|
173
|
-
return null;
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
132
|
/** JB Center's ceiling on the owners one intent's Safe may carry. */
|
|
177
133
|
const MAX_INTENT_SAFE_OWNERS = 20;
|
|
178
134
|
/**
|
|
@@ -253,7 +209,6 @@ const DECODERS = [
|
|
|
253
209
|
decodeProject721Launch,
|
|
254
210
|
decodeOmnichainLaunch,
|
|
255
211
|
decodeRevnetDeploy,
|
|
256
|
-
decodeHomerunFundLaunch,
|
|
257
212
|
];
|
|
258
213
|
/**
|
|
259
214
|
* Recognize a frozen `{ chainId, to, data }` deployment call (as produced by
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../../src/jbcenter/decode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,
|
|
1
|
+
{"version":3,"file":"decode.js","sourceRoot":"","sources":["../../../src/jbcenter/decode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,KAAK,EACL,KAAK,EACL,WAAW,GAGZ,MAAM,MAAM,CAAC;AACd,OAAO,EACL,gCAAgC,EAChC,eAAe,EACf,sBAAsB,EACtB,cAAc,GACf,MAAM,0BAA0B,CAAC;AAMlC,OAAO,EAAE,SAAS,EAAmB,MAAM,gBAAgB,CAAC;AAE5D,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,EACb,wBAAwB,EACxB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAiDpB,oFAAoF;AACpF,SAAS,UAAU,CAAC,QAAoB,EAAE,OAAe;IACvD,IAAI,CAAC;QACH,OAAO,SAAS,CAAC,QAAQ,EAAE,OAAoB,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,IAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACzD,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC;YACjC,GAAG,EAAE,eAAe;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,YAAY,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAC7D,MAAM,CACJ,KAAK,EACL,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,IAAI,EACL,GAAG,OAAO,CAAC,IAAI,CAAC;QACjB,OAAO;YACL,MAAM,EAAE,SAAS;YACjB,KAAK;YACL,UAAU;YACV,qBAAqB;YACrB,sBAAsB;YACtB,IAAI;SACL,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,+BAA+B,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC;YACjC,GAAG,EAAE,gCAAgC;YACrC,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,YAAY,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAC7D,MAAM,CAAC,KAAK,EAAE,AAAD,EAAG,mBAAmB,EAAE,AAAD,EAAG,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QAC5D,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,KAAK;YACL,UAAU,EAAE,mBAAmB,CAAC,UAAU;YAC1C,yEAAyE;YACzE,sEAAsE;YACtE,wEAAwE;YACxE,qBAAqB,EACnB,mBAAmB,CAAC,qBAA8D;YACpF,sBAAsB,EAAE,mBAAmB,CAAC,sBAAsB;YAClE,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,IAAI;SACL,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC;YACjC,GAAG,EAAE,sBAAsB;YAC3B,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,YAAY,KAAK,kBAAkB;YAAE,OAAO,IAAI,CAAC;QAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM,CACJ,KAAK,EACL,UAAU,EACV,AADW,EAEX,qBAAqB,EACrB,sBAAsB,EACtB,IAAI,EACL,GAAG,IAAI,CAAC;YACT,OAAO;gBACL,MAAM,EAAE,WAAW;gBACnB,KAAK;gBACL,UAAU;gBACV,qBAAqB;gBACrB,sBAAsB;gBACtB,IAAI;gBACJ,MAAM,EAAE,IAAI;aACb,CAAC;QACJ,CAAC;QACD,MAAM,CACJ,KAAK,EACL,UAAU,EACV,qBAAqB,EACrB,sBAAsB,EACtB,IAAI,EACL,GAAG,IAAI,CAAC;QACT,OAAO;YACL,MAAM,EAAE,WAAW;YACnB,KAAK;YACL,UAAU;YACV,qBAAqB;YACrB,sBAAsB;YACtB,IAAI;YACJ,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CACzB,IAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC;YACjC,GAAG,EAAE,cAAc;YACnB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,YAAY,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QACtD,MAAM,CAAC,EAAE,MAAM,EAAE,kBAAkB,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;QACpD,OAAO;YACL,MAAM,EAAE,QAAQ;YAChB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG;YAClC,MAAM,EAAE,MAAM,CAAC,mBAAmB;YAClC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,kBAAkB;SACnB,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,qEAAqE;AACrE,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC;;;;;GAKG;AACH,SAAS,gBAAgB,CACvB,IAA4B;IAE5B,IAAI,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,IAAI,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,MAAM,MAAM,GAAG,kBAAkB,CAAC;YAChC,GAAG,EAAE,eAAe;YACpB,IAAI,EAAE,IAAI,CAAC,IAAI;SAChB,CAAC,CAAC;QACH,IAAI,MAAM,CAAC,YAAY,KAAK,sBAAsB;YAAE,OAAO,IAAI,CAAC;QAChE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC;YAAE,OAAO,IAAI,CAAC;QAC5D,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC/B,GAAG,EAAE,eAAe;YACpB,IAAI,EAAE,WAAW;SAClB,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QAChD,MAAM,CACJ,MAAM,EACN,SAAS,EACT,EAAE,EACF,IAAI,EACJ,eAAe,EACf,YAAY,EACZ,OAAO,EACP,eAAe,EAChB,GAAG,KAAK,CAAC,IAAI,CAAC;QACf,IACE,MAAM,CAAC,MAAM,GAAG,CAAC;YACjB,MAAM,CAAC,MAAM,GAAG,sBAAsB;YACtC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAC5C,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI;gBACtD,MAAM,CAAC,MAAM;YACf,SAAS,GAAG,EAAE;YACd,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YACjC,CAAC,cAAc,CAAC,EAAE,EAAE,WAAW,CAAC;YAChC,IAAI,KAAK,IAAI;YACb,CAAC,cAAc,CAAC,eAAe,EAAE,aAAa,CAAC;YAC/C,CAAC,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC;YAC1C,OAAO,KAAK,EAAE;YACd,CAAC,cAAc,CAAC,eAAe,EAAE,WAAW,CAAC,EAC7C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,GAAG;YACX,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;YACnB,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC;YAC5B,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;YACrC,iBAAiB,EAAE,wBAAwB;SAC5C,CAAC;QACF,yEAAyE;QACzE,wEAAwE;QACxE,oEAAoE;QACpE,IACE,kBAAkB,CAAC;YACjB,GAAG,EAAE,eAAe;YACpB,YAAY,EAAE,sBAAsB;YACpC,IAAI,EAAE,CAAC,cAAc,EAAE,oBAAoB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;SAC1D,CAAC,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAC5C,CAAC;YACD,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,MAAM,EAAE,aAAa;YACrB,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,SAAS;YACT,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,eAAe;YACf,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC;SAClC,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,QAAQ,GAAG;IACf,gBAAgB;IAChB,mBAAmB;IACnB,sBAAsB;IACtB,qBAAqB;IACrB,kBAAkB;CACnB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAA4B;IAE5B,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO;YAAE,OAAO,OAAO,CAAC;IAC9B,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AAC9E,CAAC"}
|
package/dist/esm/v6/index.d.ts
CHANGED
|
@@ -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,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"}
|
|
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,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"}
|
package/dist/esm/v6/index.js
CHANGED
package/dist/esm/v6/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","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,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"}
|
|
1
|
+
{"version":3,"file":"index.js","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,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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { Address } from "viem";
|
|
2
|
+
import { JBChainId } from "../types.js";
|
|
3
|
+
import { JBSplit } from "./splits.js";
|
|
4
|
+
/**
|
|
5
|
+
* A split routes funds to Sticky holders when its `hook` is the chain's
|
|
6
|
+
* `StickyDistributor`. The distributor reads the rest of the split this way:
|
|
7
|
+
*
|
|
8
|
+
* - `beneficiary` is the Sticky token whose holders are rewarded.
|
|
9
|
+
* - `projectId` is the reward group: {@link STICKY_DEFAULT_GROUP_ID} splits the
|
|
10
|
+
* pot by delegated voting power at the round's snapshot, and a tenure group
|
|
11
|
+
* ({@link stickyGroupId}) splits it by stake held for a range of weeks.
|
|
12
|
+
*
|
|
13
|
+
* The distributor never reverts on a bad group or beneficiary, since a
|
|
14
|
+
* split-hook revert returns the funds to the project. A `projectId` that
|
|
15
|
+
* {@link validateStickyGroupId} rejects funds the default group instead, and so
|
|
16
|
+
* does a tenure group whose beneficiary the Sticky hook does not track. The
|
|
17
|
+
* distributor has no public view for that second case: a token is tracked when
|
|
18
|
+
* `stickyHookAbi` `tokenOf(projectId)` returns the token, where `projectId` is
|
|
19
|
+
* the token's own `PROJECT_ID()`.
|
|
20
|
+
*/
|
|
21
|
+
/** The default reward group: every holder, weighted by delegated voting power. */
|
|
22
|
+
export declare const STICKY_DEFAULT_GROUP_ID = 0n;
|
|
23
|
+
/** A tenure group ID is `minWeeks * STICKY_CRITERIA_BASE + maxWeeks`. */
|
|
24
|
+
export declare const STICKY_CRITERIA_BASE = 1000n;
|
|
25
|
+
/** The highest `minWeeks` or `maxWeeks` a tenure group can use. */
|
|
26
|
+
export declare const STICKY_MAX_CRITERIA_WEEKS = 520;
|
|
27
|
+
/**
|
|
28
|
+
* A Sticky reward group. A tenure group rewards stake added between `maxWeeks`
|
|
29
|
+
* and `minWeeks` before the round started; `maxWeeks` 0 means no upper bound.
|
|
30
|
+
*/
|
|
31
|
+
export type StickyGroup = {
|
|
32
|
+
kind: "default";
|
|
33
|
+
} | {
|
|
34
|
+
kind: "tenure";
|
|
35
|
+
minWeeks: number;
|
|
36
|
+
maxWeeks: number;
|
|
37
|
+
};
|
|
38
|
+
/** The `StickyDistributor` a chain's Sticky splits must use as their hook. */
|
|
39
|
+
export declare function stickyDistributorAddress(chainId: JBChainId): Address;
|
|
40
|
+
/** Whether a split pays Sticky holders on this chain. */
|
|
41
|
+
export declare function isStickySplit(split: Pick<JBSplit, "hook">, chainId: JBChainId): boolean;
|
|
42
|
+
/**
|
|
43
|
+
* Why the distributor would not honor a group ID, or null when it would.
|
|
44
|
+
* Gives the same answer as the distributor's pure `isValidGroupId` view: 0 is
|
|
45
|
+
* valid, otherwise `minWeeks` must be 1 to 520 and `maxWeeks` must be 0 or
|
|
46
|
+
* `minWeeks` to 520.
|
|
47
|
+
*/
|
|
48
|
+
export declare function validateStickyGroupId(groupId: bigint): string | null;
|
|
49
|
+
/**
|
|
50
|
+
* Encode a tenure group as a split `projectId`. Leave out `maxWeeks` (or pass
|
|
51
|
+
* 0) for no upper bound.
|
|
52
|
+
*
|
|
53
|
+
* @throws If the distributor would not honor the group.
|
|
54
|
+
*/
|
|
55
|
+
export declare function stickyGroupId(args: {
|
|
56
|
+
minWeeks: number;
|
|
57
|
+
maxWeeks?: number;
|
|
58
|
+
}): bigint;
|
|
59
|
+
/**
|
|
60
|
+
* The group a split `projectId` actually funds. An invalid group ID decodes as
|
|
61
|
+
* the default group, since that is where the distributor sends it.
|
|
62
|
+
*/
|
|
63
|
+
export declare function decodeStickyGroupId(groupId: bigint): StickyGroup;
|
|
64
|
+
/**
|
|
65
|
+
* Short plain text naming who a Sticky split rewards, for confirm dialogs and
|
|
66
|
+
* activity rows. Assumes the beneficiary is a tracked Sticky token; if it is
|
|
67
|
+
* not, a tenure split funds the default group instead.
|
|
68
|
+
*/
|
|
69
|
+
export declare function describeStickySplit(split: Pick<JBSplit, "projectId">): string;
|
|
70
|
+
//# sourceMappingURL=sticky.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sticky.d.ts","sourceRoot":"","sources":["../../../src/v6/sticky.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAGtC;;;;;;;;;;;;;;;;GAgBG;AAEH,kFAAkF;AAClF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,yEAAyE;AACzE,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,mEAAmE;AACnE,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,8EAA8E;AAC9E,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAEpE;AAED,yDAAyD;AACzD,wBAAgB,aAAa,CAC3B,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAC5B,OAAO,EAAE,SAAS,GACjB,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoBpE;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,MAAM,CAoBT;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAShE;AAMD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,MAAM,CAgB7E"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { isAddressEqual } from "viem";
|
|
2
|
+
import { v6Address } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* A split routes funds to Sticky holders when its `hook` is the chain's
|
|
5
|
+
* `StickyDistributor`. The distributor reads the rest of the split this way:
|
|
6
|
+
*
|
|
7
|
+
* - `beneficiary` is the Sticky token whose holders are rewarded.
|
|
8
|
+
* - `projectId` is the reward group: {@link STICKY_DEFAULT_GROUP_ID} splits the
|
|
9
|
+
* pot by delegated voting power at the round's snapshot, and a tenure group
|
|
10
|
+
* ({@link stickyGroupId}) splits it by stake held for a range of weeks.
|
|
11
|
+
*
|
|
12
|
+
* The distributor never reverts on a bad group or beneficiary, since a
|
|
13
|
+
* split-hook revert returns the funds to the project. A `projectId` that
|
|
14
|
+
* {@link validateStickyGroupId} rejects funds the default group instead, and so
|
|
15
|
+
* does a tenure group whose beneficiary the Sticky hook does not track. The
|
|
16
|
+
* distributor has no public view for that second case: a token is tracked when
|
|
17
|
+
* `stickyHookAbi` `tokenOf(projectId)` returns the token, where `projectId` is
|
|
18
|
+
* the token's own `PROJECT_ID()`.
|
|
19
|
+
*/
|
|
20
|
+
/** The default reward group: every holder, weighted by delegated voting power. */
|
|
21
|
+
export const STICKY_DEFAULT_GROUP_ID = 0n;
|
|
22
|
+
/** A tenure group ID is `minWeeks * STICKY_CRITERIA_BASE + maxWeeks`. */
|
|
23
|
+
export const STICKY_CRITERIA_BASE = 1000n;
|
|
24
|
+
/** The highest `minWeeks` or `maxWeeks` a tenure group can use. */
|
|
25
|
+
export const STICKY_MAX_CRITERIA_WEEKS = 520;
|
|
26
|
+
/** The `StickyDistributor` a chain's Sticky splits must use as their hook. */
|
|
27
|
+
export function stickyDistributorAddress(chainId) {
|
|
28
|
+
return v6Address("StickyDistributor", chainId);
|
|
29
|
+
}
|
|
30
|
+
/** Whether a split pays Sticky holders on this chain. */
|
|
31
|
+
export function isStickySplit(split, chainId) {
|
|
32
|
+
return isAddressEqual(split.hook, stickyDistributorAddress(chainId));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Why the distributor would not honor a group ID, or null when it would.
|
|
36
|
+
* Gives the same answer as the distributor's pure `isValidGroupId` view: 0 is
|
|
37
|
+
* valid, otherwise `minWeeks` must be 1 to 520 and `maxWeeks` must be 0 or
|
|
38
|
+
* `minWeeks` to 520.
|
|
39
|
+
*/
|
|
40
|
+
export function validateStickyGroupId(groupId) {
|
|
41
|
+
if (groupId === STICKY_DEFAULT_GROUP_ID)
|
|
42
|
+
return null;
|
|
43
|
+
if (groupId < 0n)
|
|
44
|
+
return "Group ID can't be negative.";
|
|
45
|
+
const minWeeks = groupId / STICKY_CRITERIA_BASE;
|
|
46
|
+
const maxWeeks = groupId % STICKY_CRITERIA_BASE;
|
|
47
|
+
const limit = BigInt(STICKY_MAX_CRITERIA_WEEKS);
|
|
48
|
+
if (minWeeks === 0n)
|
|
49
|
+
return "Tenure groups need a minimum of at least 1 week.";
|
|
50
|
+
if (minWeeks > limit) {
|
|
51
|
+
return `Minimum weeks can't be more than ${STICKY_MAX_CRITERIA_WEEKS}.`;
|
|
52
|
+
}
|
|
53
|
+
if (maxWeeks > limit) {
|
|
54
|
+
return `Maximum weeks can't be more than ${STICKY_MAX_CRITERIA_WEEKS}.`;
|
|
55
|
+
}
|
|
56
|
+
if (maxWeeks !== 0n && maxWeeks < minWeeks) {
|
|
57
|
+
return "Maximum weeks can't be less than minimum weeks.";
|
|
58
|
+
}
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Encode a tenure group as a split `projectId`. Leave out `maxWeeks` (or pass
|
|
63
|
+
* 0) for no upper bound.
|
|
64
|
+
*
|
|
65
|
+
* @throws If the distributor would not honor the group.
|
|
66
|
+
*/
|
|
67
|
+
export function stickyGroupId(args) {
|
|
68
|
+
const { minWeeks, maxWeeks = 0 } = args;
|
|
69
|
+
if (!Number.isInteger(minWeeks) ||
|
|
70
|
+
!Number.isInteger(maxWeeks) ||
|
|
71
|
+
minWeeks < 0 ||
|
|
72
|
+
maxWeeks < 0) {
|
|
73
|
+
throw new Error("Sticky group weeks must be whole numbers, 0 or more.");
|
|
74
|
+
}
|
|
75
|
+
// Checked before encoding: a larger maxWeeks would carry into minWeeks.
|
|
76
|
+
if (maxWeeks > STICKY_MAX_CRITERIA_WEEKS) {
|
|
77
|
+
throw new Error(`Maximum weeks can't be more than ${STICKY_MAX_CRITERIA_WEEKS}.`);
|
|
78
|
+
}
|
|
79
|
+
const groupId = BigInt(minWeeks) * STICKY_CRITERIA_BASE + BigInt(maxWeeks);
|
|
80
|
+
const reason = validateStickyGroupId(groupId);
|
|
81
|
+
if (reason)
|
|
82
|
+
throw new Error(reason);
|
|
83
|
+
return groupId;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The group a split `projectId` actually funds. An invalid group ID decodes as
|
|
87
|
+
* the default group, since that is where the distributor sends it.
|
|
88
|
+
*/
|
|
89
|
+
export function decodeStickyGroupId(groupId) {
|
|
90
|
+
if (groupId === 0n || validateStickyGroupId(groupId) !== null) {
|
|
91
|
+
return { kind: "default" };
|
|
92
|
+
}
|
|
93
|
+
return {
|
|
94
|
+
kind: "tenure",
|
|
95
|
+
minWeeks: Number(groupId / STICKY_CRITERIA_BASE),
|
|
96
|
+
maxWeeks: Number(groupId % STICKY_CRITERIA_BASE),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
function weeks(count) {
|
|
100
|
+
return count === 1 ? "1 week" : `${count} weeks`;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Short plain text naming who a Sticky split rewards, for confirm dialogs and
|
|
104
|
+
* activity rows. Assumes the beneficiary is a tracked Sticky token; if it is
|
|
105
|
+
* not, a tenure split funds the default group instead.
|
|
106
|
+
*/
|
|
107
|
+
export function describeStickySplit(split) {
|
|
108
|
+
const group = decodeStickyGroupId(split.projectId);
|
|
109
|
+
if (group.kind === "default") {
|
|
110
|
+
const fallback = split.projectId === 0n
|
|
111
|
+
? ""
|
|
112
|
+
: `, since group ${split.projectId} is invalid`;
|
|
113
|
+
return `Sticky group 0 (all holders by voting power)${fallback}`;
|
|
114
|
+
}
|
|
115
|
+
if (group.maxWeeks === 0) {
|
|
116
|
+
return `Sticky holders stuck ${weeks(group.minWeeks)} or more`;
|
|
117
|
+
}
|
|
118
|
+
if (group.maxWeeks === group.minWeeks) {
|
|
119
|
+
return `Sticky holders stuck ${weeks(group.minWeeks)}`;
|
|
120
|
+
}
|
|
121
|
+
return `Sticky holders stuck ${group.minWeeks} to ${group.maxWeeks} weeks`;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=sticky.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sticky.js","sourceRoot":"","sources":["../../../src/v6/sticky.ts"],"names":[],"mappings":"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"}
|