@bananapus/nana-sdk-core 1.3.0 → 1.4.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.
Files changed (131) hide show
  1. package/dist/cjs/utils/index.d.ts +1 -0
  2. package/dist/cjs/utils/index.d.ts.map +1 -1
  3. package/dist/cjs/utils/index.js +1 -0
  4. package/dist/cjs/utils/index.js.map +1 -1
  5. package/dist/cjs/utils/ipfs.d.ts +33 -1
  6. package/dist/cjs/utils/ipfs.d.ts.map +1 -1
  7. package/dist/cjs/utils/ipfs.js +212 -8
  8. package/dist/cjs/utils/ipfs.js.map +1 -1
  9. package/dist/cjs/utils/ipfs.test.js +34 -0
  10. package/dist/cjs/utils/ipfs.test.js.map +1 -1
  11. package/dist/cjs/v6/index.d.ts +2 -0
  12. package/dist/cjs/v6/index.d.ts.map +1 -1
  13. package/dist/cjs/v6/index.js +2 -0
  14. package/dist/cjs/v6/index.js.map +1 -1
  15. package/dist/cjs/v6/launch.d.ts +23 -2
  16. package/dist/cjs/v6/launch.d.ts.map +1 -1
  17. package/dist/cjs/v6/launch.js +40 -1
  18. package/dist/cjs/v6/launch.js.map +1 -1
  19. package/dist/cjs/v6/launch.test.js +25 -0
  20. package/dist/cjs/v6/launch.test.js.map +1 -1
  21. package/dist/cjs/v6/nft.d.ts +67 -0
  22. package/dist/cjs/v6/nft.d.ts.map +1 -1
  23. package/dist/cjs/v6/nft.js +192 -2
  24. package/dist/cjs/v6/nft.js.map +1 -1
  25. package/dist/cjs/v6/nft.test.js +74 -1
  26. package/dist/cjs/v6/nft.test.js.map +1 -1
  27. package/dist/cjs/v6/permissions.d.ts +21 -0
  28. package/dist/cjs/v6/permissions.d.ts.map +1 -1
  29. package/dist/cjs/v6/permissions.js +44 -1
  30. package/dist/cjs/v6/permissions.js.map +1 -1
  31. package/dist/cjs/v6/permissions.test.js +25 -0
  32. package/dist/cjs/v6/permissions.test.js.map +1 -1
  33. package/dist/cjs/v6/projectPayers.d.ts +178 -0
  34. package/dist/cjs/v6/projectPayers.d.ts.map +1 -0
  35. package/dist/cjs/v6/projectPayers.js +108 -0
  36. package/dist/cjs/v6/projectPayers.js.map +1 -0
  37. package/dist/cjs/v6/projectPayers.test.d.ts +2 -0
  38. package/dist/cjs/v6/projectPayers.test.d.ts.map +1 -0
  39. package/dist/cjs/v6/projectPayers.test.js +85 -0
  40. package/dist/cjs/v6/projectPayers.test.js.map +1 -0
  41. package/dist/cjs/v6/revnets.d.ts +3 -2
  42. package/dist/cjs/v6/revnets.d.ts.map +1 -1
  43. package/dist/cjs/v6/revnets.js +3 -2
  44. package/dist/cjs/v6/revnets.js.map +1 -1
  45. package/dist/cjs/v6/rulesets.d.ts +42 -0
  46. package/dist/cjs/v6/rulesets.d.ts.map +1 -1
  47. package/dist/cjs/v6/rulesets.js +87 -0
  48. package/dist/cjs/v6/rulesets.js.map +1 -1
  49. package/dist/cjs/v6/rulesets.test.js +54 -0
  50. package/dist/cjs/v6/rulesets.test.js.map +1 -1
  51. package/dist/cjs/v6/suckers.d.ts +740 -2
  52. package/dist/cjs/v6/suckers.d.ts.map +1 -1
  53. package/dist/cjs/v6/suckers.js +647 -8
  54. package/dist/cjs/v6/suckers.js.map +1 -1
  55. package/dist/cjs/v6/suckers.test.js +228 -0
  56. package/dist/cjs/v6/suckers.test.js.map +1 -1
  57. package/dist/cjs/v6/uniswapV4.d.ts +82 -0
  58. package/dist/cjs/v6/uniswapV4.d.ts.map +1 -0
  59. package/dist/cjs/v6/uniswapV4.js +336 -0
  60. package/dist/cjs/v6/uniswapV4.js.map +1 -0
  61. package/dist/cjs/v6/uniswapV4.test.d.ts +2 -0
  62. package/dist/cjs/v6/uniswapV4.test.d.ts.map +1 -0
  63. package/dist/cjs/v6/uniswapV4.test.js +128 -0
  64. package/dist/cjs/v6/uniswapV4.test.js.map +1 -0
  65. package/dist/esm/utils/index.d.ts +1 -0
  66. package/dist/esm/utils/index.d.ts.map +1 -1
  67. package/dist/esm/utils/index.js +1 -0
  68. package/dist/esm/utils/index.js.map +1 -1
  69. package/dist/esm/utils/ipfs.d.ts +33 -1
  70. package/dist/esm/utils/ipfs.d.ts.map +1 -1
  71. package/dist/esm/utils/ipfs.js +204 -8
  72. package/dist/esm/utils/ipfs.js.map +1 -1
  73. package/dist/esm/utils/ipfs.test.js +35 -1
  74. package/dist/esm/utils/ipfs.test.js.map +1 -1
  75. package/dist/esm/v6/index.d.ts +2 -0
  76. package/dist/esm/v6/index.d.ts.map +1 -1
  77. package/dist/esm/v6/index.js +2 -0
  78. package/dist/esm/v6/index.js.map +1 -1
  79. package/dist/esm/v6/launch.d.ts +23 -2
  80. package/dist/esm/v6/launch.d.ts.map +1 -1
  81. package/dist/esm/v6/launch.js +39 -2
  82. package/dist/esm/v6/launch.js.map +1 -1
  83. package/dist/esm/v6/launch.test.js +27 -2
  84. package/dist/esm/v6/launch.test.js.map +1 -1
  85. package/dist/esm/v6/nft.d.ts +67 -0
  86. package/dist/esm/v6/nft.d.ts.map +1 -1
  87. package/dist/esm/v6/nft.js +183 -1
  88. package/dist/esm/v6/nft.js.map +1 -1
  89. package/dist/esm/v6/nft.test.js +75 -2
  90. package/dist/esm/v6/nft.test.js.map +1 -1
  91. package/dist/esm/v6/permissions.d.ts +21 -0
  92. package/dist/esm/v6/permissions.d.ts.map +1 -1
  93. package/dist/esm/v6/permissions.js +40 -0
  94. package/dist/esm/v6/permissions.js.map +1 -1
  95. package/dist/esm/v6/permissions.test.js +26 -1
  96. package/dist/esm/v6/permissions.test.js.map +1 -1
  97. package/dist/esm/v6/projectPayers.d.ts +178 -0
  98. package/dist/esm/v6/projectPayers.d.ts.map +1 -0
  99. package/dist/esm/v6/projectPayers.js +101 -0
  100. package/dist/esm/v6/projectPayers.js.map +1 -0
  101. package/dist/esm/v6/projectPayers.test.d.ts +2 -0
  102. package/dist/esm/v6/projectPayers.test.d.ts.map +1 -0
  103. package/dist/esm/v6/projectPayers.test.js +83 -0
  104. package/dist/esm/v6/projectPayers.test.js.map +1 -0
  105. package/dist/esm/v6/revnets.d.ts +3 -2
  106. package/dist/esm/v6/revnets.d.ts.map +1 -1
  107. package/dist/esm/v6/revnets.js +3 -2
  108. package/dist/esm/v6/revnets.js.map +1 -1
  109. package/dist/esm/v6/rulesets.d.ts +42 -0
  110. package/dist/esm/v6/rulesets.d.ts.map +1 -1
  111. package/dist/esm/v6/rulesets.js +83 -0
  112. package/dist/esm/v6/rulesets.js.map +1 -1
  113. package/dist/esm/v6/rulesets.test.js +55 -1
  114. package/dist/esm/v6/rulesets.test.js.map +1 -1
  115. package/dist/esm/v6/suckers.d.ts +740 -2
  116. package/dist/esm/v6/suckers.d.ts.map +1 -1
  117. package/dist/esm/v6/suckers.js +630 -8
  118. package/dist/esm/v6/suckers.js.map +1 -1
  119. package/dist/esm/v6/suckers.test.js +230 -2
  120. package/dist/esm/v6/suckers.test.js.map +1 -1
  121. package/dist/esm/v6/uniswapV4.d.ts +82 -0
  122. package/dist/esm/v6/uniswapV4.d.ts.map +1 -0
  123. package/dist/esm/v6/uniswapV4.js +318 -0
  124. package/dist/esm/v6/uniswapV4.js.map +1 -0
  125. package/dist/esm/v6/uniswapV4.test.d.ts +2 -0
  126. package/dist/esm/v6/uniswapV4.test.d.ts.map +1 -0
  127. package/dist/esm/v6/uniswapV4.test.js +126 -0
  128. package/dist/esm/v6/uniswapV4.test.js.map +1 -0
  129. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  130. package/dist/tsconfig.tsbuildinfo +1 -1
  131. package/package.json +1 -1
