@bananapus/nana-sdk-core 2.11.0 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -20,4 +20,5 @@ export * from "./uniswapV4Fees.js";
20
20
  export * from "./permissions.js";
21
21
  export * from "./suckers.js";
22
22
  export * from "./loans.js";
23
+ export * from "./sticky.js";
23
24
  //# 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,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"}
@@ -36,4 +36,5 @@ __exportStar(require("./uniswapV4Fees.js"), exports);
36
36
  __exportStar(require("./permissions.js"), exports);
37
37
  __exportStar(require("./suckers.js"), exports);
38
38
  __exportStar(require("./loans.js"), exports);
39
+ __exportStar(require("./sticky.js"), exports);
39
40
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,iDAA+B;AAC/B,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,iDAA+B;AAC/B,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,+CAA6B;AAC7B,qDAAmC;AACnC,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B;AAC5B,iDAA+B;AAC/B,qDAAmC;AACnC,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/v6/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA2B;AAC3B,gDAA8B;AAC9B,4CAA0B;AAC1B,8CAA4B;AAC5B,iDAA+B;AAC/B,gDAA8B;AAC9B,8CAA4B;AAC5B,+CAA6B;AAC7B,iDAA+B;AAC/B,2CAAyB;AACzB,kDAAgC;AAChC,iDAA+B;AAC/B,+CAA6B;AAC7B,qDAAmC;AACnC,+CAA6B;AAC7B,2CAAyB;AACzB,8CAA4B;AAC5B,iDAA+B;AAC/B,qDAAmC;AACnC,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B;AAC3B,8CAA4B"}
@@ -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,132 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.STICKY_MAX_CRITERIA_WEEKS = exports.STICKY_CRITERIA_BASE = exports.STICKY_DEFAULT_GROUP_ID = void 0;
4
+ exports.stickyDistributorAddress = stickyDistributorAddress;
5
+ exports.isStickySplit = isStickySplit;
6
+ exports.validateStickyGroupId = validateStickyGroupId;
7
+ exports.stickyGroupId = stickyGroupId;
8
+ exports.decodeStickyGroupId = decodeStickyGroupId;
9
+ exports.describeStickySplit = describeStickySplit;
10
+ const viem_1 = require("viem");
11
+ const types_js_1 = require("./types.js");
12
+ /**
13
+ * A split routes funds to Sticky holders when its `hook` is the chain's
14
+ * `StickyDistributor`. The distributor reads the rest of the split this way:
15
+ *
16
+ * - `beneficiary` is the Sticky token whose holders are rewarded.
17
+ * - `projectId` is the reward group: {@link STICKY_DEFAULT_GROUP_ID} splits the
18
+ * pot by delegated voting power at the round's snapshot, and a tenure group
19
+ * ({@link stickyGroupId}) splits it by stake held for a range of weeks.
20
+ *
21
+ * The distributor never reverts on a bad group or beneficiary, since a
22
+ * split-hook revert returns the funds to the project. A `projectId` that
23
+ * {@link validateStickyGroupId} rejects funds the default group instead, and so
24
+ * does a tenure group whose beneficiary the Sticky hook does not track. The
25
+ * distributor has no public view for that second case: a token is tracked when
26
+ * `stickyHookAbi` `tokenOf(projectId)` returns the token, where `projectId` is
27
+ * the token's own `PROJECT_ID()`.
28
+ */
29
+ /** The default reward group: every holder, weighted by delegated voting power. */
30
+ exports.STICKY_DEFAULT_GROUP_ID = 0n;
31
+ /** A tenure group ID is `minWeeks * STICKY_CRITERIA_BASE + maxWeeks`. */
32
+ exports.STICKY_CRITERIA_BASE = 1000n;
33
+ /** The highest `minWeeks` or `maxWeeks` a tenure group can use. */
34
+ exports.STICKY_MAX_CRITERIA_WEEKS = 520;
35
+ /** The `StickyDistributor` a chain's Sticky splits must use as their hook. */
36
+ function stickyDistributorAddress(chainId) {
37
+ return (0, types_js_1.v6Address)("StickyDistributor", chainId);
38
+ }
39
+ /** Whether a split pays Sticky holders on this chain. */
40
+ function isStickySplit(split, chainId) {
41
+ return (0, viem_1.isAddressEqual)(split.hook, stickyDistributorAddress(chainId));
42
+ }
43
+ /**
44
+ * Why the distributor would not honor a group ID, or null when it would.
45
+ * Gives the same answer as the distributor's pure `isValidGroupId` view: 0 is
46
+ * valid, otherwise `minWeeks` must be 1 to 520 and `maxWeeks` must be 0 or
47
+ * `minWeeks` to 520.
48
+ */
49
+ function validateStickyGroupId(groupId) {
50
+ if (groupId === exports.STICKY_DEFAULT_GROUP_ID)
51
+ return null;
52
+ if (groupId < 0n)
53
+ return "Group ID can't be negative.";
54
+ const minWeeks = groupId / exports.STICKY_CRITERIA_BASE;
55
+ const maxWeeks = groupId % exports.STICKY_CRITERIA_BASE;
56
+ const limit = BigInt(exports.STICKY_MAX_CRITERIA_WEEKS);
57
+ if (minWeeks === 0n)
58
+ return "Tenure groups need a minimum of at least 1 week.";
59
+ if (minWeeks > limit) {
60
+ return `Minimum weeks can't be more than ${exports.STICKY_MAX_CRITERIA_WEEKS}.`;
61
+ }
62
+ if (maxWeeks > limit) {
63
+ return `Maximum weeks can't be more than ${exports.STICKY_MAX_CRITERIA_WEEKS}.`;
64
+ }
65
+ if (maxWeeks !== 0n && maxWeeks < minWeeks) {
66
+ return "Maximum weeks can't be less than minimum weeks.";
67
+ }
68
+ return null;
69
+ }
70
+ /**
71
+ * Encode a tenure group as a split `projectId`. Leave out `maxWeeks` (or pass
72
+ * 0) for no upper bound.
73
+ *
74
+ * @throws If the distributor would not honor the group.
75
+ */
76
+ function stickyGroupId(args) {
77
+ const { minWeeks, maxWeeks = 0 } = args;
78
+ if (!Number.isInteger(minWeeks) ||
79
+ !Number.isInteger(maxWeeks) ||
80
+ minWeeks < 0 ||
81
+ maxWeeks < 0) {
82
+ throw new Error("Sticky group weeks must be whole numbers, 0 or more.");
83
+ }
84
+ // Checked before encoding: a larger maxWeeks would carry into minWeeks.
85
+ if (maxWeeks > exports.STICKY_MAX_CRITERIA_WEEKS) {
86
+ throw new Error(`Maximum weeks can't be more than ${exports.STICKY_MAX_CRITERIA_WEEKS}.`);
87
+ }
88
+ const groupId = BigInt(minWeeks) * exports.STICKY_CRITERIA_BASE + BigInt(maxWeeks);
89
+ const reason = validateStickyGroupId(groupId);
90
+ if (reason)
91
+ throw new Error(reason);
92
+ return groupId;
93
+ }
94
+ /**
95
+ * The group a split `projectId` actually funds. An invalid group ID decodes as
96
+ * the default group, since that is where the distributor sends it.
97
+ */
98
+ function decodeStickyGroupId(groupId) {
99
+ if (groupId === 0n || validateStickyGroupId(groupId) !== null) {
100
+ return { kind: "default" };
101
+ }
102
+ return {
103
+ kind: "tenure",
104
+ minWeeks: Number(groupId / exports.STICKY_CRITERIA_BASE),
105
+ maxWeeks: Number(groupId % exports.STICKY_CRITERIA_BASE),
106
+ };
107
+ }
108
+ function weeks(count) {
109
+ return count === 1 ? "1 week" : `${count} weeks`;
110
+ }
111
+ /**
112
+ * Short plain text naming who a Sticky split rewards, for confirm dialogs and
113
+ * activity rows. Assumes the beneficiary is a tracked Sticky token; if it is
114
+ * not, a tenure split funds the default group instead.
115
+ */
116
+ function describeStickySplit(split) {
117
+ const group = decodeStickyGroupId(split.projectId);
118
+ if (group.kind === "default") {
119
+ const fallback = split.projectId === 0n
120
+ ? ""
121
+ : `, since group ${split.projectId} is invalid`;
122
+ return `Sticky group 0 (all holders by voting power)${fallback}`;
123
+ }
124
+ if (group.maxWeeks === 0) {
125
+ return `Sticky holders stuck ${weeks(group.minWeeks)} or more`;
126
+ }
127
+ if (group.maxWeeks === group.minWeeks) {
128
+ return `Sticky holders stuck ${weeks(group.minWeeks)}`;
129
+ }
130
+ return `Sticky holders stuck ${group.minWeeks} to ${group.maxWeeks} weeks`;
131
+ }
132
+ //# 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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"}
@@ -85034,6 +85034,20 @@ export declare const stickyAutoStickAbi: readonly [{
85034
85034
  readonly type: "bool";
85035
85035
  }];