@@ -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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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=projectPayers.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectPayers.test.d.ts","sourceRoot":"","sources":["../../../src/v6/projectPayers.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,83 @@
1
+ import { decodeFunctionData, encodeAbiParameters, encodeEventTopics, encodeFunctionData, zeroAddress, } from "viem";
2
+ import { sepolia } from "viem/chains";
3
+ import { describe, expect, test } from "vitest";
4
+ import { JB_PROJECT_PAYER_DEPLOYER, buildDeployProjectPayerTx, decodeDeployedProjectPayer, jbProjectPayerDeployerAbi, normalizeProjectPayerMetadata, projectPayerFromDeployLogs, } from "./projectPayers.js";
5
+ const PAYER = "0x1111111111111111111111111111111111111111";
6
+ function deploymentLog(address = JB_PROJECT_PAYER_DEPLOYER) {
7
+ const topics = encodeEventTopics({
8
+ abi: jbProjectPayerDeployerAbi,
9
+ eventName: "DeployProjectPayer",
10
+ args: { projectPayer: PAYER },
11
+ });
12
+ const data = encodeAbiParameters([
13
+ { type: "uint256" },
14
+ { type: "address" },
15
+ { type: "string" },
16
+ { type: "bytes" },
17
+ { type: "bool" },
18
+ { type: "address" },
19
+ { type: "address" },
20
+ { type: "address" },
21
+ ], [
22
+ 7n,
23
+ zeroAddress,
24
+ "hello",
25
+ "0x1234",
26
+ false,
27
+ zeroAddress,
28
+ zeroAddress,
29
+ zeroAddress,
30
+ ]);
31
+ return { address, data, topics: topics };
32
+ }
33
+ describe("project payer deployment", () => {
34
+ test("builds canonical deploy calldata", () => {
35
+ const tx = buildDeployProjectPayerTx({
36
+ chainId: sepolia.id,
37
+ projectId: 7n,
38
+ beneficiary: PAYER,
39
+ memo: "hello",
40
+ metadata: "0x1234",
41
+ addToBalance: true,
42
+ owner: zeroAddress,
43
+ });
44
+ expect(tx.address).toBe(JB_PROJECT_PAYER_DEPLOYER);
45
+ const decoded = decodeFunctionData({
46
+ abi: jbProjectPayerDeployerAbi,
47
+ data: encodeFunctionData(tx),
48
+ });
49
+ expect(decoded.functionName).toBe("deployProjectPayer");
50
+ expect(decoded.args).toEqual([
51
+ 7n,
52
+ PAYER,
53
+ "hello",
54
+ "0x1234",
55
+ true,
56
+ zeroAddress,
57
+ ]);
58
+ });
59
+ test("uses safe defaults and rejects invalid values", () => {
60
+ const tx = buildDeployProjectPayerTx({
61
+ chainId: sepolia.id,
62
+ projectId: 1n,
63
+ beneficiary: zeroAddress,
64
+ owner: zeroAddress,
65
+ });
66
+ expect(tx.args.slice(2)).toEqual(["", "0x", false, zeroAddress]);
67
+ expect(normalizeProjectPayerMetadata(" 0x12ab ")).toBe("0x12ab");
68
+ expect(() => normalizeProjectPayerMetadata("0x123")).toThrow();
69
+ expect(() => buildDeployProjectPayerTx({
70
+ chainId: sepolia.id,
71
+ projectId: 0n,
72
+ beneficiary: zeroAddress,
73
+ owner: zeroAddress,
74
+ })).toThrow(/positive project ID/);
75
+ });
76
+ test("only decodes events from the canonical deployer", () => {
77
+ const log = deploymentLog();
78
+ expect(decodeDeployedProjectPayer(log)).toBe(PAYER);
79
+ expect(projectPayerFromDeployLogs([log])).toBe(PAYER);
80
+ expect(decodeDeployedProjectPayer(deploymentLog("0x2222222222222222222222222222222222222222"))).toBeNull();
81
+ });
82
+ });
83
+ //# sourceMappingURL=projectPayers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projectPayers.test.js","sourceRoot":"","sources":["../../../src/v6/projectPayers.test.ts"],"names":[],"mappings":"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"}
@@ -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 sentinel 1n means "inherit the previous
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
@@ -1 +1 @@
1
- {"version":3,"file":"revnets.d.ts","sourceRoot":"","sources":["../../../src/v6/revnets.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
1
+ {"version":3,"file":"revnets.d.ts","sourceRoot":"","sources":["../../../src/v6/revnets.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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"}
@@ -14,8 +14,9 @@ import { v6Address } from "./types.js";
14
14
  * issuance), out of 1e9; the group must total exactly 1e9 — use
15
15
  * `fillSplitPercents`.
16
16
  * - `initialIssuance`: tokens minted per unit of base currency, 18-decimal
17
- * fixed point (uint112). The sentinel 1n means "inherit the previous
18
- * stage's issuance with its cuts applied".
17
+ * fixed point (uint112). The exported `RULESET_WEIGHT_INHERIT` sentinel
18
+ * (1n) means "inherit the previous stage's issuance with its cuts applied";
19
+ * zero means genuine zero issuance.
19
20
  * - `issuanceCutFrequency`: seconds between issuance cuts (should be >= 1
20
21
  * day; it becomes the stage's ruleset duration).
21
22
  * - `issuanceCutPercent`: how much issuance drops each period, out of 1e9
@@ -1 +1 @@
1
- {"version":3,"file":"revnets.js","sourceRoot":"","sources":["../../../src/v6/revnets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"revnets.js","sourceRoot":"","sources":["../../../src/v6/revnets.ts"],"names":[],"mappings":"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"}
@@ -2,6 +2,11 @@ import { ContractFunctionArgs, ContractFunctionReturnType, PublicClient } from "
2
2
  import { jbControllerAbi } from "../generated/juicebox.js";
3
3
  import { JBChainId } from "../types.js";
4
4
  type QueueRulesetsArgs = ContractFunctionArgs<typeof jbControllerAbi, "nonpayable", "queueRulesetsOf">;
5
+ /**
6
+ * JBRulesets configuration sentinel meaning “derive the prior ruleset's
7
+ * cut-adjusted weight.” Zero is real zero issuance and must not be substituted.
8
+ */
9
+ export declare const RULESET_WEIGHT_INHERIT = 1n;
5
10
  /**
6
11
  * A full ruleset configuration as passed to `launchProjectFor` /
7
12
  * `queueRulesetsOf` (v6 shape).
@@ -25,6 +30,43 @@ export type JBRulesetWithMetadata = {
25
30
  ruleset: JBRuleset;
26
31
  metadata: JBRulesetMetadata;
27
32
  };
33
+ /** Minimal ruleset shape needed to project an issuance schedule. */
34
+ export interface RulesetIssuanceStage {
35
+ start: number;
36
+ duration: number;
37
+ weight: bigint;
38
+ weightCutPercent: number;
39
+ /**
40
+ * Explicitly inherit the prior stage's cut-adjusted rate. Leave false for
41
+ * stored on-chain rulesets, whose weights have already been resolved.
42
+ */
43
+ inheritsWeight?: boolean;
44
+ }
45
+ /** A stage with its inherited starting issuance rate resolved. */
46
+ export interface ResolvedRulesetIssuanceStage {
47
+ start: number;
48
+ duration: number;
49
+ weightCutPercent: number;
50
+ /** Approximate tokens issued per unit of the ruleset's base currency. */
51
+ issuanceRate: number;
52
+ }
53
+ /**
54
+ * Project one resolved stage's issuance rate at a Unix timestamp.
55
+ *
56
+ * This intentionally returns display-grade floating-point math. Transaction
57
+ * builders must continue to use the original bigint `weight`; this helper is
58
+ * for charts, estimates, and explanatory UI shared by web clients.
59
+ */
60
+ export declare function rulesetIssuanceRateWithinStage(stage: ResolvedRulesetIssuanceStage, timestamp: number): number;
61
+ /**
62
+ * Sort ruleset stages and resolve explicitly requested inheritance at each
63
+ * boundary. Stored on-chain rulesets should never set `inheritsWeight`: core
64
+ * has already replaced its configured `weight == 1` sentinel with the derived
65
+ * weight. Keeping this explicit also preserves genuine zero-issuance stages.
66
+ */
67
+ export declare function resolveRulesetIssuanceStages(stages: readonly RulesetIssuanceStage[]): ResolvedRulesetIssuanceStage[];
68
+ /** Approximate issuance rate at a timestamp across a resolved schedule. */
69
+ export declare function rulesetIssuanceRateAt(stages: readonly ResolvedRulesetIssuanceStage[], timestamp: number): number;
28
70
  /**
29
71
  * Build a `JBController.queueRulesetsOf` transaction request queuing rulesets
30
72
  * for an existing project on a single chain.
@@ -1 +1 @@
1
- {"version":3,"file":"rulesets.d.ts","sourceRoot":"","sources":["../../../src/v6/rulesets.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAC1B,YAAY,EACb,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAGxC,KAAK,iBAAiB,GAAG,oBAAoB,CAC3C,OAAO,eAAe,EACtB,YAAY,EACZ,iBAAiB,CAClB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;AAE5D,KAAK,oBAAoB,GAAG,0BAA0B,CACpD,OAAO,eAAe,EACtB,MAAM,EACN,kBAAkB,CACnB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;AAEhD;;;GAGG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,iBAAiB,CAAC;CAC7B,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,SAAS,eAAe,EAAE,CAAC;IAClD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CAQhC;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CAQhC;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IACJ,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAO3C"}
1
+ {"version":3,"file":"rulesets.d.ts","sourceRoot":"","sources":["../../../src/v6/rulesets.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CAQhC;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IAAE,OAAO,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAC9C,OAAO,CAAC,qBAAqB,CAAC,CAQhC;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IACJ,OAAO,EAAE,SAAS,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,SAAS,qBAAqB,EAAE,CAAC,CAO3C"}
@@ -1,5 +1,88 @@
1
+ import { MAX_WEIGHT_CUT_PERCENT } from "../constants.js";
1
2
  import { jbControllerAbi } from "../generated/juicebox.js";
2
3
  import { v6Address } from "./types.js";
4
+ /**
5
+ * JBRulesets configuration sentinel meaning “derive the prior ruleset's
6
+ * cut-adjusted weight.” Zero is real zero issuance and must not be substituted.
7
+ */
8
+ export const RULESET_WEIGHT_INHERIT = 1n;
9
+ function assertIssuanceStage(stage) {
10
+ if (!Number.isSafeInteger(stage.start) || stage.start < 0) {
11
+ throw new Error("A ruleset stage start must be a non-negative timestamp.");
12
+ }
13
+ if (!Number.isSafeInteger(stage.duration) || stage.duration < 0) {
14
+ throw new Error("A ruleset stage duration must be non-negative seconds.");
15
+ }
16
+ if (stage.weight < 0n) {
17
+ throw new Error("A ruleset stage weight cannot be negative.");
18
+ }
19
+ if (stage.weight >= 1n << 112n) {
20
+ throw new Error("A ruleset stage weight must fit in uint112.");
21
+ }
22
+ if (!Number.isSafeInteger(stage.weightCutPercent) ||
23
+ stage.weightCutPercent < 0 ||
24
+ stage.weightCutPercent > MAX_WEIGHT_CUT_PERCENT) {
25
+ throw new Error(`A ruleset weight cut must be between 0 and ${MAX_WEIGHT_CUT_PERCENT}.`);
26
+ }
27
+ }
28
+ /**
29
+ * Project one resolved stage's issuance rate at a Unix timestamp.
30
+ *
31
+ * This intentionally returns display-grade floating-point math. Transaction
32
+ * builders must continue to use the original bigint `weight`; this helper is
33
+ * for charts, estimates, and explanatory UI shared by web clients.
34
+ */
35
+ export function rulesetIssuanceRateWithinStage(stage, timestamp) {
36
+ if (!Number.isFinite(timestamp)) {
37
+ throw new Error("A ruleset projection timestamp must be finite.");
38
+ }
39
+ if (stage.duration === 0 || stage.weightCutPercent === 0) {
40
+ return stage.issuanceRate;
41
+ }
42
+ const cycles = Math.max(0, Math.floor((timestamp - stage.start) / stage.duration));
43
+ return (stage.issuanceRate *
44
+ Math.pow((MAX_WEIGHT_CUT_PERCENT - stage.weightCutPercent) /
45
+ MAX_WEIGHT_CUT_PERCENT, cycles));
46
+ }
47
+ /**
48
+ * Sort ruleset stages and resolve explicitly requested inheritance at each
49
+ * boundary. Stored on-chain rulesets should never set `inheritsWeight`: core
50
+ * has already replaced its configured `weight == 1` sentinel with the derived
51
+ * weight. Keeping this explicit also preserves genuine zero-issuance stages.
52
+ */
53
+ export function resolveRulesetIssuanceStages(stages) {
54
+ const sorted = stages.slice().sort((left, right) => left.start - right.start);
55
+ const resolved = [];
56
+ for (const stage of sorted) {
57
+ assertIssuanceStage(stage);
58
+ const previous = resolved[resolved.length - 1];
59
+ if (stage.inheritsWeight && !previous) {
60
+ throw new Error("The first ruleset stage cannot inherit a prior weight.");
61
+ }
62
+ const issuanceRate = stage.inheritsWeight && previous
63
+ ? rulesetIssuanceRateWithinStage(previous, stage.start)
64
+ : Number(stage.weight) / 1e18;
65
+ resolved.push({
66
+ start: stage.start,
67
+ duration: stage.duration,
68
+ weightCutPercent: stage.weightCutPercent,
69
+ issuanceRate,
70
+ });
71
+ }
72
+ return resolved;
73
+ }
74
+ /** Approximate issuance rate at a timestamp across a resolved schedule. */
75
+ export function rulesetIssuanceRateAt(stages, timestamp) {
76
+ if (stages.length === 0 || timestamp < stages[0].start)
77
+ return 0;
78
+ let active = stages[0];
79
+ for (const stage of stages) {
80
+ if (stage.start > timestamp)
81
+ break;
82
+ active = stage;
83
+ }
84
+ return rulesetIssuanceRateWithinStage(active, timestamp);
85
+ }
3
86
  /**
4
87
  * Build a `JBController.queueRulesetsOf` transaction request queuing rulesets
5
88
  * for an existing project on a single chain.
@@ -1 +1 @@
1
- {"version":3,"file":"rulesets.js","sourceRoot":"","sources":["../../../src/v6/rulesets.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAwCvC;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAKpC;IACC,OAAO;QACL,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,OAAO,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD,GAAG,EAAE,eAAe;QACpB,YAAY,EAAE,iBAA0B;QACxC,IAAI,EAAE;YACJ,IAAI,CAAC,SAAS;YACd,IAAI,CAAC,qBAAqB;YAC1B,IAAI,CAAC,IAAI,IAAI,EAAE;SACP;KACX,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAoB,EACpB,IAA+C;IAE/C,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACpD,OAAO,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD,GAAG,EAAE,eAAe;QACpB,YAAY,EAAE,kBAAkB;QAChC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;KACvB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,MAAoB,EACpB,IAA+C;IAE/C,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC;QACpD,OAAO,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD,GAAG,EAAE,eAAe;QACpB,YAAY,EAAE,mBAAmB;QACjC,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC;KACvB,CAAC,CAAC;IACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAoB,EACpB,IAKC;IAED,OAAO,MAAM,CAAC,YAAY,CAAC;QACzB,OAAO,EAAE,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC;QAChD,GAAG,EAAE,eAAe;QACpB,YAAY,EAAE,eAAe;QAC7B,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;KAChE,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"rulesets.js","sourceRoot":"","sources":["../../../src/v6/rulesets.ts"],"names":[],"mappings":"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"}