85036
85036
  readonly stateMutability: "view";
85037
+ }, {
85038
+ readonly type: "function";
85039
+ readonly inputs: readonly [{
85040
+ readonly name: "forwarder";
85041
+ readonly internalType: "address";
85042
+ readonly type: "address";
85043
+ }];
85044
+ readonly name: "isTrustedForwarder";
85045
+ readonly outputs: readonly [{
85046
+ readonly name: "";
85047
+ readonly internalType: "bool";
85048
+ readonly type: "bool";
85049
+ }];
85050
+ readonly stateMutability: "view";
85037
85051
  }, {
85038
85052
  readonly type: "function";
85039
85053
  readonly inputs: readonly [{
@@ -85112,6 +85126,16 @@ export declare const stickyAutoStickAbi: readonly [{
85112
85126
  readonly type: "uint256";
85113
85127
  }];
85114
85128
  readonly stateMutability: "nonpayable";
85129
+ }, {
85130
+ readonly type: "function";
85131
+ readonly inputs: readonly [];
85132
+ readonly name: "trustedForwarder";
85133
+ readonly outputs: readonly [{
85134
+ readonly name: "";
85135
+ readonly internalType: "address";
85136
+ readonly type: "address";
85137
+ }];
85138
+ readonly stateMutability: "view";
85115
85139
  }, {
85116
85140
  readonly type: "event";
85117
85141
  readonly anonymous: false;
@@ -85478,6 +85502,20 @@ export declare const stickyDeployerAbi: readonly [{
85478
85502
  readonly type: "uint256";
85479
85503
  }];
85480
85504
  readonly stateMutability: "payable";
85505
+ }, {
85506
+ readonly type: "function";
85507
+ readonly inputs: readonly [{
85508
+ readonly name: "forwarder";
85509
+ readonly internalType: "address";
85510
+ readonly type: "address";
85511
+ }];
85512
+ readonly name: "isTrustedForwarder";
85513
+ readonly outputs: readonly [{
85514
+ readonly name: "";
85515
+ readonly internalType: "bool";
85516
+ readonly type: "bool";
85517
+ }];
85518
+ readonly stateMutability: "view";
85481
85519
  }, {
85482
85520
  readonly type: "function";
85483
85521
  readonly inputs: readonly [{
@@ -85588,6 +85626,16 @@ export declare const stickyDeployerAbi: readonly [{
85588
85626
  readonly type: "address";
85589
85627
  }];
85590
85628
  readonly stateMutability: "view";
85629
+ }, {
85630
+ readonly type: "function";
85631
+ readonly inputs: readonly [];
85632
+ readonly name: "trustedForwarder";
85633
+ readonly outputs: readonly [{
85634
+ readonly name: "";
85635
+ readonly internalType: "address";
85636
+ readonly type: "address";
85637
+ }];
85638
+ readonly stateMutability: "view";
85591
85639
  }, {
85592
85640
  readonly type: "event";
85593
85641
  readonly anonymous: false;
@@ -86165,6 +86213,20 @@ export declare const stickyDistributorAbi: readonly [{
86165
86213
  readonly name: "fund";
86166
86214
  readonly outputs: readonly [];
86167
86215
  readonly stateMutability: "payable";
86216
+ }, {
86217
+ readonly type: "function";
86218
+ readonly inputs: readonly [{
86219
+ readonly name: "forwarder";
86220
+ readonly internalType: "address";
86221
+ readonly type: "address";
86222
+ }];
86223
+ readonly name: "isTrustedForwarder";
86224
+ readonly outputs: readonly [{
86225
+ readonly name: "";
86226
+ readonly internalType: "bool";
86227
+ readonly type: "bool";
86228
+ }];
86229
+ readonly stateMutability: "view";
86168
86230
  }, {
86169
86231
  readonly type: "function";
86170
86232
  readonly inputs: readonly [{
@@ -86519,6 +86581,16 @@ export declare const stickyDistributorAbi: readonly [{
86519
86581
  readonly type: "uint256";
86520
86582
  }];
86521
86583
  readonly stateMutability: "view";
86584
+ }, {
86585
+ readonly type: "function";
86586
+ readonly inputs: readonly [];
86587
+ readonly name: "trustedForwarder";
86588
+ readonly outputs: readonly [{
86589
+ readonly name: "";
86590
+ readonly internalType: "address";
86591
+ readonly type: "address";
86592
+ }];
86593
+ readonly stateMutability: "view";
86522
86594
  }, {
86523
86595
  readonly type: "function";
86524
86596
  readonly inputs: readonly [{
@@ -87263,6 +87335,10 @@ export declare const stickyHookAbi: readonly [{
87263
87335
  readonly name: "deployer";
87264
87336
  readonly internalType: "address";
87265
87337
  readonly type: "address";
87338
+ }, {
87339
+ readonly name: "trustedForwarder";
87340
+ readonly internalType: "address";
87341
+ readonly type: "address";
87266
87342
  }];
87267
87343
  readonly stateMutability: "nonpayable";
87268
87344
  }, {
@@ -87772,6 +87848,20 @@ export declare const stickyHookAbi: readonly [{
87772
87848
  readonly type: "bool";
87773
87849
  }];
87774
87850
  readonly stateMutability: "view";
87851
+ }, {
87852
+ readonly type: "function";
87853
+ readonly inputs: readonly [{
87854
+ readonly name: "forwarder";
87855
+ readonly internalType: "address";
87856
+ readonly type: "address";
87857
+ }];
87858
+ readonly name: "isTrustedForwarder";
87859
+ readonly outputs: readonly [{
87860
+ readonly name: "";
87861
+ readonly internalType: "bool";
87862
+ readonly type: "bool";
87863
+ }];
87864
+ readonly stateMutability: "view";
87775
87865
  }, {
87776
87866
  readonly type: "function";
87777
87867
  readonly inputs: readonly [{
@@ -88128,6 +88218,16 @@ export declare const stickyHookAbi: readonly [{
88128
88218
  }];
88129
88219
  }];
88130
88220
  readonly stateMutability: "view";
88221
+ }, {
88222
+ readonly type: "function";
88223
+ readonly inputs: readonly [];
88224
+ readonly name: "trustedForwarder";
88225
+ readonly outputs: readonly [{
88226
+ readonly name: "";
88227
+ readonly internalType: "address";
88228
+ readonly type: "address";
88229
+ }];
88230
+ readonly stateMutability: "view";
88131
88231
  }, {
88132
88232
  readonly type: "event";
88133
88233
  readonly anonymous: false;
@@ -89668,54 +89768,54 @@ export declare const jbContractAddress: {
89668
89768
  readonly "11155420": "0xb853758a70a6b4216c09f1d071ea2344aba0a34f";
89669
89769
  };
89670
89770
  readonly StickyDeployer: {
89671
- readonly "1": "0x2d31dd23aeeb021669e18070a46af34d856b2e29";
89672
- readonly "10": "0x2d31dd23aeeb021669e18070a46af34d856b2e29";
89673
- readonly "8453": "0x2d31dd23aeeb021669e18070a46af34d856b2e29";
89674
- readonly "42161": "0x2d31dd23aeeb021669e18070a46af34d856b2e29";
89675
- readonly "84532": "0x2d31dd23aeeb021669e18070a46af34d856b2e29";
89676
- readonly "421614": "0x2d31dd23aeeb021669e18070a46af34d856b2e29";
89677
- readonly "11155111": "0x2d31dd23aeeb021669e18070a46af34d856b2e29";
89678
- readonly "11155420": "0x2d31dd23aeeb021669e18070a46af34d856b2e29";
89771
+ readonly "1": "0xda38ec48b5b1d186b02ba99f297e95153bee33a9";
89772
+ readonly "10": "0xda38ec48b5b1d186b02ba99f297e95153bee33a9";
89773
+ readonly "8453": "0xda38ec48b5b1d186b02ba99f297e95153bee33a9";
89774
+ readonly "42161": "0xda38ec48b5b1d186b02ba99f297e95153bee33a9";
89775
+ readonly "84532": "0xda38ec48b5b1d186b02ba99f297e95153bee33a9";
89776
+ readonly "421614": "0xda38ec48b5b1d186b02ba99f297e95153bee33a9";
89777
+ readonly "11155111": "0xda38ec48b5b1d186b02ba99f297e95153bee33a9";
89778
+ readonly "11155420": "0xda38ec48b5b1d186b02ba99f297e95153bee33a9";
89679
89779
  };
89680
89780
  readonly StickyHook: {
89681
- readonly "1": "0x965444ab0bea878cdd3fc12b86a0762350de70e6";
89682
- readonly "10": "0x965444ab0bea878cdd3fc12b86a0762350de70e6";
89683
- readonly "8453": "0x965444ab0bea878cdd3fc12b86a0762350de70e6";
89684
- readonly "42161": "0x965444ab0bea878cdd3fc12b86a0762350de70e6";
89685
- readonly "84532": "0x965444ab0bea878cdd3fc12b86a0762350de70e6";
89686
- readonly "421614": "0x965444ab0bea878cdd3fc12b86a0762350de70e6";
89687
- readonly "11155111": "0x965444ab0bea878cdd3fc12b86a0762350de70e6";
89688
- readonly "11155420": "0x965444ab0bea878cdd3fc12b86a0762350de70e6";
89781
+ readonly "1": "0xa8dcd735031cf96c4213d9a3f66a1dffdcdba693";
89782
+ readonly "10": "0xa8dcd735031cf96c4213d9a3f66a1dffdcdba693";
89783
+ readonly "8453": "0xa8dcd735031cf96c4213d9a3f66a1dffdcdba693";
89784
+ readonly "42161": "0xa8dcd735031cf96c4213d9a3f66a1dffdcdba693";
89785
+ readonly "84532": "0xa8dcd735031cf96c4213d9a3f66a1dffdcdba693";
89786
+ readonly "421614": "0xa8dcd735031cf96c4213d9a3f66a1dffdcdba693";
89787
+ readonly "11155111": "0xa8dcd735031cf96c4213d9a3f66a1dffdcdba693";
89788
+ readonly "11155420": "0xa8dcd735031cf96c4213d9a3f66a1dffdcdba693";
89689
89789
  };
89690
89790
  readonly StickyDistributor: {
89691
- readonly "1": "0x9862b5aad5a139271be57fc82fced9146add0d0f";
89692
- readonly "10": "0x9862b5aad5a139271be57fc82fced9146add0d0f";
89693
- readonly "8453": "0x9862b5aad5a139271be57fc82fced9146add0d0f";
89694
- readonly "42161": "0x9862b5aad5a139271be57fc82fced9146add0d0f";
89695
- readonly "84532": "0x9862b5aad5a139271be57fc82fced9146add0d0f";
89696
- readonly "421614": "0x9862b5aad5a139271be57fc82fced9146add0d0f";
89697
- readonly "11155111": "0x9862b5aad5a139271be57fc82fced9146add0d0f";
89698
- readonly "11155420": "0x9862b5aad5a139271be57fc82fced9146add0d0f";
89791
+ readonly "1": "0xc62b3fed668cd8a3879ba34890a67c48a52b1bb8";
89792
+ readonly "10": "0xc62b3fed668cd8a3879ba34890a67c48a52b1bb8";
89793
+ readonly "8453": "0xc62b3fed668cd8a3879ba34890a67c48a52b1bb8";
89794
+ readonly "42161": "0xc62b3fed668cd8a3879ba34890a67c48a52b1bb8";
89795
+ readonly "84532": "0xc62b3fed668cd8a3879ba34890a67c48a52b1bb8";
89796
+ readonly "421614": "0xc62b3fed668cd8a3879ba34890a67c48a52b1bb8";
89797
+ readonly "11155111": "0xc62b3fed668cd8a3879ba34890a67c48a52b1bb8";
89798
+ readonly "11155420": "0xc62b3fed668cd8a3879ba34890a67c48a52b1bb8";
89699
89799
  };
89700
89800
  readonly StickyRewardReceiverFactory: {
89701
- readonly "1": "0x56c0bffc3fe135719c22541b11c15157142fade0";
89702
- readonly "10": "0x56c0bffc3fe135719c22541b11c15157142fade0";
89703
- readonly "8453": "0x56c0bffc3fe135719c22541b11c15157142fade0";
89704
- readonly "42161": "0x56c0bffc3fe135719c22541b11c15157142fade0";
89705
- readonly "84532": "0x56c0bffc3fe135719c22541b11c15157142fade0";
89706
- readonly "421614": "0x56c0bffc3fe135719c22541b11c15157142fade0";
89707
- readonly "11155111": "0x56c0bffc3fe135719c22541b11c15157142fade0";
89708
- readonly "11155420": "0x56c0bffc3fe135719c22541b11c15157142fade0";
89801
+ readonly "1": "0xf65743b76c062762d19eecb4ab5c7a943e128720";
89802
+ readonly "10": "0xf65743b76c062762d19eecb4ab5c7a943e128720";
89803
+ readonly "8453": "0xf65743b76c062762d19eecb4ab5c7a943e128720";
89804
+ readonly "42161": "0xf65743b76c062762d19eecb4ab5c7a943e128720";
89805
+ readonly "84532": "0xf65743b76c062762d19eecb4ab5c7a943e128720";
89806
+ readonly "421614": "0xf65743b76c062762d19eecb4ab5c7a943e128720";
89807
+ readonly "11155111": "0xf65743b76c062762d19eecb4ab5c7a943e128720";
89808
+ readonly "11155420": "0xf65743b76c062762d19eecb4ab5c7a943e128720";
89709
89809
  };
89710
89810
  readonly StickyAutoStick: {
89711
- readonly "1": "0xc6f0b98534d6a3884a823c8717c9312d2a7782e5";
89712
- readonly "10": "0xc6f0b98534d6a3884a823c8717c9312d2a7782e5";
89713
- readonly "8453": "0xc6f0b98534d6a3884a823c8717c9312d2a7782e5";
89714
- readonly "42161": "0xc6f0b98534d6a3884a823c8717c9312d2a7782e5";
89715
- readonly "84532": "0xc6f0b98534d6a3884a823c8717c9312d2a7782e5";
89716
- readonly "421614": "0xc6f0b98534d6a3884a823c8717c9312d2a7782e5";
89717
- readonly "11155111": "0xc6f0b98534d6a3884a823c8717c9312d2a7782e5";
89718
- readonly "11155420": "0xc6f0b98534d6a3884a823c8717c9312d2a7782e5";
89811
+ readonly "1": "0x9b091e21d25c424de67751f4b6ae8494351218c5";
89812
+ readonly "10": "0x9b091e21d25c424de67751f4b6ae8494351218c5";
89813
+ readonly "8453": "0x9b091e21d25c424de67751f4b6ae8494351218c5";
89814
+ readonly "42161": "0x9b091e21d25c424de67751f4b6ae8494351218c5";
89815
+ readonly "84532": "0x9b091e21d25c424de67751f4b6ae8494351218c5";
89816
+ readonly "421614": "0x9b091e21d25c424de67751f4b6ae8494351218c5";
89817
+ readonly "11155111": "0x9b091e21d25c424de67751f4b6ae8494351218c5";
89818
+ readonly "11155420": "0x9b091e21d25c424de67751f4b6ae8494351218c5";
89719
89819
  };
89720
89820
  readonly REVDeployer: {
89721
89821
  readonly "1": "0xb552eb94284f94b833837d4b2cbb237128415d4e";