@whetstone-research/doppler-sdk 1.0.35 → 1.0.37
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/README.md +39 -43
- package/dist/evm/index.cjs +1472 -1019
- package/dist/evm/index.cjs.map +1 -1
- package/dist/evm/index.d.cts +679 -280
- package/dist/evm/index.d.ts +679 -280
- package/dist/evm/index.js +1473 -1021
- package/dist/evm/index.js.map +1 -1
- package/dist/solana/index.cjs +10569 -3765
- package/dist/solana/index.cjs.map +1 -1
- package/dist/solana/index.d.cts +5474 -2179
- package/dist/solana/index.d.ts +5474 -2179
- package/dist/solana/index.js +10567 -3769
- package/dist/solana/index.js.map +1 -1
- package/package.json +2 -1
package/dist/evm/index.js
CHANGED
|
@@ -1,16 +1,11 @@
|
|
|
1
1
|
import '../chunk-PZ5AY32C.js';
|
|
2
|
-
import { parseEther, formatEther, getAddress, encodeAbiParameters, keccak256, isAddress, zeroAddress, decodeAbiParameters, encodePacked,
|
|
2
|
+
import { parseEther, formatEther, getAddress, encodeAbiParameters, keccak256, isAddress, zeroAddress, decodeEventLog, decodeAbiParameters, encodePacked, toHex, ContractFunctionRevertedError, ExecutionRevertedError, BaseError, encodeFunctionData, erc20Abi, zeroHash, multicall3Abi, decodeFunctionResult, ContractFunctionZeroDataError, isHex, decodeErrorResult } from 'viem';
|
|
3
3
|
|
|
4
4
|
// src/evm/deployments.generated.ts
|
|
5
5
|
var GENERATED_DOPPLER_DEPLOYMENTS = {
|
|
6
6
|
"1": {
|
|
7
7
|
Airlock: "0xDe3599a2eC440B296373a983C85C365DA55d9dFA",
|
|
8
|
-
|
|
9
|
-
CloneDERC20VotesV2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
10
|
-
CloneERC20: "0x215b2cE3Dd8D110394e94A868580D61a77aDEc4A",
|
|
11
|
-
CloneERC20Factory: "0xe7Df2A4520C26a2D4Dedb3a7585BFBcd30eABA6e",
|
|
12
|
-
CloneERC20Votes: "0xA8d0E8036D3fAE21C7Af075ad41942Bc1f807CDF",
|
|
13
|
-
CloneERC20VotesFactory: "0x5A92bFfbc01ea0396A9c7D4154d36d4EAF2e483E",
|
|
8
|
+
Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
|
|
14
9
|
DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
|
|
15
10
|
DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
|
|
16
11
|
DopplerERC20V1: "0xDB7B520bb5C3a2C5d4871198081911359f93be87",
|
|
@@ -22,48 +17,19 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
|
|
|
22
17
|
LockableUniswapV3Initializer: "0xA2E0435225D52a8B950122752978007D758056d7",
|
|
23
18
|
NoOpGovernanceFactory: "0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638",
|
|
24
19
|
NoOpMigrator: "0x233A71A7bB928b1357A1Ebf454298320989Ca5B5",
|
|
25
|
-
Quoter: "
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
RehypeDopplerHookMigrator: "0x975f9d1939cf6e4A3c9D99f9d41e6411CF4dA23b",
|
|
29
|
-
StreamableFeesLocker: "0xe24FC2F7191e850e2D4514aBb4d39305b1871eC6",
|
|
20
|
+
Quoter: "0xce6cd4E35447E05A39A50A4bCf61f2DcD93A8f0D",
|
|
21
|
+
RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
|
|
22
|
+
RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
|
|
30
23
|
StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
|
|
31
24
|
TimelockFactory: "0x9fd40af2baAfAF03513f091444e821c0d5b06ea0",
|
|
32
25
|
TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
|
|
33
26
|
UniswapV2Locker: "0x06731e30df4B0209ED19C39Ba8eD253e17b0E495",
|
|
34
|
-
UniswapV2Migrator: "0x765875bff87614cE0581ee73B9fa663B71F3DfF2",
|
|
35
27
|
UniswapV2MigratorSplit: "0xD7abA5f1d80a330a6fe9E96F7bA122710E0912d3",
|
|
36
|
-
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
|
|
37
|
-
UniswapV4Migrator: "0x0820A4D0173C17Ece283f7bDaAF0f8876eB205f5",
|
|
38
|
-
UniswapV4MigratorHook: "0x4053D4fa966cbdCC20Ec62070aC8814De8bEE500",
|
|
39
|
-
UniswapV4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
|
|
40
|
-
UniswapV4MigratorSplitHook: "0x103aB8804e66bC272840940CBa0ad34729c4e500",
|
|
41
|
-
UniswapV4ScheduledMulticurveInitializer: "0xF84378C9F39e0FF267f3101c88773359c5393876",
|
|
42
|
-
UniswapV4ScheduledMulticurveInitializerHook: "0xc6a562cb5CbFA29BCB1bDCCF903b8B8f2E4A2DC0"
|
|
43
|
-
},
|
|
44
|
-
"130": {
|
|
45
|
-
Airlock: "0x77EbfBAE15AD200758E9E2E61597c0B07d731254",
|
|
46
|
-
Bundler: "0x91231cDdD8d6C86Df602070a3081478e074b97b7",
|
|
47
|
-
DopplerDeployer: "0x0d2f38d807bfAd5C18e430516e10ab560D300caF",
|
|
48
|
-
DopplerLensQuoter: "0x82Ac010C67f70BACf7655cd8948a4AD92A173CAC",
|
|
49
|
-
GovernanceFactory: "0x99C94B9Df930E1E21a4E4a2c105dBff21bF5c5aE",
|
|
50
|
-
LockableUniswapV3Initializer: "0xA3C847eAb58eAa9cbc215C785c9cfBc19CDABD5f",
|
|
51
|
-
NoOpGovernanceFactory: "0x3AD727ee0FBBb8Ee0920933FdB96F23fD56f1299",
|
|
52
|
-
NoOpMigrator: "0x917da361072ce968acD810BbfC9B64079426ebf0",
|
|
53
|
-
StreamableFeesLocker: "0x6ddfED58D238Ca3195E49d8ac3d4cEa6386E5C33",
|
|
54
|
-
TokenFactory: "0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3",
|
|
55
|
-
TokenFactory80: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
56
|
-
UniswapV2Migrator: "0xf6023127f6E937091D5B605680056A6D27524bad",
|
|
57
|
-
UniswapV3Initializer: "0x9F4e56be80f08ba1A2445645EFa6d231E27b43ec",
|
|
58
|
-
UniswapV4Initializer: "0x4B0EC16Eb40318Ca5A4346f20F04A2285C19675B",
|
|
59
|
-
UniswapV4Migrator: "0x49F3fBB2dFF7f3d03B622e3b2a6d3F2E6fdB2a5A",
|
|
60
|
-
UniswapV4MigratorHook: "0x53C050d3B09C80024138165520Bd7c078D9e2000"
|
|
28
|
+
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
|
|
61
29
|
},
|
|
62
30
|
"143": {
|
|
63
31
|
Airlock: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12",
|
|
64
|
-
Bundler: "
|
|
65
|
-
CloneDERC20VotesV2: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
66
|
-
CloneDERC20VotesV2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
32
|
+
Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
|
|
67
33
|
DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
|
|
68
34
|
DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
|
|
69
35
|
DopplerERC20V1: "0xDB7B520bb5C3a2C5d4871198081911359f93be87",
|
|
@@ -75,58 +41,19 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
|
|
|
75
41
|
LockableUniswapV3Initializer: "0x8b4C7DB9121FC885689C0A50D5a1429F15AEc2a0",
|
|
76
42
|
NoOpGovernanceFactory: "0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9",
|
|
77
43
|
NoOpMigrator: "0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731",
|
|
78
|
-
Quoter: "
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
RehypeDopplerHookMigrator: "0x975f9d1939cf6e4A3c9D99f9d41e6411CF4dA23b",
|
|
82
|
-
StreamableFeesLocker: "0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90",
|
|
44
|
+
Quoter: "0xce6cd4E35447E05A39A50A4bCf61f2DcD93A8f0D",
|
|
45
|
+
RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
|
|
46
|
+
RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
|
|
83
47
|
StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
|
|
84
48
|
TimelockFactory: "0x44610355465c1F5914C8B8ea0E7c887CC67459b2",
|
|
85
|
-
TokenFactory: "0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5",
|
|
86
|
-
TokenFactory80: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
87
49
|
TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
|
|
88
50
|
UniswapV2Locker: "0x06731e30df4B0209ED19C39Ba8eD253e17b0E495",
|
|
89
|
-
UniswapV2Migrator: "0x136191B46478cAB023cbC01a36160C4Aad81677a",
|
|
90
51
|
UniswapV2MigratorSplit: "0xD7abA5f1d80a330a6fe9E96F7bA122710E0912d3",
|
|
91
|
-
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
|
|
92
|
-
UniswapV4Migrator: "0x44bf742e57cd8cF23ABbc8dab2c44e2a3228356E",
|
|
93
|
-
UniswapV4MigratorHook: "0x3E4c689BBf33b37106eBC13Db8aa5BF13a25e500",
|
|
94
|
-
UniswapV4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
|
|
95
|
-
UniswapV4MigratorSplitHook: "0x103aB8804e66bC272840940CBa0ad34729c4e500",
|
|
96
|
-
UniswapV4ScheduledMulticurveInitializer: "0xCe3099B2F07029b086E5e92a1573C5f5A3071783",
|
|
97
|
-
UniswapV4ScheduledMulticurveInitializerHook: "0x580ca49389d83b019d07E17e99454f2F218e2dc0"
|
|
98
|
-
},
|
|
99
|
-
"1301": {
|
|
100
|
-
Airlock: "0x0d2f38d807bfAd5C18e430516e10ab560D300caF",
|
|
101
|
-
AirlockMultisigTestnet: "0x0abCf819FD57C9f0141628410fFC273405E44426",
|
|
102
|
-
Bundler: "0xED344444633B965cd148F8fFCE3765938A179094",
|
|
103
|
-
DopplerDeployer: "0x77B5F559EE9cf3bfcf2fFf5731a84332D8eECAC9",
|
|
104
|
-
DopplerLensQuoter: "0x917da361072ce968acD810BbfC9B64079426ebf0",
|
|
105
|
-
GovernanceFactory: "0x4225C632b62622Bd7B0A3eC9745C0a866Ff94F6F",
|
|
106
|
-
LockableUniswapV3Initializer: "0x9dFb775dB7b005d9Dc77DA84D8b2e42C281D0344",
|
|
107
|
-
NoOpGovernanceFactory: "0x7E5D336A6E9e453c9f02E5102CC039E015Fd8fb8",
|
|
108
|
-
NoOpMigrator: "0x193F48A45B6025dDeD10bc4BaeEF65c833696387",
|
|
109
|
-
StreamableFeesLocker: "0x1728E8B3282502f275949109331E070b819B38eA",
|
|
110
|
-
TokenFactory: "0x82Ac010C67f70BACf7655cd8948a4AD92A173CAC",
|
|
111
|
-
TokenFactory80: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
112
|
-
UniswapV2Migrator: "0x620e3fec244e913d73f2163623b62d02DB69638B",
|
|
113
|
-
UniswapV3Initializer: "0xE0dC4012AC9C868F09c6e4b20d66ED46D6F258d0",
|
|
114
|
-
UniswapV4Initializer: "0x70d20cd48791E527036491dc464C8Dc58351Dd93",
|
|
115
|
-
UniswapV4Migrator: "0xb6D69eAA98E657bEEFF7ca4452768e6f707aa6b1",
|
|
116
|
-
UniswapV4MigratorHook: "0xFB0671Ec46190b09255776d2D77744fa101Ba500",
|
|
117
|
-
UniswapV4MulticurveInitializer: "0xac7939F1B4079d55A7fA4DFA314Ac0173A77bA40",
|
|
118
|
-
UniswapV4MulticurveInitializerHook: "0x11b55A121a38FDab8FAF16f9f1A4f124E3f42d40",
|
|
119
|
-
UniswapV4ScheduledMulticurveInitializer: "0xF84378C9F39e0FF267f3101c88773359c5393876",
|
|
120
|
-
UniswapV4ScheduledMulticurveInitializerHook: "0xc6a562cb5CbFA29BCB1bDCCF903b8B8f2E4A2DC0"
|
|
121
|
-
},
|
|
122
|
-
"4326": {
|
|
123
|
-
Airlock: "0xDe3599a2eC440B296373a983C85C365DA55d9dFA",
|
|
124
|
-
NoOpGovernanceFactory: "0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638",
|
|
125
|
-
NoOpMigrator: "0x233A71A7bB928b1357A1Ebf454298320989Ca5B5"
|
|
52
|
+
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
|
|
126
53
|
},
|
|
127
54
|
"4663": {
|
|
128
55
|
Airlock: "0xeb7C034704eF8Dcd2D32324c1545f62fB4aD0862",
|
|
129
|
-
Bundler: "
|
|
56
|
+
Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
|
|
130
57
|
DN404Factory: "0x37A9Fa204a4d3A429FDED7e3469ab076C854Bc9d",
|
|
131
58
|
DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
|
|
132
59
|
DopplerDeployer: "0x4389AD34938B14F25cff7ED983c53f5a42A2573f",
|
|
@@ -140,9 +67,9 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
|
|
|
140
67
|
LockableUniswapV3Initializer: "0xde8886A0019Ea060B8378Ee37b8A23b8117F29A3",
|
|
141
68
|
NoOpGovernanceFactory: "0x85f37f74Ef2478A770318bc810177a9835911aD7",
|
|
142
69
|
NoOpMigrator: "0xba2F330EDb16cD8056f5988d8CE19BbC63475A0e",
|
|
143
|
-
Quoter: "
|
|
144
|
-
RehypeDopplerHookInitializer: "
|
|
145
|
-
RehypeDopplerHookMigrator: "
|
|
70
|
+
Quoter: "0xce6cd4E35447E05A39A50A4bCf61f2DcD93A8f0D",
|
|
71
|
+
RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
|
|
72
|
+
RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
|
|
146
73
|
StreamableFeesLockerV2: "0x7B6147AC3F615bdb764e7EbD5f517dac1AD163B8",
|
|
147
74
|
SwapRestrictorDopplerHook: "0xC16c826F75338A5Ea626f94f8992191B4ce5abA2",
|
|
148
75
|
TimelockFactory: "0x6076fdDFCaC0dD980e0350dfF5239feC3f86C578",
|
|
@@ -151,26 +78,9 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
|
|
|
151
78
|
UniswapV2MigratorSplit: "0xB05046cEa797c993FB5b583098B1c4682e9Da333",
|
|
152
79
|
UniswapV4Initializer: "0x6cce158B6D1747617fc218592B4D60B239B957ea"
|
|
153
80
|
},
|
|
154
|
-
"4801": {
|
|
155
|
-
Airlock: "0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731",
|
|
156
|
-
GovernanceFactory: "0x136191B46478cAB023cbC01a36160C4Aad81677a",
|
|
157
|
-
TokenFactory: "0x5FBe931dc4B923A7abe4c47aD68d5bF9Eda5B76D",
|
|
158
|
-
UniswapV2Migrator: "0x8b4C7DB9121FC885689C0A50D5a1429F15AEc2a0",
|
|
159
|
-
UniswapV3Initializer: "0x9916Ec1c1E0462F6F8f7514e414F06bf001Ac82A",
|
|
160
|
-
WETH: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"
|
|
161
|
-
},
|
|
162
|
-
"6343": {
|
|
163
|
-
Airlock: "0xDe3599a2eC440B296373a983C85C365DA55d9dFA",
|
|
164
|
-
NoOpGovernanceFactory: "0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638",
|
|
165
|
-
NoOpMigrator: "0x233A71A7bB928b1357A1Ebf454298320989Ca5B5"
|
|
166
|
-
},
|
|
167
81
|
"8453": {
|
|
168
82
|
Airlock: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12",
|
|
169
|
-
Bundler: "
|
|
170
|
-
CloneDERC20VotesV2: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
171
|
-
CloneDERC20VotesV2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
172
|
-
DecayMulticurveInitializer: "0xD59cE43E53D69F190E15d9822Fb4540dCcc91178",
|
|
173
|
-
DecayMulticurveInitializerHook: "0xbB7784A4d481184283Ed89619A3e3ed143e1Adc0",
|
|
83
|
+
Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
|
|
174
84
|
DN404Factory: "0x37A9Fa204a4d3A429FDED7e3469ab076C854Bc9d",
|
|
175
85
|
DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
|
|
176
86
|
DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
|
|
@@ -184,78 +94,47 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
|
|
|
184
94
|
LockableUniswapV3Initializer: "0xE0dC4012AC9C868F09c6e4b20d66ED46D6F258d0",
|
|
185
95
|
NoOpGovernanceFactory: "0xe7dfbd5b0A2C3B4464653A9beCdc489229eF090E",
|
|
186
96
|
NoOpMigrator: "0x6ddfED58D238Ca3195E49d8ac3d4cEa6386E5C33",
|
|
187
|
-
Quoter: "
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
RehypeDopplerHookMigrator: "0x975f9d1939cf6e4A3c9D99f9d41e6411CF4dA23b",
|
|
191
|
-
StreamableFeesLocker: "0x0A00775D71a42cd33D62780003035e7F5b47bD3A",
|
|
97
|
+
Quoter: "0xce6cd4E35447E05A39A50A4bCf61f2DcD93A8f0D",
|
|
98
|
+
RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
|
|
99
|
+
RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
|
|
192
100
|
StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
|
|
193
101
|
TimelockFactory: "0xa636bD5F9179E80e9EdB371Ed90956fA5ebdCB33",
|
|
194
|
-
TokenFactory: "0x4225C632b62622Bd7B0A3eC9745C0a866Ff94F6F",
|
|
195
|
-
TokenFactory80: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
196
102
|
TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
|
|
197
103
|
UniswapV2Locker: "0x06731e30df4B0209ED19C39Ba8eD253e17b0E495",
|
|
198
|
-
UniswapV2Migrator: "0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731",
|
|
199
104
|
UniswapV2MigratorSplit: "0xD7abA5f1d80a330a6fe9E96F7bA122710E0912d3",
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
UniswapV2Locker: "
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad",
|
|
229
|
-
UniswapV4Migrator: "0x4B0EC16Eb40318Ca5A4346f20F04A2285C19675B",
|
|
230
|
-
UniswapV4MigratorHook: "0x76E1f507592d9856B48482c599732d129eD6a500",
|
|
231
|
-
UniswapV4MulticurveInitializer: "0xA3C847eAb58eAa9cbc215C785c9cfBc19CDABD5f",
|
|
232
|
-
UniswapV4MulticurveInitializerHook: "0xFaF16d11737E6552156DD328cD26C530e1da2D40",
|
|
233
|
-
WETH: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"
|
|
234
|
-
},
|
|
235
|
-
"57073": {
|
|
236
|
-
Airlock: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12",
|
|
237
|
-
Bundler: "0x136191B46478cAB023cbC01a36160C4Aad81677a",
|
|
238
|
-
DopplerDeployer: "0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B",
|
|
239
|
-
DopplerLensQuoter: "0x8AF018e28c273826e6b2d5a99e81c8fB63729b07",
|
|
240
|
-
GovernanceFactory: "0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9",
|
|
241
|
-
TokenFactory: "0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45",
|
|
242
|
-
UniswapV2Migrator: "0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731",
|
|
243
|
-
UniswapV3Initializer: "0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5",
|
|
244
|
-
UniswapV4Initializer: "0x014E1c0bd34f3B10546E554CB33B3293fECDD056"
|
|
105
|
+
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
|
|
106
|
+
},
|
|
107
|
+
"42161": {
|
|
108
|
+
Airlock: "0xeb7C034704eF8Dcd2D32324c1545f62fB4aD0862",
|
|
109
|
+
Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
|
|
110
|
+
DN404Factory: "0x37A9Fa204a4d3A429FDED7e3469ab076C854Bc9d",
|
|
111
|
+
DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
|
|
112
|
+
DopplerDeployer: "0x4389AD34938B14F25cff7ED983c53f5a42A2573f",
|
|
113
|
+
DopplerERC20V1: "0x3Be8B97Fd0e713B5aBE0649Fa830223B6B4BC599",
|
|
114
|
+
DopplerERC20V1Factory: "0x1B37D3a72082029c44B35B604Ea473617580b69a",
|
|
115
|
+
DopplerHookInitializer: "0xAa7f809BB3752f715fA2e418230667C382A56544",
|
|
116
|
+
DopplerHookMigrator: "0x7BF319d8e969f7596B1Bc171Da9ce322f67Ae0c4",
|
|
117
|
+
DopplerLensQuoter: "0xf4c22465532f64777FfcD7770831AEca38F35c04",
|
|
118
|
+
GovernanceFactory: "0xDeb0447DAE3EB177c4dbA8bBCCCa25c8F273B7ef",
|
|
119
|
+
LaunchpadGovernanceFactory: "0xdb036746D65DD52126b1915f1AdF555e6C5237Cf",
|
|
120
|
+
LockableUniswapV3Initializer: "0xde8886A0019Ea060B8378Ee37b8A23b8117F29A3",
|
|
121
|
+
NoOpGovernanceFactory: "0x85f37f74Ef2478A770318bc810177a9835911aD7",
|
|
122
|
+
NoOpMigrator: "0xba2F330EDb16cD8056f5988d8CE19BbC63475A0e",
|
|
123
|
+
Quoter: "0xc9Be59b344Ec66547A4C697aa374e959D59b0567",
|
|
124
|
+
RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
|
|
125
|
+
RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
|
|
126
|
+
StreamableFeesLockerV2: "0xEd822828B6109d16a9D362b8146a35789E0064f5",
|
|
127
|
+
SwapRestrictorDopplerHook: "0xC16c826F75338A5Ea626f94f8992191B4ce5abA2",
|
|
128
|
+
TimelockFactory: "0x6076fdDFCaC0dD980e0350dfF5239feC3f86C578",
|
|
129
|
+
TopUpDistributor: "0x46adee7595d48b1Ec53090e9bc78e1E69Fa0eF06",
|
|
130
|
+
UniswapV2Locker: "0x63f6Efe03F25A8C6650b38d05C5a454051d642a5",
|
|
131
|
+
UniswapV2MigratorSplit: "0xB05046cEa797c993FB5b583098B1c4682e9Da333",
|
|
132
|
+
UniswapV4Initializer: "0x6cce158B6D1747617fc218592B4D60B239B957ea"
|
|
245
133
|
},
|
|
246
134
|
"84532": {
|
|
247
135
|
Airlock: "0x3411306Ce66c9469BFF1535BA955503c4Bde1C6e",
|
|
248
136
|
AirlockMultisigTestnet: "0x0abCf819FD57C9f0141628410fFC273405E44426",
|
|
249
|
-
|
|
250
|
-
Bundler: "0x69DB7c20cDdA49Bed2bFb21e16Fa218330C50661",
|
|
251
|
-
CloneDERC20VotesV2: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
252
|
-
CloneDERC20VotesV2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
253
|
-
CloneERC20: "0xE7F1Cc50CCa68975eD6E56Ee4b0Aaf171D02732A",
|
|
254
|
-
CloneERC20Factory: "0xbf4Ca4D527c9760A884df31292f72E9AcA503045",
|
|
255
|
-
CloneERC20Votes: "0x52831E40151a79FE2e74549b0974d44A10Ac30aD",
|
|
256
|
-
CloneERC20VotesFactory: "0x9a497a9fB78e49984B9d260abA1F4AD6321D4D92",
|
|
257
|
-
DecayMulticurveInitializer: "0xD59cE43E53D69F190E15d9822Fb4540dCcc91178",
|
|
258
|
-
DecayMulticurveInitializerHook: "0xbB7784A4d481184283Ed89619A3e3ed143e1Adc0",
|
|
137
|
+
Bundler: "0xDdDDDd67579B73fDdFf301DB92Fd4A01afD4613a",
|
|
259
138
|
DN404Factory: "0x98b0Aa2e0f134dbB3eb157b5646D387E6D55243a",
|
|
260
139
|
DopplerCreateXDeployer: "0x0000000000f13Ab5b685F03A412A26719aB6bE60",
|
|
261
140
|
DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
|
|
@@ -267,80 +146,24 @@ var GENERATED_DOPPLER_DEPLOYMENTS = {
|
|
|
267
146
|
GovernanceFactory: "0x9dBFaaDC8c0cB2c34bA698DD9426555336992e20",
|
|
268
147
|
LaunchpadGovernanceFactory: "0x0902e7C7207df8ed6303Aef4382bcab181b5fBFA",
|
|
269
148
|
LockableUniswapV3Initializer: "0x16AdA5Be50C3c2D94Af5fEae6b539C40A78Ad53c",
|
|
270
|
-
MulticurveLibrary: "0x32238a39ba5aF060EFbfAda59979B639E0945fE0",
|
|
271
149
|
NoOpGovernanceFactory: "0x7bD798fafC99A3b17E261F8308A8C11B56935ea1",
|
|
272
150
|
NoOpMigrator: "0xF11066abbd329ac4bBA39455340539322C222eb0",
|
|
273
|
-
Quoter: "
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
RehypeDopplerHookMigrator: "0x9349E5A3e6458aa65E2fB7ED67e9aD08Ae7F660D",
|
|
277
|
-
StreamableFeesLocker: "0x3345E557c5C0b474bE1eb4693264008B8562Aa9c",
|
|
151
|
+
Quoter: "0xc20347a97646ed6e2B45DBfEcE372f68d928ec0a",
|
|
152
|
+
RehypeDopplerHookInitializer: "0xAdB90eF4dc001CFB81ecADEd2CDbda7D18487606",
|
|
153
|
+
RehypeDopplerHookMigrator: "0x5E2A91F8eBE288e0AA76a0C1A47877Ded801e90d",
|
|
278
154
|
StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
|
|
279
|
-
TeamGovernanceFactory: "0x8aF3001ED75F86f4Dd910577ECa9C5dB7CEa765c",
|
|
280
155
|
TimelockFactory: "0x80F42ECCc91177D39E20f1A88A54D231c1b086a2",
|
|
281
|
-
TokenFactory: "0x9D8fd79B2a59c5d91ccBd79c3AEb4de56451Bb02",
|
|
282
|
-
TokenFactory80: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
283
156
|
TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
|
|
284
157
|
UniswapV2Locker: "0x06731e30df4B0209ED19C39Ba8eD253e17b0E495",
|
|
285
|
-
UniswapV2Migrator: "0x04a898f3722c38F9Def707bD17DC78920EFA977C",
|
|
286
158
|
UniswapV2MigratorSplit: "0xD7abA5f1d80a330a6fe9E96F7bA122710E0912d3",
|
|
287
|
-
|
|
288
|
-
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad",
|
|
289
|
-
UniswapV4Migrator: "0xEEe0eCCb54398ce371CAACBCEf076d3Ed597DDb3",
|
|
290
|
-
UniswapV4MigratorHook: "0x127cAAAd598Ffa97577940b0a5c3b6150019E500",
|
|
291
|
-
UniswapV4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
|
|
292
|
-
UniswapV4MigratorSplitHook: "0x103aB8804e66bC272840940CBa0ad34729c4e500",
|
|
293
|
-
UniswapV4MulticurveInitializer: "0x1718405E58c61425cDc0083262bC9f72198F5232",
|
|
294
|
-
UniswapV4MulticurveInitializerHook: "0x6a1061FC558dDe1E6fD0eFd641b370d435b56d40",
|
|
295
|
-
UniswapV4ScheduledMulticurveInitializer: "0xF84378C9F39e0FF267f3101c88773359c5393876",
|
|
296
|
-
UniswapV4ScheduledMulticurveInitializerHook: "0xc6a562cb5CbFA29BCB1bDCCF903b8B8f2E4A2DC0",
|
|
297
|
-
WETH: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"
|
|
298
|
-
},
|
|
299
|
-
"763373": {
|
|
300
|
-
Airlock: "0x5CadB034267751a364dDD4d321C99E07A307f915",
|
|
301
|
-
GovernanceFactory: "0x9F4e56be80f08ba1A2445645EFa6d231E27b43ec",
|
|
302
|
-
TokenFactory: "0x77EbfBAE15AD200758E9E2E61597c0B07d731254",
|
|
303
|
-
UniswapV2Migrator: "0x99C94B9Df930E1E21a4E4a2c105dBff21bF5c5aE",
|
|
304
|
-
UniswapV3Initializer: "0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3",
|
|
305
|
-
WETH: "0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B"
|
|
306
|
-
},
|
|
307
|
-
"11155111": {
|
|
308
|
-
Airlock: "0xDe3599a2eC440B296373a983C85C365DA55d9dFA",
|
|
309
|
-
AirlockMultisigTestnet: "0x0abCf819FD57C9f0141628410fFC273405E44426",
|
|
310
|
-
CloneDERC20VotesV2: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
311
|
-
CloneDERC20VotesV2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
312
|
-
CloneERC20: "0x215b2cE3Dd8D110394e94A868580D61a77aDEc4A",
|
|
313
|
-
CloneERC20Factory: "0xe7Df2A4520C26a2D4Dedb3a7585BFBcd30eABA6e",
|
|
314
|
-
CloneERC20Votes: "0xA8d0E8036D3fAE21C7Af075ad41942Bc1f807CDF",
|
|
315
|
-
CloneERC20VotesFactory: "0x5A92bFfbc01ea0396A9c7D4154d36d4EAF2e483E",
|
|
316
|
-
DecayMulticurveInitializer: "0xD59cE43E53D69F190E15d9822Fb4540dCcc91178",
|
|
317
|
-
DecayMulticurveInitializerHook: "0xbB7784A4d481184283Ed89619A3e3ed143e1Adc0",
|
|
318
|
-
DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
|
|
319
|
-
DopplerHookInitializer: "0xBDF938149ac6a781F94FAa0ed45E6A0e984c6544",
|
|
320
|
-
DopplerHookMigrator: "0x1E40b0875DDa35f41E15cFB475403859B8c860c4",
|
|
321
|
-
GovernanceFactory: "0x9F309D79BEe3E8b2f56FaCF74b7195Df176c8F61",
|
|
322
|
-
NoOpGovernanceFactory: "0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638",
|
|
323
|
-
NoOpMigrator: "0x233A71A7bB928b1357A1Ebf454298320989Ca5B5",
|
|
324
|
-
Quoter: "0xFD44B773B21AC485C95Db1Ff38554b7699f8C042",
|
|
325
|
-
RehypeDopplerHook: "0x3Ec4798A9B11e8243A8Db99687f7A23597B96623",
|
|
326
|
-
RehypeDopplerHookInitializer: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
|
|
327
|
-
RehypeDopplerHookMigrator: "0xea95DfdF69B90c65C827070852F7039D6aF6Dd7b",
|
|
328
|
-
StreamableFeesLocker: "0xe24FC2F7191e850e2D4514aBb4d39305b1871eC6",
|
|
329
|
-
StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
|
|
330
|
-
TimelockFactory: "0x9fd40af2baAfAF03513f091444e821c0d5b06ea0",
|
|
331
|
-
TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
|
|
332
|
-
UniswapV2Locker: "0xA366D94eDA7abEc16bfa5619A855a6208bE3aEE9",
|
|
333
|
-
UniswapV2Migrator: "0x765875bff87614cE0581ee73B9fa663B71F3DfF2",
|
|
334
|
-
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad",
|
|
335
|
-
UniswapV4Migrator: "0x0820A4D0173C17Ece283f7bDaAF0f8876eB205f5",
|
|
336
|
-
UniswapV4MigratorHook: "0x4053D4fa966cbdCC20Ec62070aC8814De8bEE500",
|
|
337
|
-
UniswapV4ScheduledMulticurveInitializer: "0xF84378C9F39e0FF267f3101c88773359c5393876",
|
|
338
|
-
UniswapV4ScheduledMulticurveInitializerHook: "0xc6a562cb5CbFA29BCB1bDCCF903b8B8f2E4A2DC0"
|
|
159
|
+
UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
|
|
339
160
|
}
|
|
340
161
|
};
|
|
341
162
|
var WAD = 10n ** 18n;
|
|
342
163
|
var DEAD_ADDRESS = "0x000000000000000000000000000000000000dEaD";
|
|
343
164
|
var ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
165
|
+
var MAX_UINT64 = (1n << 64n) - 1n;
|
|
166
|
+
var MAX_UINT128 = (1n << 128n) - 1n;
|
|
344
167
|
var FEE_TIERS = {
|
|
345
168
|
LOWEST: 100,
|
|
346
169
|
// 0.01%
|
|
@@ -369,6 +192,7 @@ var TICK_SPACINGS = {
|
|
|
369
192
|
var DOPPLER_MAX_TICK_SPACING = 30;
|
|
370
193
|
var SECONDS_PER_DAY = 86400;
|
|
371
194
|
var SECONDS_PER_YEAR = 365 * SECONDS_PER_DAY;
|
|
195
|
+
var MIN_BUNDLER_VESTING_DURATION = BigInt(SECONDS_PER_DAY);
|
|
372
196
|
var DEFAULT_EPOCH_LENGTH = 43200;
|
|
373
197
|
var DEFAULT_AUCTION_DURATION = 7 * SECONDS_PER_DAY;
|
|
374
198
|
var DEFAULT_LOCK_DURATION = SECONDS_PER_YEAR;
|
|
@@ -463,6 +287,7 @@ var FEE_AMOUNT_MASK = 16777215;
|
|
|
463
287
|
var CHAIN_IDS = {
|
|
464
288
|
MAINNET: 1,
|
|
465
289
|
ETH_SEPOLIA: 11155111,
|
|
290
|
+
ARBITRUM: 42161,
|
|
466
291
|
BASE: 8453,
|
|
467
292
|
BASE_SEPOLIA: 84532,
|
|
468
293
|
INK: 57073,
|
|
@@ -482,15 +307,9 @@ function getRehypeDopplerHookInitializerAddress(chainId) {
|
|
|
482
307
|
var ADDRESSES = {
|
|
483
308
|
[CHAIN_IDS.MAINNET]: {
|
|
484
309
|
airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].Airlock,
|
|
485
|
-
tokenFactory:
|
|
486
|
-
derc20V2Factory:
|
|
487
|
-
|
|
488
|
-
"CloneDERC20VotesV2Factory"
|
|
489
|
-
),
|
|
490
|
-
derc20V2Implementation: getGeneratedAddress(
|
|
491
|
-
CHAIN_IDS.MAINNET,
|
|
492
|
-
"CloneDERC20VotesV2"
|
|
493
|
-
),
|
|
310
|
+
tokenFactory: "0xe7Df2A4520C26a2D4Dedb3a7585BFBcd30eABA6e",
|
|
311
|
+
derc20V2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
312
|
+
derc20V2Implementation: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
494
313
|
dopplerERC20V1Factory: getGeneratedAddress(
|
|
495
314
|
CHAIN_IDS.MAINNET,
|
|
496
315
|
"DopplerERC20V1Factory"
|
|
@@ -503,7 +322,7 @@ var ADDRESSES = {
|
|
|
503
322
|
v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
|
|
504
323
|
lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].LockableUniswapV3Initializer,
|
|
505
324
|
v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].UniswapV4Initializer,
|
|
506
|
-
v4ScheduledMulticurveInitializer:
|
|
325
|
+
v4ScheduledMulticurveInitializer: "0xF84378C9F39e0FF267f3101c88773359c5393876",
|
|
507
326
|
dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].DopplerHookInitializer,
|
|
508
327
|
rehypeDopplerHookInitializer: getRehypeDopplerHookInitializerAddress(
|
|
509
328
|
CHAIN_IDS.MAINNET
|
|
@@ -514,18 +333,18 @@ var ADDRESSES = {
|
|
|
514
333
|
dopplerLens: ZERO_ADDRESS,
|
|
515
334
|
dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].DopplerDeployer,
|
|
516
335
|
poolManager: "0x000000000004444c5dc75cB358380D2e3dE08A90",
|
|
517
|
-
v2Migrator:
|
|
336
|
+
v2Migrator: "0x765875bff87614cE0581ee73B9fa663B71F3DfF2",
|
|
518
337
|
v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].UniswapV2MigratorSplit,
|
|
519
|
-
v4Migrator:
|
|
520
|
-
v4MigratorSplit:
|
|
521
|
-
v4MigratorHook:
|
|
338
|
+
v4Migrator: "0x0820A4D0173C17Ece283f7bDaAF0f8876eB205f5",
|
|
339
|
+
v4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
|
|
340
|
+
v4MigratorHook: "0x4053D4fa966cbdCC20Ec62070aC8814De8bEE500",
|
|
522
341
|
dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].DopplerHookMigrator,
|
|
523
342
|
rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].RehypeDopplerHookMigrator,
|
|
524
343
|
noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].NoOpMigrator,
|
|
525
344
|
governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].GovernanceFactory,
|
|
526
345
|
noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].NoOpGovernanceFactory,
|
|
527
346
|
launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].LaunchpadGovernanceFactory,
|
|
528
|
-
streamableFeesLocker:
|
|
347
|
+
streamableFeesLocker: "0xe24FC2F7191e850e2D4514aBb4d39305b1871eC6",
|
|
529
348
|
streamableFeesLockerV2: getGeneratedAddress(
|
|
530
349
|
CHAIN_IDS.MAINNET,
|
|
531
350
|
"StreamableFeesLockerV2"
|
|
@@ -533,6 +352,7 @@ var ADDRESSES = {
|
|
|
533
352
|
topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].TopUpDistributor,
|
|
534
353
|
universalRouter: "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
|
|
535
354
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
355
|
+
bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].Bundler,
|
|
536
356
|
weth: "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",
|
|
537
357
|
univ2Router02: "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D",
|
|
538
358
|
uniswapV2Factory: "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f",
|
|
@@ -540,54 +360,87 @@ var ADDRESSES = {
|
|
|
540
360
|
uniswapV4Quoter: "0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203"
|
|
541
361
|
},
|
|
542
362
|
[CHAIN_IDS.ETH_SEPOLIA]: {
|
|
543
|
-
airlock:
|
|
544
|
-
tokenFactory:
|
|
545
|
-
derc20V2Factory:
|
|
546
|
-
|
|
547
|
-
"CloneDERC20VotesV2Factory"
|
|
548
|
-
),
|
|
549
|
-
derc20V2Implementation: getGeneratedAddress(
|
|
550
|
-
CHAIN_IDS.ETH_SEPOLIA,
|
|
551
|
-
"CloneDERC20VotesV2"
|
|
552
|
-
),
|
|
363
|
+
airlock: "0xDe3599a2eC440B296373a983C85C365DA55d9dFA",
|
|
364
|
+
tokenFactory: "0xe7Df2A4520C26a2D4Dedb3a7585BFBcd30eABA6e",
|
|
365
|
+
derc20V2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
366
|
+
derc20V2Implementation: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
553
367
|
v3Initializer: ZERO_ADDRESS,
|
|
554
368
|
v3Quoter: ZERO_ADDRESS,
|
|
555
|
-
v4Initializer:
|
|
556
|
-
v4ScheduledMulticurveInitializer:
|
|
557
|
-
dopplerHookInitializer:
|
|
558
|
-
rehypeDopplerHookInitializer:
|
|
559
|
-
|
|
560
|
-
),
|
|
561
|
-
rehypeDopplerHook: getRehypeDopplerHookInitializerAddress(
|
|
562
|
-
CHAIN_IDS.ETH_SEPOLIA
|
|
563
|
-
),
|
|
369
|
+
v4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad",
|
|
370
|
+
v4ScheduledMulticurveInitializer: "0xF84378C9F39e0FF267f3101c88773359c5393876",
|
|
371
|
+
dopplerHookInitializer: "0xBDF938149ac6a781F94FAa0ed45E6A0e984c6544",
|
|
372
|
+
rehypeDopplerHookInitializer: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
|
|
373
|
+
rehypeDopplerHook: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
|
|
564
374
|
dopplerLens: ZERO_ADDRESS,
|
|
565
|
-
dopplerDeployer:
|
|
375
|
+
dopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
|
|
566
376
|
poolManager: "0xE03A1074c86CFeDd5C142C4F04F1a1536e203543",
|
|
567
|
-
v2Migrator:
|
|
568
|
-
v4Migrator:
|
|
569
|
-
dopplerHookMigrator:
|
|
570
|
-
rehypeDopplerHookMigrator:
|
|
571
|
-
noOpMigrator:
|
|
377
|
+
v2Migrator: "0x765875bff87614cE0581ee73B9fa663B71F3DfF2",
|
|
378
|
+
v4Migrator: "0x0820A4D0173C17Ece283f7bDaAF0f8876eB205f5",
|
|
379
|
+
dopplerHookMigrator: "0x1E40b0875DDa35f41E15cFB475403859B8c860c4",
|
|
380
|
+
rehypeDopplerHookMigrator: "0xea95DfdF69B90c65C827070852F7039D6aF6Dd7b",
|
|
381
|
+
noOpMigrator: "0x233A71A7bB928b1357A1Ebf454298320989Ca5B5",
|
|
572
382
|
governanceFactory: ZERO_ADDRESS,
|
|
573
|
-
noOpGovernanceFactory:
|
|
574
|
-
streamableFeesLocker:
|
|
383
|
+
noOpGovernanceFactory: "0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638",
|
|
384
|
+
streamableFeesLocker: "0xe24FC2F7191e850e2D4514aBb4d39305b1871eC6",
|
|
575
385
|
universalRouter: "0x3A9D48AB9751398BbFa63ad67599Bb04e4BdF98b",
|
|
576
386
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
577
387
|
weth: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14",
|
|
578
388
|
uniswapV4Quoter: "0x61b3f2011a92d183c7dbadbda940a7555ccf9227"
|
|
579
389
|
},
|
|
580
|
-
[CHAIN_IDS.
|
|
581
|
-
airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.
|
|
582
|
-
tokenFactory:
|
|
583
|
-
|
|
584
|
-
CHAIN_IDS.
|
|
585
|
-
"
|
|
390
|
+
[CHAIN_IDS.ARBITRUM]: {
|
|
391
|
+
airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].Airlock,
|
|
392
|
+
tokenFactory: ZERO_ADDRESS,
|
|
393
|
+
dopplerERC20V1Factory: getGeneratedAddress(
|
|
394
|
+
CHAIN_IDS.ARBITRUM,
|
|
395
|
+
"DopplerERC20V1Factory"
|
|
586
396
|
),
|
|
587
|
-
|
|
588
|
-
CHAIN_IDS.
|
|
589
|
-
"
|
|
397
|
+
dopplerERC20V1Implementation: getGeneratedAddress(
|
|
398
|
+
CHAIN_IDS.ARBITRUM,
|
|
399
|
+
"DopplerERC20V1"
|
|
400
|
+
),
|
|
401
|
+
doppler404Factory: getGeneratedAddress(CHAIN_IDS.ARBITRUM, "DN404Factory"),
|
|
402
|
+
v3Initializer: ZERO_ADDRESS,
|
|
403
|
+
v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
|
|
404
|
+
lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].LockableUniswapV3Initializer,
|
|
405
|
+
v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].UniswapV4Initializer,
|
|
406
|
+
dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].DopplerHookInitializer,
|
|
407
|
+
rehypeDopplerHookInitializer: getRehypeDopplerHookInitializerAddress(
|
|
408
|
+
CHAIN_IDS.ARBITRUM
|
|
409
|
+
),
|
|
410
|
+
rehypeDopplerHook: getRehypeDopplerHookInitializerAddress(
|
|
411
|
+
CHAIN_IDS.ARBITRUM
|
|
412
|
+
),
|
|
413
|
+
dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].DopplerLensQuoter,
|
|
414
|
+
dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].DopplerDeployer,
|
|
415
|
+
poolManager: "0x360E68faCcca8cA495c1B759Fd9EEe466db9FB32",
|
|
416
|
+
v2Migrator: ZERO_ADDRESS,
|
|
417
|
+
v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].UniswapV2MigratorSplit,
|
|
418
|
+
v4Migrator: ZERO_ADDRESS,
|
|
419
|
+
dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].DopplerHookMigrator,
|
|
420
|
+
rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].RehypeDopplerHookMigrator,
|
|
421
|
+
noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].NoOpMigrator,
|
|
422
|
+
governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].GovernanceFactory,
|
|
423
|
+
noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].NoOpGovernanceFactory,
|
|
424
|
+
launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].LaunchpadGovernanceFactory,
|
|
425
|
+
streamableFeesLocker: ZERO_ADDRESS,
|
|
426
|
+
streamableFeesLockerV2: getGeneratedAddress(
|
|
427
|
+
CHAIN_IDS.ARBITRUM,
|
|
428
|
+
"StreamableFeesLockerV2"
|
|
590
429
|
),
|
|
430
|
+
topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].TopUpDistributor,
|
|
431
|
+
universalRouter: "0xA51afAFe0263b40EdaEf0Df8781eA9aa03E381a3",
|
|
432
|
+
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
433
|
+
bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].Bundler,
|
|
434
|
+
weth: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
|
|
435
|
+
uniswapV2Factory: "0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9",
|
|
436
|
+
uniswapV3Factory: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
|
|
437
|
+
uniswapV4Quoter: "0x3972C00f7ed4885e145823eb7C655375d275A1C5"
|
|
438
|
+
},
|
|
439
|
+
[CHAIN_IDS.BASE]: {
|
|
440
|
+
airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Airlock,
|
|
441
|
+
tokenFactory: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
442
|
+
derc20V2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
443
|
+
derc20V2Implementation: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
591
444
|
dopplerERC20V1Factory: getGeneratedAddress(
|
|
592
445
|
CHAIN_IDS.BASE,
|
|
593
446
|
"DopplerERC20V1Factory"
|
|
@@ -597,15 +450,15 @@ var ADDRESSES = {
|
|
|
597
450
|
"DopplerERC20V1"
|
|
598
451
|
),
|
|
599
452
|
doppler404Factory: getGeneratedAddress(CHAIN_IDS.BASE, "DN404Factory"),
|
|
600
|
-
v3Initializer:
|
|
453
|
+
v3Initializer: "0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5",
|
|
601
454
|
v3Quoter: "0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a",
|
|
602
455
|
lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LockableUniswapV3Initializer,
|
|
603
456
|
v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV4Initializer,
|
|
604
|
-
v4MulticurveInitializer:
|
|
457
|
+
v4MulticurveInitializer: "0x65dE470Da664A5be139A5D812bE5FDa0d76CC951",
|
|
605
458
|
// From Doppler multicurve deployments (Base mainnet)
|
|
606
|
-
v4ScheduledMulticurveInitializer:
|
|
459
|
+
v4ScheduledMulticurveInitializer: "0xA36715dA46Ddf4A769f3290f49AF58bF8132ED8E",
|
|
607
460
|
// From Doppler scheduled multicurve deployments (Base mainnet)
|
|
608
|
-
v4DecayMulticurveInitializer:
|
|
461
|
+
v4DecayMulticurveInitializer: "0xD59cE43E53D69F190E15d9822Fb4540dCcc91178",
|
|
609
462
|
// From Doppler decay multicurve deployments (Base mainnet)
|
|
610
463
|
// Opening auction slots reserved for phase-1 lifecycle support (not deployed on Base yet)
|
|
611
464
|
openingAuctionInitializer: ZERO_ADDRESS,
|
|
@@ -618,18 +471,18 @@ var ADDRESSES = {
|
|
|
618
471
|
),
|
|
619
472
|
rehypeDopplerHook: getRehypeDopplerHookInitializerAddress(CHAIN_IDS.BASE),
|
|
620
473
|
dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerHookInitializer,
|
|
621
|
-
v2Migrator:
|
|
474
|
+
v2Migrator: "0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731",
|
|
622
475
|
v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].UniswapV2MigratorSplit,
|
|
623
|
-
v4Migrator:
|
|
624
|
-
v4MigratorSplit:
|
|
625
|
-
v4MigratorHook:
|
|
476
|
+
v4Migrator: "0xd3B4cF7FD24381e90A4F012fC6c5976b87B9B3cE",
|
|
477
|
+
v4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
|
|
478
|
+
v4MigratorHook: "0xD6FECFF347c6203A41874e8D77dE669B54e7A500",
|
|
626
479
|
dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerHookMigrator,
|
|
627
480
|
rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].RehypeDopplerHookMigrator,
|
|
628
481
|
noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpMigrator,
|
|
629
482
|
governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].GovernanceFactory,
|
|
630
483
|
noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpGovernanceFactory,
|
|
631
484
|
launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].LaunchpadGovernanceFactory,
|
|
632
|
-
streamableFeesLocker:
|
|
485
|
+
streamableFeesLocker: "0x0A00775D71a42cd33D62780003035e7F5b47bD3A",
|
|
633
486
|
streamableFeesLockerV2: getGeneratedAddress(
|
|
634
487
|
CHAIN_IDS.BASE,
|
|
635
488
|
"StreamableFeesLockerV2"
|
|
@@ -646,15 +499,9 @@ var ADDRESSES = {
|
|
|
646
499
|
},
|
|
647
500
|
[CHAIN_IDS.BASE_SEPOLIA]: {
|
|
648
501
|
airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].Airlock,
|
|
649
|
-
tokenFactory:
|
|
650
|
-
derc20V2Factory:
|
|
651
|
-
|
|
652
|
-
"CloneDERC20VotesV2Factory"
|
|
653
|
-
),
|
|
654
|
-
derc20V2Implementation: getGeneratedAddress(
|
|
655
|
-
CHAIN_IDS.BASE_SEPOLIA,
|
|
656
|
-
"CloneDERC20VotesV2"
|
|
657
|
-
),
|
|
502
|
+
tokenFactory: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
503
|
+
derc20V2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
504
|
+
derc20V2Implementation: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
658
505
|
dopplerERC20V1Factory: getGeneratedAddress(
|
|
659
506
|
CHAIN_IDS.BASE_SEPOLIA,
|
|
660
507
|
"DopplerERC20V1Factory"
|
|
@@ -664,14 +511,14 @@ var ADDRESSES = {
|
|
|
664
511
|
"DopplerERC20V1"
|
|
665
512
|
),
|
|
666
513
|
doppler404Factory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DN404Factory,
|
|
667
|
-
v3Initializer:
|
|
514
|
+
v3Initializer: "0x4C3062B9ccFdbCB10353F57C1B59a29d4c5CFa47",
|
|
668
515
|
v3Quoter: "0xC5290058841028F1614F3A6F0F5816cAd0df5E27",
|
|
669
516
|
lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].LockableUniswapV3Initializer,
|
|
670
517
|
v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV4Initializer,
|
|
671
|
-
v4MulticurveInitializer:
|
|
672
|
-
v4ScheduledMulticurveInitializer:
|
|
518
|
+
v4MulticurveInitializer: "0x1718405E58c61425cDc0083262bC9f72198F5232",
|
|
519
|
+
v4ScheduledMulticurveInitializer: "0xF84378C9F39e0FF267f3101c88773359c5393876",
|
|
673
520
|
// From Doppler scheduled multicurve deployments (Base Sepolia)
|
|
674
|
-
v4DecayMulticurveInitializer:
|
|
521
|
+
v4DecayMulticurveInitializer: "0xD59cE43E53D69F190E15d9822Fb4540dCcc91178",
|
|
675
522
|
// From Doppler decay multicurve deployments (Base Sepolia)
|
|
676
523
|
// Opening Auction contracts (deployed Feb 2025)
|
|
677
524
|
openingAuctionInitializer: "0x3dCd35945Dc86a9FaA80846B06CB4676961d0AEa",
|
|
@@ -686,18 +533,18 @@ var ADDRESSES = {
|
|
|
686
533
|
dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerLensQuoter,
|
|
687
534
|
dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerDeployer,
|
|
688
535
|
poolManager: "0x05E73354cFDd6745C338b50BcFDfA3Aa6fA03408",
|
|
689
|
-
v2Migrator:
|
|
536
|
+
v2Migrator: "0x04a898f3722c38F9Def707bD17DC78920EFA977C",
|
|
690
537
|
v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].UniswapV2MigratorSplit,
|
|
691
|
-
v4Migrator:
|
|
692
|
-
v4MigratorSplit:
|
|
538
|
+
v4Migrator: "0xEEe0eCCb54398ce371CAACBCEf076d3Ed597DDb3",
|
|
539
|
+
v4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
|
|
693
540
|
dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerHookMigrator,
|
|
694
541
|
rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].RehypeDopplerHookMigrator,
|
|
695
|
-
v4MigratorHook:
|
|
542
|
+
v4MigratorHook: "0x127cAAAd598Ffa97577940b0a5c3b6150019E500",
|
|
696
543
|
noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpMigrator,
|
|
697
544
|
governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].GovernanceFactory,
|
|
698
545
|
noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpGovernanceFactory,
|
|
699
546
|
launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].LaunchpadGovernanceFactory,
|
|
700
|
-
streamableFeesLocker:
|
|
547
|
+
streamableFeesLocker: "0x3345E557c5C0b474bE1eb4693264008B8562Aa9c",
|
|
701
548
|
streamableFeesLockerV2: getGeneratedAddress(
|
|
702
549
|
CHAIN_IDS.BASE_SEPOLIA,
|
|
703
550
|
"StreamableFeesLockerV2"
|
|
@@ -713,8 +560,8 @@ var ADDRESSES = {
|
|
|
713
560
|
uniswapV4Quoter: "0x4A6513c898fe1B2d0E78d3b0e0A4a151589B1cBa"
|
|
714
561
|
},
|
|
715
562
|
[CHAIN_IDS.INK]: {
|
|
716
|
-
airlock:
|
|
717
|
-
tokenFactory:
|
|
563
|
+
airlock: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12",
|
|
564
|
+
tokenFactory: "0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45",
|
|
718
565
|
derc20V2Factory: getGeneratedAddress(
|
|
719
566
|
CHAIN_IDS.INK,
|
|
720
567
|
"CloneDERC20VotesV2Factory"
|
|
@@ -723,15 +570,15 @@ var ADDRESSES = {
|
|
|
723
570
|
CHAIN_IDS.INK,
|
|
724
571
|
"CloneDERC20VotesV2"
|
|
725
572
|
),
|
|
726
|
-
v3Initializer:
|
|
573
|
+
v3Initializer: "0xaA47D2977d622DBdFD33eeF6a8276727c52EB4e5",
|
|
727
574
|
v3Quoter: "0x96b572D2d880cf2Fa2563651BD23ADE6f5516652",
|
|
728
575
|
v4Initializer: "0xC99b485499f78995C6F1640dbB1413c57f8BA684",
|
|
729
576
|
dopplerLens: "0x3972c00f7ed4885e145823eb7c655375d275a1c5",
|
|
730
|
-
dopplerDeployer:
|
|
577
|
+
dopplerDeployer: "0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B",
|
|
731
578
|
poolManager: "0x360e68faccca8ca495c1b759fd9eee466db9fb32",
|
|
732
|
-
v2Migrator:
|
|
579
|
+
v2Migrator: "0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731",
|
|
733
580
|
v4Migrator: ZERO_ADDRESS,
|
|
734
|
-
governanceFactory:
|
|
581
|
+
governanceFactory: "0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9",
|
|
735
582
|
noOpGovernanceFactory: ZERO_ADDRESS,
|
|
736
583
|
// Not yet deployed
|
|
737
584
|
streamableFeesLocker: ZERO_ADDRESS,
|
|
@@ -739,7 +586,6 @@ var ADDRESSES = {
|
|
|
739
586
|
universalRouter: "0x112908dac86e20e7241b0927479ea3bf935d1fa0",
|
|
740
587
|
univ2Router02: "0xB3FB126ACDd5AdCA2f50Ac644a7a2303745f18b4",
|
|
741
588
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
742
|
-
bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.INK].Bundler,
|
|
743
589
|
weth: "0x4200000000000000000000000000000000000006",
|
|
744
590
|
uniswapV4Quoter: "0x3972c00f7ed4885e145823eb7c655375d275a1c5"
|
|
745
591
|
},
|
|
@@ -793,8 +639,8 @@ var ADDRESSES = {
|
|
|
793
639
|
uniswapV4Quoter: "0x8dc178efb8111bb0973dd9d722ebeff267c98f94"
|
|
794
640
|
},
|
|
795
641
|
[CHAIN_IDS.UNICHAIN]: {
|
|
796
|
-
airlock:
|
|
797
|
-
tokenFactory:
|
|
642
|
+
airlock: "0x77EbfBAE15AD200758E9E2E61597c0B07d731254",
|
|
643
|
+
tokenFactory: "0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3",
|
|
798
644
|
derc20V2Factory: getGeneratedAddress(
|
|
799
645
|
CHAIN_IDS.UNICHAIN,
|
|
800
646
|
"CloneDERC20VotesV2Factory"
|
|
@@ -803,30 +649,29 @@ var ADDRESSES = {
|
|
|
803
649
|
CHAIN_IDS.UNICHAIN,
|
|
804
650
|
"CloneDERC20VotesV2"
|
|
805
651
|
),
|
|
806
|
-
v3Initializer:
|
|
652
|
+
v3Initializer: "0x9F4e56be80f08ba1A2445645EFa6d231E27b43ec",
|
|
807
653
|
v3Quoter: "0x385A5cf5F83e99f7BB2852b6A19C3538b9FA7658",
|
|
808
654
|
v4Initializer: "0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB",
|
|
809
655
|
dopplerLens: "0x333e3c607b141b18ff6de9f258db6e77fe7491e0",
|
|
810
656
|
dopplerDeployer: "0x06FEFD02F0b6d9f57F52cfacFc113665Dfa20F0f",
|
|
811
657
|
poolManager: "0x1f98400000000000000000000000000000000004",
|
|
812
|
-
v2Migrator:
|
|
813
|
-
v4Migrator:
|
|
814
|
-
noOpMigrator:
|
|
815
|
-
governanceFactory:
|
|
816
|
-
noOpGovernanceFactory:
|
|
658
|
+
v2Migrator: "0xf6023127f6E937091D5B605680056A6D27524bad",
|
|
659
|
+
v4Migrator: "0x49F3fBB2dFF7f3d03B622e3b2a6d3F2E6fdB2a5A",
|
|
660
|
+
noOpMigrator: "0x917da361072ce968acD810BbfC9B64079426ebf0",
|
|
661
|
+
governanceFactory: "0x99C94B9Df930E1E21a4E4a2c105dBff21bF5c5aE",
|
|
662
|
+
noOpGovernanceFactory: "0x3AD727ee0FBBb8Ee0920933FdB96F23fD56f1299",
|
|
817
663
|
streamableFeesLocker: ZERO_ADDRESS,
|
|
818
664
|
// Not yet deployed
|
|
819
665
|
universalRouter: "0xef740bf23acae26f6492b10de645d6b98dc8eaf3",
|
|
820
666
|
univ2Router02: "0x284f11109359a7e1306c3e447ef14d38400063ff",
|
|
821
667
|
uniswapV2Factory: "0x1f98400000000000000000000000000000000002",
|
|
822
668
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
823
|
-
bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.UNICHAIN].Bundler,
|
|
824
669
|
weth: "0x4200000000000000000000000000000000000006",
|
|
825
670
|
uniswapV4Quoter: "0x333e3c607b141b18ff6de9f258db6e77fe7491e0"
|
|
826
671
|
},
|
|
827
672
|
[CHAIN_IDS.UNICHAIN_SEPOLIA]: {
|
|
828
673
|
airlock: "0x651ab94B4777e2e4cdf96082d90C65bd947b73A4",
|
|
829
|
-
tokenFactory:
|
|
674
|
+
tokenFactory: "0x82Ac010C67f70BACf7655cd8948a4AD92A173CAC",
|
|
830
675
|
derc20V2Factory: getGeneratedAddress(
|
|
831
676
|
CHAIN_IDS.UNICHAIN_SEPOLIA,
|
|
832
677
|
"CloneDERC20VotesV2Factory"
|
|
@@ -841,23 +686,22 @@ var ADDRESSES = {
|
|
|
841
686
|
dopplerLens: "0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472",
|
|
842
687
|
dopplerDeployer: "0x2f2bacd46d3f5c9ee052ab392b73711db89129db",
|
|
843
688
|
poolManager: "0x00B036B58a818B1BC34d502D3fE730Db729e62AC",
|
|
844
|
-
v2Migrator:
|
|
845
|
-
v4Migrator:
|
|
846
|
-
noOpMigrator:
|
|
689
|
+
v2Migrator: "0x620e3fec244e913d73f2163623b62d02DB69638B",
|
|
690
|
+
v4Migrator: "0xb6D69eAA98E657bEEFF7ca4452768e6f707aa6b1",
|
|
691
|
+
noOpMigrator: "0x193F48A45B6025dDeD10bc4BaeEF65c833696387",
|
|
847
692
|
governanceFactory: "0x1E4332EEfAE9e4967C2D186f7b2d439D778e81cC",
|
|
848
|
-
noOpGovernanceFactory:
|
|
693
|
+
noOpGovernanceFactory: "0x7E5D336A6E9e453c9f02E5102CC039E015Fd8fb8",
|
|
849
694
|
streamableFeesLocker: ZERO_ADDRESS,
|
|
850
695
|
// Not yet deployed
|
|
851
696
|
universalRouter: "0xf70536B3bcC1bD1a972dc186A2cf84cC6da6Be5D",
|
|
852
697
|
univ2Router02: "0x284f11109359a7e1306c3e447ef14d38400063ff",
|
|
853
698
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
854
|
-
bundler: "0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90",
|
|
855
699
|
weth: "0x4200000000000000000000000000000000000006",
|
|
856
700
|
uniswapV4Quoter: "0x56dcd40a3f2d466f48e7f48bdbe5cc9b92ae4472"
|
|
857
701
|
},
|
|
858
702
|
[CHAIN_IDS.MONAD_TESTNET]: {
|
|
859
|
-
airlock:
|
|
860
|
-
tokenFactory:
|
|
703
|
+
airlock: "0xDe3599a2eC440B296373a983C85C365DA55d9dFA",
|
|
704
|
+
tokenFactory: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
861
705
|
derc20V2Factory: getGeneratedAddress(
|
|
862
706
|
CHAIN_IDS.MONAD_TESTNET,
|
|
863
707
|
"CloneDERC20VotesV2Factory"
|
|
@@ -866,38 +710,31 @@ var ADDRESSES = {
|
|
|
866
710
|
CHAIN_IDS.MONAD_TESTNET,
|
|
867
711
|
"CloneDERC20VotesV2"
|
|
868
712
|
),
|
|
869
|
-
v3Initializer:
|
|
713
|
+
v3Initializer: "0x9F4e56be80f08ba1A2445645EFa6d231E27b43ec",
|
|
870
714
|
v3Quoter: ZERO_ADDRESS,
|
|
871
|
-
v4Initializer:
|
|
872
|
-
dopplerLens:
|
|
873
|
-
dopplerDeployer:
|
|
715
|
+
v4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad",
|
|
716
|
+
dopplerLens: "0x2F2BAcd46d3F5c9EE052Ab392b73711dB89129DB",
|
|
717
|
+
dopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
|
|
874
718
|
poolManager: "0xe93882f395B0b24180855c68Ab19B2d78573ceBc",
|
|
875
|
-
v2Migrator:
|
|
719
|
+
v2Migrator: "0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3",
|
|
876
720
|
v4Migrator: "0xBEd386a1Fc62B6598c9b8d2BF634471B6Fe75EB7",
|
|
877
|
-
noOpMigrator:
|
|
878
|
-
governanceFactory:
|
|
879
|
-
noOpGovernanceFactory:
|
|
721
|
+
noOpMigrator: "0x5CadB034267751a364dDD4d321C99E07A307f915",
|
|
722
|
+
governanceFactory: "0x014E1c0bd34f3B10546E554CB33B3293fECDD056",
|
|
723
|
+
noOpGovernanceFactory: "0x094D926A969B3024ca46D2186BF13FD5CDBA9CE2",
|
|
880
724
|
streamableFeesLocker: "0x91231cDdD8d6C86Df602070a3081478e074b97b7",
|
|
881
725
|
// Not yet deployed
|
|
882
726
|
universalRouter: ZERO_ADDRESS,
|
|
883
727
|
univ2Router02: ZERO_ADDRESS,
|
|
884
728
|
permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
|
|
885
|
-
bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_TESTNET].Bundler,
|
|
886
729
|
weth: ZERO_ADDRESS,
|
|
887
730
|
// TODO: Get Monad Testnet weth
|
|
888
731
|
uniswapV4Quoter: ZERO_ADDRESS
|
|
889
732
|
},
|
|
890
733
|
[CHAIN_IDS.MONAD_MAINNET]: {
|
|
891
734
|
airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Airlock,
|
|
892
|
-
tokenFactory:
|
|
893
|
-
derc20V2Factory:
|
|
894
|
-
|
|
895
|
-
"CloneDERC20VotesV2Factory"
|
|
896
|
-
),
|
|
897
|
-
derc20V2Implementation: getGeneratedAddress(
|
|
898
|
-
CHAIN_IDS.MONAD_MAINNET,
|
|
899
|
-
"CloneDERC20VotesV2"
|
|
900
|
-
),
|
|
735
|
+
tokenFactory: "0xf0B5141dD9096254B2ca624dff26024f46087229",
|
|
736
|
+
derc20V2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
|
|
737
|
+
derc20V2Implementation: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
|
|
901
738
|
dopplerERC20V1Factory: getGeneratedAddress(
|
|
902
739
|
CHAIN_IDS.MONAD_MAINNET,
|
|
903
740
|
"DopplerERC20V1Factory"
|
|
@@ -913,17 +750,17 @@ var ADDRESSES = {
|
|
|
913
750
|
dopplerLens: ZERO_ADDRESS,
|
|
914
751
|
dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].DopplerDeployer,
|
|
915
752
|
poolManager: "0x188d586ddcf52439676ca21a244753fa19f9ea8e",
|
|
916
|
-
v2Migrator:
|
|
753
|
+
v2Migrator: "0x136191B46478cAB023cbC01a36160C4Aad81677a",
|
|
917
754
|
v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].UniswapV2MigratorSplit,
|
|
918
|
-
v4Migrator:
|
|
919
|
-
v4MigratorSplit:
|
|
920
|
-
v4MigratorHook:
|
|
755
|
+
v4Migrator: "0x44bf742e57cd8cF23ABbc8dab2c44e2a3228356E",
|
|
756
|
+
v4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
|
|
757
|
+
v4MigratorHook: "0x3E4c689BBf33b37106eBC13Db8aa5BF13a25e500",
|
|
921
758
|
noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpMigrator,
|
|
922
759
|
governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].GovernanceFactory,
|
|
923
760
|
noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpGovernanceFactory,
|
|
924
761
|
launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].LaunchpadGovernanceFactory,
|
|
925
762
|
topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].TopUpDistributor,
|
|
926
|
-
v4ScheduledMulticurveInitializer:
|
|
763
|
+
v4ScheduledMulticurveInitializer: "0xCe3099B2F07029b086E5e92a1573C5f5A3071783",
|
|
927
764
|
dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].DopplerHookInitializer,
|
|
928
765
|
rehypeDopplerHookInitializer: getRehypeDopplerHookInitializerAddress(
|
|
929
766
|
CHAIN_IDS.MONAD_MAINNET
|
|
@@ -931,7 +768,7 @@ var ADDRESSES = {
|
|
|
931
768
|
rehypeDopplerHook: getRehypeDopplerHookInitializerAddress(
|
|
932
769
|
CHAIN_IDS.MONAD_MAINNET
|
|
933
770
|
),
|
|
934
|
-
streamableFeesLocker:
|
|
771
|
+
streamableFeesLocker: "0x63f8C8F9beFaab2FaCD7Ece0b0242f78B920Ee90",
|
|
935
772
|
streamableFeesLockerV2: getGeneratedAddress(
|
|
936
773
|
CHAIN_IDS.MONAD_MAINNET,
|
|
937
774
|
"StreamableFeesLockerV2"
|
|
@@ -5769,7 +5606,102 @@ var dopplerLensAbi = [
|
|
|
5769
5606
|
stateMutability: "nonpayable"
|
|
5770
5607
|
}
|
|
5771
5608
|
];
|
|
5609
|
+
var bundlerCreateParamsComponents = [
|
|
5610
|
+
{ name: "initialSupply", type: "uint256", internalType: "uint256" },
|
|
5611
|
+
{ name: "numTokensToSell", type: "uint256", internalType: "uint256" },
|
|
5612
|
+
{ name: "numeraire", type: "address", internalType: "address" },
|
|
5613
|
+
{
|
|
5614
|
+
name: "tokenFactory",
|
|
5615
|
+
type: "address",
|
|
5616
|
+
internalType: "contract ITokenFactory"
|
|
5617
|
+
},
|
|
5618
|
+
{ name: "tokenFactoryData", type: "bytes", internalType: "bytes" },
|
|
5619
|
+
{
|
|
5620
|
+
name: "governanceFactory",
|
|
5621
|
+
type: "address",
|
|
5622
|
+
internalType: "contract IGovernanceFactory"
|
|
5623
|
+
},
|
|
5624
|
+
{
|
|
5625
|
+
name: "governanceFactoryData",
|
|
5626
|
+
type: "bytes",
|
|
5627
|
+
internalType: "bytes"
|
|
5628
|
+
},
|
|
5629
|
+
{
|
|
5630
|
+
name: "poolInitializer",
|
|
5631
|
+
type: "address",
|
|
5632
|
+
internalType: "contract IPoolInitializer"
|
|
5633
|
+
},
|
|
5634
|
+
{ name: "poolInitializerData", type: "bytes", internalType: "bytes" },
|
|
5635
|
+
{
|
|
5636
|
+
name: "liquidityMigrator",
|
|
5637
|
+
type: "address",
|
|
5638
|
+
internalType: "contract ILiquidityMigrator"
|
|
5639
|
+
},
|
|
5640
|
+
{
|
|
5641
|
+
name: "liquidityMigratorData",
|
|
5642
|
+
type: "bytes",
|
|
5643
|
+
internalType: "bytes"
|
|
5644
|
+
},
|
|
5645
|
+
{ name: "integrator", type: "address", internalType: "address" },
|
|
5646
|
+
{ name: "salt", type: "bytes32", internalType: "bytes32" }
|
|
5647
|
+
];
|
|
5648
|
+
var bundlerPoolKeyComponents = [
|
|
5649
|
+
{ name: "currency0", type: "address", internalType: "Currency" },
|
|
5650
|
+
{ name: "currency1", type: "address", internalType: "Currency" },
|
|
5651
|
+
{ name: "fee", type: "uint24", internalType: "uint24" },
|
|
5652
|
+
{ name: "tickSpacing", type: "int24", internalType: "int24" },
|
|
5653
|
+
{ name: "hooks", type: "address", internalType: "contract IHooks" }
|
|
5654
|
+
];
|
|
5772
5655
|
var bundlerAbi = [
|
|
5656
|
+
{
|
|
5657
|
+
type: "function",
|
|
5658
|
+
name: "airlock",
|
|
5659
|
+
inputs: [],
|
|
5660
|
+
outputs: [{ name: "", type: "address", internalType: "contract Airlock" }],
|
|
5661
|
+
stateMutability: "view"
|
|
5662
|
+
},
|
|
5663
|
+
{
|
|
5664
|
+
type: "function",
|
|
5665
|
+
name: "poolManager",
|
|
5666
|
+
inputs: [],
|
|
5667
|
+
outputs: [
|
|
5668
|
+
{
|
|
5669
|
+
name: "",
|
|
5670
|
+
type: "address",
|
|
5671
|
+
internalType: "contract IPoolManager"
|
|
5672
|
+
}
|
|
5673
|
+
],
|
|
5674
|
+
stateMutability: "view"
|
|
5675
|
+
},
|
|
5676
|
+
{
|
|
5677
|
+
type: "function",
|
|
5678
|
+
name: "vestingOf",
|
|
5679
|
+
inputs: [{ name: "asset", type: "address", internalType: "address" }],
|
|
5680
|
+
outputs: [
|
|
5681
|
+
{ name: "recipient", type: "address", internalType: "address" },
|
|
5682
|
+
{ name: "permissionlessClaim", type: "bool", internalType: "bool" },
|
|
5683
|
+
{ name: "start", type: "uint64", internalType: "uint64" },
|
|
5684
|
+
{ name: "cliffDuration", type: "uint64", internalType: "uint64" },
|
|
5685
|
+
{ name: "vestingDuration", type: "uint64", internalType: "uint64" },
|
|
5686
|
+
{ name: "totalAmount", type: "uint128", internalType: "uint128" },
|
|
5687
|
+
{ name: "claimedAmount", type: "uint128", internalType: "uint128" }
|
|
5688
|
+
],
|
|
5689
|
+
stateMutability: "view"
|
|
5690
|
+
},
|
|
5691
|
+
{
|
|
5692
|
+
type: "function",
|
|
5693
|
+
name: "claimable",
|
|
5694
|
+
inputs: [{ name: "asset", type: "address", internalType: "address" }],
|
|
5695
|
+
outputs: [{ name: "amount", type: "uint256", internalType: "uint256" }],
|
|
5696
|
+
stateMutability: "view"
|
|
5697
|
+
},
|
|
5698
|
+
{
|
|
5699
|
+
type: "function",
|
|
5700
|
+
name: "claim",
|
|
5701
|
+
inputs: [{ name: "asset", type: "address", internalType: "address" }],
|
|
5702
|
+
outputs: [{ name: "amount", type: "uint256", internalType: "uint256" }],
|
|
5703
|
+
stateMutability: "nonpayable"
|
|
5704
|
+
},
|
|
5773
5705
|
{
|
|
5774
5706
|
type: "function",
|
|
5775
5707
|
name: "bundle",
|
|
@@ -5778,331 +5710,246 @@ var bundlerAbi = [
|
|
|
5778
5710
|
name: "createData",
|
|
5779
5711
|
type: "tuple",
|
|
5780
5712
|
internalType: "struct CreateParams",
|
|
5713
|
+
components: bundlerCreateParamsComponents
|
|
5714
|
+
},
|
|
5715
|
+
{
|
|
5716
|
+
name: "vestingData",
|
|
5717
|
+
type: "tuple",
|
|
5718
|
+
internalType: "struct Bundler.VestingParams",
|
|
5781
5719
|
components: [
|
|
5782
|
-
{ name: "initialSupply", type: "uint256", internalType: "uint256" },
|
|
5783
|
-
{ name: "numTokensToSell", type: "uint256", internalType: "uint256" },
|
|
5784
|
-
{ name: "numeraire", type: "address", internalType: "address" },
|
|
5785
|
-
{
|
|
5786
|
-
name: "tokenFactory",
|
|
5787
|
-
type: "address",
|
|
5788
|
-
internalType: "contract ITokenFactory"
|
|
5789
|
-
},
|
|
5790
|
-
{ name: "tokenFactoryData", type: "bytes", internalType: "bytes" },
|
|
5791
|
-
{
|
|
5792
|
-
name: "governanceFactory",
|
|
5793
|
-
type: "address",
|
|
5794
|
-
internalType: "contract IGovernanceFactory"
|
|
5795
|
-
},
|
|
5796
|
-
{
|
|
5797
|
-
name: "governanceFactoryData",
|
|
5798
|
-
type: "bytes",
|
|
5799
|
-
internalType: "bytes"
|
|
5800
|
-
},
|
|
5801
5720
|
{
|
|
5802
|
-
name: "
|
|
5803
|
-
type: "
|
|
5804
|
-
internalType: "
|
|
5721
|
+
name: "permissionlessClaim",
|
|
5722
|
+
type: "bool",
|
|
5723
|
+
internalType: "bool"
|
|
5805
5724
|
},
|
|
5806
|
-
{ name: "poolInitializerData", type: "bytes", internalType: "bytes" },
|
|
5807
5725
|
{
|
|
5808
|
-
name: "
|
|
5809
|
-
type: "
|
|
5810
|
-
internalType: "
|
|
5726
|
+
name: "vestingDuration",
|
|
5727
|
+
type: "uint64",
|
|
5728
|
+
internalType: "uint64"
|
|
5811
5729
|
},
|
|
5812
5730
|
{
|
|
5813
|
-
name: "
|
|
5814
|
-
type: "
|
|
5815
|
-
internalType: "
|
|
5816
|
-
}
|
|
5817
|
-
{ name: "integrator", type: "address", internalType: "address" },
|
|
5818
|
-
{ name: "salt", type: "bytes32", internalType: "bytes32" }
|
|
5731
|
+
name: "cliffDuration",
|
|
5732
|
+
type: "uint64",
|
|
5733
|
+
internalType: "uint64"
|
|
5734
|
+
}
|
|
5819
5735
|
]
|
|
5820
5736
|
},
|
|
5821
|
-
{ name: "
|
|
5822
|
-
{ name: "
|
|
5737
|
+
{ name: "exactAmountIn", type: "uint128", internalType: "uint128" },
|
|
5738
|
+
{ name: "recipient", type: "address", internalType: "address" }
|
|
5739
|
+
],
|
|
5740
|
+
outputs: [
|
|
5741
|
+
{ name: "asset", type: "address", internalType: "address" },
|
|
5742
|
+
{
|
|
5743
|
+
name: "poolKey",
|
|
5744
|
+
type: "tuple",
|
|
5745
|
+
internalType: "struct PoolKey",
|
|
5746
|
+
components: bundlerPoolKeyComponents
|
|
5747
|
+
},
|
|
5748
|
+
{ name: "governance", type: "address", internalType: "address" },
|
|
5749
|
+
{ name: "timelock", type: "address", internalType: "address" },
|
|
5750
|
+
{ name: "amountOut", type: "uint128", internalType: "uint128" }
|
|
5823
5751
|
],
|
|
5824
|
-
outputs: [],
|
|
5825
5752
|
stateMutability: "payable"
|
|
5826
5753
|
},
|
|
5827
5754
|
{
|
|
5828
5755
|
type: "function",
|
|
5829
|
-
name: "
|
|
5756
|
+
name: "simulateBundle",
|
|
5830
5757
|
inputs: [
|
|
5831
5758
|
{
|
|
5832
5759
|
name: "createData",
|
|
5833
5760
|
type: "tuple",
|
|
5834
5761
|
internalType: "struct CreateParams",
|
|
5835
|
-
components:
|
|
5836
|
-
{ name: "initialSupply", type: "uint256", internalType: "uint256" },
|
|
5837
|
-
{ name: "numTokensToSell", type: "uint256", internalType: "uint256" },
|
|
5838
|
-
{ name: "numeraire", type: "address", internalType: "address" },
|
|
5839
|
-
{
|
|
5840
|
-
name: "tokenFactory",
|
|
5841
|
-
type: "address",
|
|
5842
|
-
internalType: "contract ITokenFactory"
|
|
5843
|
-
},
|
|
5844
|
-
{ name: "tokenFactoryData", type: "bytes", internalType: "bytes" },
|
|
5845
|
-
{
|
|
5846
|
-
name: "governanceFactory",
|
|
5847
|
-
type: "address",
|
|
5848
|
-
internalType: "contract IGovernanceFactory"
|
|
5849
|
-
},
|
|
5850
|
-
{
|
|
5851
|
-
name: "governanceFactoryData",
|
|
5852
|
-
type: "bytes",
|
|
5853
|
-
internalType: "bytes"
|
|
5854
|
-
},
|
|
5855
|
-
{
|
|
5856
|
-
name: "poolInitializer",
|
|
5857
|
-
type: "address",
|
|
5858
|
-
internalType: "contract IPoolInitializer"
|
|
5859
|
-
},
|
|
5860
|
-
{ name: "poolInitializerData", type: "bytes", internalType: "bytes" },
|
|
5861
|
-
{
|
|
5862
|
-
name: "liquidityMigrator",
|
|
5863
|
-
type: "address",
|
|
5864
|
-
internalType: "contract ILiquidityMigrator"
|
|
5865
|
-
},
|
|
5866
|
-
{
|
|
5867
|
-
name: "liquidityMigratorData",
|
|
5868
|
-
type: "bytes",
|
|
5869
|
-
internalType: "bytes"
|
|
5870
|
-
},
|
|
5871
|
-
{ name: "integrator", type: "address", internalType: "address" },
|
|
5872
|
-
{ name: "salt", type: "bytes32", internalType: "bytes32" }
|
|
5873
|
-
]
|
|
5762
|
+
components: bundlerCreateParamsComponents
|
|
5874
5763
|
},
|
|
5764
|
+
{ name: "exactAmountIn", type: "uint128", internalType: "uint128" }
|
|
5765
|
+
],
|
|
5766
|
+
outputs: [
|
|
5767
|
+
{ name: "asset", type: "address", internalType: "address" },
|
|
5875
5768
|
{
|
|
5876
|
-
name: "
|
|
5769
|
+
name: "poolKey",
|
|
5877
5770
|
type: "tuple",
|
|
5878
|
-
internalType: "struct
|
|
5879
|
-
components:
|
|
5880
|
-
|
|
5881
|
-
|
|
5882
|
-
|
|
5883
|
-
|
|
5884
|
-
{
|
|
5885
|
-
name: "sqrtPriceLimitX96",
|
|
5886
|
-
type: "uint160",
|
|
5887
|
-
internalType: "uint160"
|
|
5888
|
-
}
|
|
5889
|
-
]
|
|
5890
|
-
}
|
|
5771
|
+
internalType: "struct PoolKey",
|
|
5772
|
+
components: bundlerPoolKeyComponents
|
|
5773
|
+
},
|
|
5774
|
+
{ name: "governance", type: "address", internalType: "address" },
|
|
5775
|
+
{ name: "timelock", type: "address", internalType: "address" },
|
|
5776
|
+
{ name: "amountOut", type: "uint128", internalType: "uint128" }
|
|
5891
5777
|
],
|
|
5892
|
-
outputs: [{ name: "amountOut", type: "uint256", internalType: "uint256" }],
|
|
5893
5778
|
stateMutability: "nonpayable"
|
|
5894
5779
|
},
|
|
5895
5780
|
{
|
|
5896
5781
|
type: "function",
|
|
5897
|
-
name: "
|
|
5782
|
+
name: "_simulateBundle",
|
|
5898
5783
|
inputs: [
|
|
5899
5784
|
{
|
|
5900
5785
|
name: "createData",
|
|
5901
5786
|
type: "tuple",
|
|
5902
5787
|
internalType: "struct CreateParams",
|
|
5903
|
-
components:
|
|
5904
|
-
{ name: "initialSupply", type: "uint256", internalType: "uint256" },
|
|
5905
|
-
{ name: "numTokensToSell", type: "uint256", internalType: "uint256" },
|
|
5906
|
-
{ name: "numeraire", type: "address", internalType: "address" },
|
|
5907
|
-
{
|
|
5908
|
-
name: "tokenFactory",
|
|
5909
|
-
type: "address",
|
|
5910
|
-
internalType: "contract ITokenFactory"
|
|
5911
|
-
},
|
|
5912
|
-
{ name: "tokenFactoryData", type: "bytes", internalType: "bytes" },
|
|
5913
|
-
{
|
|
5914
|
-
name: "governanceFactory",
|
|
5915
|
-
type: "address",
|
|
5916
|
-
internalType: "contract IGovernanceFactory"
|
|
5917
|
-
},
|
|
5918
|
-
{
|
|
5919
|
-
name: "governanceFactoryData",
|
|
5920
|
-
type: "bytes",
|
|
5921
|
-
internalType: "bytes"
|
|
5922
|
-
},
|
|
5923
|
-
{
|
|
5924
|
-
name: "poolInitializer",
|
|
5925
|
-
type: "address",
|
|
5926
|
-
internalType: "contract IPoolInitializer"
|
|
5927
|
-
},
|
|
5928
|
-
{ name: "poolInitializerData", type: "bytes", internalType: "bytes" },
|
|
5929
|
-
{
|
|
5930
|
-
name: "liquidityMigrator",
|
|
5931
|
-
type: "address",
|
|
5932
|
-
internalType: "contract ILiquidityMigrator"
|
|
5933
|
-
},
|
|
5934
|
-
{
|
|
5935
|
-
name: "liquidityMigratorData",
|
|
5936
|
-
type: "bytes",
|
|
5937
|
-
internalType: "bytes"
|
|
5938
|
-
},
|
|
5939
|
-
{ name: "integrator", type: "address", internalType: "address" },
|
|
5940
|
-
{ name: "salt", type: "bytes32", internalType: "bytes32" }
|
|
5941
|
-
]
|
|
5788
|
+
components: bundlerCreateParamsComponents
|
|
5942
5789
|
},
|
|
5943
|
-
{
|
|
5944
|
-
name: "params",
|
|
5945
|
-
type: "tuple",
|
|
5946
|
-
internalType: "struct IQuoterV2.QuoteExactOutputSingleParams",
|
|
5947
|
-
components: [
|
|
5948
|
-
{ name: "tokenIn", type: "address", internalType: "address" },
|
|
5949
|
-
{ name: "tokenOut", type: "address", internalType: "address" },
|
|
5950
|
-
{ name: "amount", type: "uint256", internalType: "uint256" },
|
|
5951
|
-
{ name: "fee", type: "uint24", internalType: "uint24" },
|
|
5952
|
-
{
|
|
5953
|
-
name: "sqrtPriceLimitX96",
|
|
5954
|
-
type: "uint160",
|
|
5955
|
-
internalType: "uint160"
|
|
5956
|
-
}
|
|
5957
|
-
]
|
|
5958
|
-
}
|
|
5790
|
+
{ name: "exactAmountIn", type: "uint128", internalType: "uint128" }
|
|
5959
5791
|
],
|
|
5960
|
-
outputs: [
|
|
5792
|
+
outputs: [],
|
|
5961
5793
|
stateMutability: "nonpayable"
|
|
5962
5794
|
},
|
|
5963
5795
|
{
|
|
5964
5796
|
type: "function",
|
|
5965
|
-
name: "
|
|
5797
|
+
name: "unlockCallback",
|
|
5798
|
+
inputs: [{ name: "data", type: "bytes", internalType: "bytes" }],
|
|
5799
|
+
outputs: [{ name: "", type: "bytes", internalType: "bytes" }],
|
|
5800
|
+
stateMutability: "nonpayable"
|
|
5801
|
+
},
|
|
5802
|
+
{
|
|
5803
|
+
type: "event",
|
|
5804
|
+
name: "Bundled",
|
|
5966
5805
|
inputs: [
|
|
5967
5806
|
{
|
|
5968
|
-
name: "
|
|
5969
|
-
type: "
|
|
5970
|
-
|
|
5971
|
-
|
|
5972
|
-
|
|
5973
|
-
|
|
5974
|
-
|
|
5975
|
-
|
|
5976
|
-
|
|
5977
|
-
|
|
5978
|
-
|
|
5979
|
-
|
|
5980
|
-
|
|
5981
|
-
|
|
5982
|
-
|
|
5983
|
-
|
|
5984
|
-
internalType: "contract IGovernanceFactory"
|
|
5985
|
-
},
|
|
5986
|
-
{
|
|
5987
|
-
name: "governanceFactoryData",
|
|
5988
|
-
type: "bytes",
|
|
5989
|
-
internalType: "bytes"
|
|
5990
|
-
},
|
|
5991
|
-
{
|
|
5992
|
-
name: "poolInitializer",
|
|
5993
|
-
type: "address",
|
|
5994
|
-
internalType: "contract IPoolInitializer"
|
|
5995
|
-
},
|
|
5996
|
-
{ name: "poolInitializerData", type: "bytes", internalType: "bytes" },
|
|
5997
|
-
{
|
|
5998
|
-
name: "liquidityMigrator",
|
|
5999
|
-
type: "address",
|
|
6000
|
-
internalType: "contract ILiquidityMigrator"
|
|
6001
|
-
},
|
|
6002
|
-
{
|
|
6003
|
-
name: "liquidityMigratorData",
|
|
6004
|
-
type: "bytes",
|
|
6005
|
-
internalType: "bytes"
|
|
6006
|
-
},
|
|
6007
|
-
{ name: "integrator", type: "address", internalType: "address" },
|
|
6008
|
-
{ name: "salt", type: "bytes32", internalType: "bytes32" }
|
|
6009
|
-
]
|
|
5807
|
+
name: "recipient",
|
|
5808
|
+
type: "address",
|
|
5809
|
+
indexed: true,
|
|
5810
|
+
internalType: "address"
|
|
5811
|
+
},
|
|
5812
|
+
{
|
|
5813
|
+
name: "amountIn",
|
|
5814
|
+
type: "uint128",
|
|
5815
|
+
indexed: false,
|
|
5816
|
+
internalType: "uint128"
|
|
5817
|
+
},
|
|
5818
|
+
{
|
|
5819
|
+
name: "amountOut",
|
|
5820
|
+
type: "uint128",
|
|
5821
|
+
indexed: false,
|
|
5822
|
+
internalType: "uint128"
|
|
6010
5823
|
},
|
|
6011
|
-
{ name: "exactAmountOut", type: "uint128", internalType: "uint128" },
|
|
6012
|
-
{ name: "hookData", type: "bytes", internalType: "bytes" }
|
|
6013
|
-
],
|
|
6014
|
-
outputs: [
|
|
6015
|
-
{ name: "asset", type: "address", internalType: "address" },
|
|
6016
5824
|
{
|
|
6017
5825
|
name: "poolKey",
|
|
6018
5826
|
type: "tuple",
|
|
5827
|
+
indexed: false,
|
|
6019
5828
|
internalType: "struct PoolKey",
|
|
6020
|
-
components:
|
|
6021
|
-
|
|
6022
|
-
|
|
6023
|
-
|
|
6024
|
-
|
|
6025
|
-
|
|
6026
|
-
|
|
5829
|
+
components: bundlerPoolKeyComponents
|
|
5830
|
+
}
|
|
5831
|
+
],
|
|
5832
|
+
anonymous: false
|
|
5833
|
+
},
|
|
5834
|
+
{
|
|
5835
|
+
type: "event",
|
|
5836
|
+
name: "VestingCreated",
|
|
5837
|
+
inputs: [
|
|
5838
|
+
{
|
|
5839
|
+
name: "asset",
|
|
5840
|
+
type: "address",
|
|
5841
|
+
indexed: true,
|
|
5842
|
+
internalType: "address"
|
|
6027
5843
|
},
|
|
6028
|
-
{
|
|
6029
|
-
|
|
5844
|
+
{
|
|
5845
|
+
name: "recipient",
|
|
5846
|
+
type: "address",
|
|
5847
|
+
indexed: true,
|
|
5848
|
+
internalType: "address"
|
|
5849
|
+
},
|
|
5850
|
+
{
|
|
5851
|
+
name: "permissionlessClaim",
|
|
5852
|
+
type: "bool",
|
|
5853
|
+
indexed: false,
|
|
5854
|
+
internalType: "bool"
|
|
5855
|
+
},
|
|
5856
|
+
{
|
|
5857
|
+
name: "totalAmount",
|
|
5858
|
+
type: "uint128",
|
|
5859
|
+
indexed: false,
|
|
5860
|
+
internalType: "uint128"
|
|
5861
|
+
},
|
|
5862
|
+
{
|
|
5863
|
+
name: "start",
|
|
5864
|
+
type: "uint64",
|
|
5865
|
+
indexed: false,
|
|
5866
|
+
internalType: "uint64"
|
|
5867
|
+
},
|
|
5868
|
+
{
|
|
5869
|
+
name: "cliffDuration",
|
|
5870
|
+
type: "uint64",
|
|
5871
|
+
indexed: false,
|
|
5872
|
+
internalType: "uint64"
|
|
5873
|
+
},
|
|
5874
|
+
{
|
|
5875
|
+
name: "vestingDuration",
|
|
5876
|
+
type: "uint64",
|
|
5877
|
+
indexed: false,
|
|
5878
|
+
internalType: "uint64"
|
|
5879
|
+
}
|
|
6030
5880
|
],
|
|
6031
|
-
|
|
5881
|
+
anonymous: false
|
|
6032
5882
|
},
|
|
6033
5883
|
{
|
|
6034
|
-
type: "
|
|
6035
|
-
name: "
|
|
5884
|
+
type: "event",
|
|
5885
|
+
name: "VestingReleased",
|
|
6036
5886
|
inputs: [
|
|
6037
5887
|
{
|
|
6038
|
-
name: "
|
|
6039
|
-
type: "
|
|
6040
|
-
|
|
6041
|
-
|
|
6042
|
-
{ name: "initialSupply", type: "uint256", internalType: "uint256" },
|
|
6043
|
-
{ name: "numTokensToSell", type: "uint256", internalType: "uint256" },
|
|
6044
|
-
{ name: "numeraire", type: "address", internalType: "address" },
|
|
6045
|
-
{
|
|
6046
|
-
name: "tokenFactory",
|
|
6047
|
-
type: "address",
|
|
6048
|
-
internalType: "contract ITokenFactory"
|
|
6049
|
-
},
|
|
6050
|
-
{ name: "tokenFactoryData", type: "bytes", internalType: "bytes" },
|
|
6051
|
-
{
|
|
6052
|
-
name: "governanceFactory",
|
|
6053
|
-
type: "address",
|
|
6054
|
-
internalType: "contract IGovernanceFactory"
|
|
6055
|
-
},
|
|
6056
|
-
{
|
|
6057
|
-
name: "governanceFactoryData",
|
|
6058
|
-
type: "bytes",
|
|
6059
|
-
internalType: "bytes"
|
|
6060
|
-
},
|
|
6061
|
-
{
|
|
6062
|
-
name: "poolInitializer",
|
|
6063
|
-
type: "address",
|
|
6064
|
-
internalType: "contract IPoolInitializer"
|
|
6065
|
-
},
|
|
6066
|
-
{ name: "poolInitializerData", type: "bytes", internalType: "bytes" },
|
|
6067
|
-
{
|
|
6068
|
-
name: "liquidityMigrator",
|
|
6069
|
-
type: "address",
|
|
6070
|
-
internalType: "contract ILiquidityMigrator"
|
|
6071
|
-
},
|
|
6072
|
-
{
|
|
6073
|
-
name: "liquidityMigratorData",
|
|
6074
|
-
type: "bytes",
|
|
6075
|
-
internalType: "bytes"
|
|
6076
|
-
},
|
|
6077
|
-
{ name: "integrator", type: "address", internalType: "address" },
|
|
6078
|
-
{ name: "salt", type: "bytes32", internalType: "bytes32" }
|
|
6079
|
-
]
|
|
5888
|
+
name: "asset",
|
|
5889
|
+
type: "address",
|
|
5890
|
+
indexed: true,
|
|
5891
|
+
internalType: "address"
|
|
6080
5892
|
},
|
|
6081
|
-
{
|
|
6082
|
-
|
|
5893
|
+
{
|
|
5894
|
+
name: "recipient",
|
|
5895
|
+
type: "address",
|
|
5896
|
+
indexed: true,
|
|
5897
|
+
internalType: "address"
|
|
5898
|
+
},
|
|
5899
|
+
{
|
|
5900
|
+
name: "amount",
|
|
5901
|
+
type: "uint128",
|
|
5902
|
+
indexed: false,
|
|
5903
|
+
internalType: "uint128"
|
|
5904
|
+
}
|
|
6083
5905
|
],
|
|
6084
|
-
|
|
5906
|
+
anonymous: false
|
|
5907
|
+
},
|
|
5908
|
+
{
|
|
5909
|
+
type: "error",
|
|
5910
|
+
name: "BundleQuote",
|
|
5911
|
+
inputs: [
|
|
6085
5912
|
{ name: "asset", type: "address", internalType: "address" },
|
|
6086
5913
|
{
|
|
6087
5914
|
name: "poolKey",
|
|
6088
5915
|
type: "tuple",
|
|
6089
5916
|
internalType: "struct PoolKey",
|
|
6090
|
-
components:
|
|
6091
|
-
{ name: "currency0", type: "address", internalType: "Currency" },
|
|
6092
|
-
{ name: "currency1", type: "address", internalType: "Currency" },
|
|
6093
|
-
{ name: "fee", type: "uint24", internalType: "uint24" },
|
|
6094
|
-
{ name: "tickSpacing", type: "int24", internalType: "int24" },
|
|
6095
|
-
{ name: "hooks", type: "address", internalType: "contract IHooks" }
|
|
6096
|
-
]
|
|
5917
|
+
components: bundlerPoolKeyComponents
|
|
6097
5918
|
},
|
|
6098
|
-
{ name: "
|
|
6099
|
-
{ name: "
|
|
6100
|
-
|
|
6101
|
-
|
|
5919
|
+
{ name: "governance", type: "address", internalType: "address" },
|
|
5920
|
+
{ name: "timelock", type: "address", internalType: "address" },
|
|
5921
|
+
{ name: "amountOut", type: "uint128", internalType: "uint128" }
|
|
5922
|
+
]
|
|
6102
5923
|
},
|
|
6103
|
-
{
|
|
6104
|
-
|
|
6105
|
-
|
|
5924
|
+
{
|
|
5925
|
+
type: "error",
|
|
5926
|
+
name: "ExactInputNotFullySpent",
|
|
5927
|
+
inputs: [
|
|
5928
|
+
{ name: "expected", type: "uint256", internalType: "uint256" },
|
|
5929
|
+
{ name: "actual", type: "uint256", internalType: "uint256" }
|
|
5930
|
+
]
|
|
5931
|
+
},
|
|
5932
|
+
{ type: "error", name: "ExactInputAmountZero", inputs: [] },
|
|
5933
|
+
{ type: "error", name: "InvalidAddress", inputs: [] },
|
|
5934
|
+
{ type: "error", name: "InvalidNativeValue", inputs: [] },
|
|
5935
|
+
{ type: "error", name: "InvalidPool", inputs: [] },
|
|
5936
|
+
{ type: "error", name: "InvalidRecipient", inputs: [] },
|
|
5937
|
+
{ type: "error", name: "InvalidVestingSchedule", inputs: [] },
|
|
5938
|
+
{ type: "error", name: "NoClaimableAmount", inputs: [] },
|
|
5939
|
+
{ type: "error", name: "SenderNotPoolManager", inputs: [] },
|
|
5940
|
+
{ type: "error", name: "SenderNotRecipient", inputs: [] },
|
|
5941
|
+
{ type: "error", name: "SenderNotSelf", inputs: [] },
|
|
5942
|
+
{
|
|
5943
|
+
type: "error",
|
|
5944
|
+
name: "SwapQuote",
|
|
5945
|
+
inputs: [{ name: "amountOut", type: "uint128", internalType: "uint128" }]
|
|
5946
|
+
},
|
|
5947
|
+
{ type: "error", name: "UnexpectedSimulationSuccess", inputs: [] },
|
|
5948
|
+
{
|
|
5949
|
+
type: "error",
|
|
5950
|
+
name: "VestingAlreadyExists",
|
|
5951
|
+
inputs: [{ name: "asset", type: "address", internalType: "address" }]
|
|
5952
|
+
}
|
|
6106
5953
|
];
|
|
6107
5954
|
var poolManagerAbi = [
|
|
6108
5955
|
{
|
|
@@ -6313,6 +6160,13 @@ var rehypeDopplerHookInitializerAbi = [
|
|
|
6313
6160
|
],
|
|
6314
6161
|
stateMutability: "view"
|
|
6315
6162
|
},
|
|
6163
|
+
{
|
|
6164
|
+
type: "function",
|
|
6165
|
+
name: "bundler",
|
|
6166
|
+
inputs: [],
|
|
6167
|
+
outputs: [{ name: "", type: "address", internalType: "address" }],
|
|
6168
|
+
stateMutability: "view"
|
|
6169
|
+
},
|
|
6316
6170
|
{
|
|
6317
6171
|
type: "function",
|
|
6318
6172
|
name: "quoter",
|
|
@@ -6407,32 +6261,77 @@ var rehypeDopplerHookInitializerAbi = [
|
|
|
6407
6261
|
internalType: "uint24"
|
|
6408
6262
|
},
|
|
6409
6263
|
{
|
|
6410
|
-
name: "durationSeconds",
|
|
6411
|
-
type: "uint32",
|
|
6412
|
-
indexed: false,
|
|
6413
|
-
internalType: "uint32"
|
|
6414
|
-
}
|
|
6415
|
-
],
|
|
6416
|
-
anonymous: false
|
|
6417
|
-
},
|
|
6418
|
-
{
|
|
6419
|
-
type: "event",
|
|
6420
|
-
name: "FeeUpdated",
|
|
6421
|
-
inputs: [
|
|
6264
|
+
name: "durationSeconds",
|
|
6265
|
+
type: "uint32",
|
|
6266
|
+
indexed: false,
|
|
6267
|
+
internalType: "uint32"
|
|
6268
|
+
}
|
|
6269
|
+
],
|
|
6270
|
+
anonymous: false
|
|
6271
|
+
},
|
|
6272
|
+
{
|
|
6273
|
+
type: "event",
|
|
6274
|
+
name: "FeeUpdated",
|
|
6275
|
+
inputs: [
|
|
6276
|
+
{
|
|
6277
|
+
name: "poolId",
|
|
6278
|
+
type: "bytes32",
|
|
6279
|
+
indexed: true,
|
|
6280
|
+
internalType: "PoolId"
|
|
6281
|
+
},
|
|
6282
|
+
{
|
|
6283
|
+
name: "fee",
|
|
6284
|
+
type: "uint24",
|
|
6285
|
+
indexed: false,
|
|
6286
|
+
internalType: "uint24"
|
|
6287
|
+
}
|
|
6288
|
+
],
|
|
6289
|
+
anonymous: false
|
|
6290
|
+
},
|
|
6291
|
+
{
|
|
6292
|
+
type: "function",
|
|
6293
|
+
name: "setFeeDistribution",
|
|
6294
|
+
inputs: [
|
|
6295
|
+
{ name: "poolId", type: "bytes32", internalType: "PoolId" },
|
|
6296
|
+
{
|
|
6297
|
+
name: "assetFeesToAssetBuybackWad",
|
|
6298
|
+
type: "uint256",
|
|
6299
|
+
internalType: "uint256"
|
|
6300
|
+
},
|
|
6301
|
+
{
|
|
6302
|
+
name: "assetFeesToNumeraireBuybackWad",
|
|
6303
|
+
type: "uint256",
|
|
6304
|
+
internalType: "uint256"
|
|
6305
|
+
},
|
|
6306
|
+
{
|
|
6307
|
+
name: "assetFeesToBeneficiaryWad",
|
|
6308
|
+
type: "uint256",
|
|
6309
|
+
internalType: "uint256"
|
|
6310
|
+
},
|
|
6311
|
+
{ name: "assetFeesToLpWad", type: "uint256", internalType: "uint256" },
|
|
6312
|
+
{
|
|
6313
|
+
name: "numeraireFeesToAssetBuybackWad",
|
|
6314
|
+
type: "uint256",
|
|
6315
|
+
internalType: "uint256"
|
|
6316
|
+
},
|
|
6317
|
+
{
|
|
6318
|
+
name: "numeraireFeesToNumeraireBuybackWad",
|
|
6319
|
+
type: "uint256",
|
|
6320
|
+
internalType: "uint256"
|
|
6321
|
+
},
|
|
6422
6322
|
{
|
|
6423
|
-
name: "
|
|
6424
|
-
type: "
|
|
6425
|
-
|
|
6426
|
-
internalType: "PoolId"
|
|
6323
|
+
name: "numeraireFeesToBeneficiaryWad",
|
|
6324
|
+
type: "uint256",
|
|
6325
|
+
internalType: "uint256"
|
|
6427
6326
|
},
|
|
6428
6327
|
{
|
|
6429
|
-
name: "
|
|
6430
|
-
type: "
|
|
6431
|
-
|
|
6432
|
-
internalType: "uint24"
|
|
6328
|
+
name: "numeraireFeesToLpWad",
|
|
6329
|
+
type: "uint256",
|
|
6330
|
+
internalType: "uint256"
|
|
6433
6331
|
}
|
|
6434
6332
|
],
|
|
6435
|
-
|
|
6333
|
+
outputs: [],
|
|
6334
|
+
stateMutability: "nonpayable"
|
|
6436
6335
|
},
|
|
6437
6336
|
{ type: "error", name: "FeeBeneficiariesNotConfigured", inputs: [] },
|
|
6438
6337
|
{
|
|
@@ -6441,6 +6340,7 @@ var rehypeDopplerHookInitializerAbi = [
|
|
|
6441
6340
|
inputs: []
|
|
6442
6341
|
},
|
|
6443
6342
|
{ type: "error", name: "FeeDistributionMustAddUpToWAD", inputs: [] },
|
|
6343
|
+
{ type: "error", name: "SenderNotAuthorized", inputs: [] },
|
|
6444
6344
|
{
|
|
6445
6345
|
type: "error",
|
|
6446
6346
|
name: "FeeTooHigh",
|
|
@@ -7090,7 +6990,6 @@ function getLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1) {
|
|
|
7090
6990
|
}
|
|
7091
6991
|
|
|
7092
6992
|
// src/evm/utils/multicurveLiquidity.ts
|
|
7093
|
-
var MAX_UINT128 = (1n << 128n) - 1n;
|
|
7094
6993
|
function getMaxLiquiditySafeMulticurveTickUpper(params) {
|
|
7095
6994
|
if (params.tickUpper <= params.tickLower) {
|
|
7096
6995
|
throw new Error(
|
|
@@ -7262,6 +7161,7 @@ function isNonEmpty(values) {
|
|
|
7262
7161
|
var NO_OP_ENABLED_CHAIN_IDS = [
|
|
7263
7162
|
CHAIN_IDS.MAINNET,
|
|
7264
7163
|
CHAIN_IDS.ETH_SEPOLIA,
|
|
7164
|
+
CHAIN_IDS.ARBITRUM,
|
|
7265
7165
|
CHAIN_IDS.BASE,
|
|
7266
7166
|
CHAIN_IDS.BASE_SEPOLIA,
|
|
7267
7167
|
CHAIN_IDS.UNICHAIN,
|
|
@@ -7275,6 +7175,7 @@ function isNoOpEnabledChain(chainId) {
|
|
|
7275
7175
|
}
|
|
7276
7176
|
var LAUNCHPAD_ENABLED_CHAIN_IDS = [
|
|
7277
7177
|
CHAIN_IDS.MAINNET,
|
|
7178
|
+
CHAIN_IDS.ARBITRUM,
|
|
7278
7179
|
CHAIN_IDS.BASE,
|
|
7279
7180
|
CHAIN_IDS.BASE_SEPOLIA,
|
|
7280
7181
|
CHAIN_IDS.ROBINHOOD,
|
|
@@ -7363,14 +7264,21 @@ function validateFeeDistributionInfo(feeDistributionInfo) {
|
|
|
7363
7264
|
}
|
|
7364
7265
|
|
|
7365
7266
|
// src/evm/utils/rehypeDopplerHookInitializer.ts
|
|
7366
|
-
function normalizeRehypeDopplerHookInitializerConfig(config) {
|
|
7267
|
+
function normalizeRehypeDopplerHookInitializerConfig(config, controllerOverride) {
|
|
7367
7268
|
assertNonZeroAddress(config.hookAddress, "Rehype hookAddress");
|
|
7368
|
-
|
|
7369
|
-
|
|
7269
|
+
if (config.buybackDestination !== void 0 && controllerOverride !== void 0) {
|
|
7270
|
+
throw new Error(
|
|
7271
|
+
"Rehype buybackDestination and withFeeDistributionController are mutually exclusive"
|
|
7272
|
+
);
|
|
7273
|
+
}
|
|
7274
|
+
const buybackDestination = config.buybackDestination ?? controllerOverride;
|
|
7275
|
+
if (buybackDestination === void 0) {
|
|
7370
7276
|
throw new Error(
|
|
7371
|
-
"Rehype buybackDestination
|
|
7277
|
+
"Rehype requires buybackDestination or withFeeDistributionController"
|
|
7372
7278
|
);
|
|
7373
7279
|
}
|
|
7280
|
+
assertNonZeroAddress(buybackDestination, "Rehype buybackDestination");
|
|
7281
|
+
const feeBeneficiaries = config.feeBeneficiaries;
|
|
7374
7282
|
const feeDistributionInfo = resolveRehypeFeeDistributionInfo(config);
|
|
7375
7283
|
const { startFee, endFee, durationSeconds, startingTime } = normalizeFeeSchedule(config);
|
|
7376
7284
|
const feeRoutingMode = feeBeneficiaries !== void 0 ? normalizeBeneficiaryFeeRoutingMode(config.feeRoutingMode) : normalizeFeeRoutingMode(config.feeRoutingMode);
|
|
@@ -7393,19 +7301,14 @@ function normalizeRehypeDopplerHookInitializerConfig(config) {
|
|
|
7393
7301
|
);
|
|
7394
7302
|
return {
|
|
7395
7303
|
...common,
|
|
7304
|
+
buybackDestination,
|
|
7396
7305
|
feeBeneficiaries: normalizedBeneficiaries,
|
|
7397
7306
|
feeRoutingMode: 1 /* RouteToBeneficiaryFees */
|
|
7398
7307
|
};
|
|
7399
7308
|
}
|
|
7400
|
-
if (config.buybackDestination === void 0) {
|
|
7401
|
-
throw new Error(
|
|
7402
|
-
"Rehype requires either buybackDestination or feeBeneficiaries"
|
|
7403
|
-
);
|
|
7404
|
-
}
|
|
7405
|
-
assertNonZeroAddress(config.buybackDestination, "Rehype buybackDestination");
|
|
7406
7309
|
return {
|
|
7407
7310
|
...common,
|
|
7408
|
-
buybackDestination
|
|
7311
|
+
buybackDestination,
|
|
7409
7312
|
feeRoutingMode
|
|
7410
7313
|
};
|
|
7411
7314
|
}
|
|
@@ -7723,6 +7626,44 @@ function assertAddressMatch(code, expected, actual) {
|
|
|
7723
7626
|
throw new AirlockCreateReceiptError(code, { expected, actual });
|
|
7724
7627
|
}
|
|
7725
7628
|
}
|
|
7629
|
+
function normalizePoolKey2(value) {
|
|
7630
|
+
if (Array.isArray(value)) {
|
|
7631
|
+
return {
|
|
7632
|
+
currency0: value[0],
|
|
7633
|
+
currency1: value[1],
|
|
7634
|
+
fee: Number(value[2]),
|
|
7635
|
+
tickSpacing: Number(value[3]),
|
|
7636
|
+
hooks: value[4]
|
|
7637
|
+
};
|
|
7638
|
+
}
|
|
7639
|
+
const poolKey = value;
|
|
7640
|
+
return {
|
|
7641
|
+
currency0: poolKey.currency0,
|
|
7642
|
+
currency1: poolKey.currency1,
|
|
7643
|
+
fee: Number(poolKey.fee),
|
|
7644
|
+
tickSpacing: Number(poolKey.tickSpacing),
|
|
7645
|
+
hooks: poolKey.hooks
|
|
7646
|
+
};
|
|
7647
|
+
}
|
|
7648
|
+
function poolId(poolKey) {
|
|
7649
|
+
return keccak256(
|
|
7650
|
+
encodeAbiParameters(
|
|
7651
|
+
[
|
|
7652
|
+
{
|
|
7653
|
+
type: "tuple",
|
|
7654
|
+
components: [
|
|
7655
|
+
{ name: "currency0", type: "address" },
|
|
7656
|
+
{ name: "currency1", type: "address" },
|
|
7657
|
+
{ name: "fee", type: "uint24" },
|
|
7658
|
+
{ name: "tickSpacing", type: "int24" },
|
|
7659
|
+
{ name: "hooks", type: "address" }
|
|
7660
|
+
]
|
|
7661
|
+
}
|
|
7662
|
+
],
|
|
7663
|
+
[poolKey]
|
|
7664
|
+
)
|
|
7665
|
+
);
|
|
7666
|
+
}
|
|
7726
7667
|
function verifyPreparedCreateReceipt({
|
|
7727
7668
|
prepared,
|
|
7728
7669
|
receipt
|
|
@@ -7773,6 +7714,86 @@ function verifyPreparedCreateReceipt({
|
|
|
7773
7714
|
prepared.prediction.poolOrHookAddress,
|
|
7774
7715
|
receiptIdentity.poolOrHookAddress
|
|
7775
7716
|
);
|
|
7717
|
+
let verifiedDevBuy;
|
|
7718
|
+
if (prepared.devBuy) {
|
|
7719
|
+
const bundledEvents = [];
|
|
7720
|
+
const vestingEvents = [];
|
|
7721
|
+
for (const log of receipt.logs) {
|
|
7722
|
+
if (!addressesEqual(log.address, prepared.devBuy.bundler)) continue;
|
|
7723
|
+
try {
|
|
7724
|
+
const decoded = decodeEventLog({
|
|
7725
|
+
abi: bundlerAbi,
|
|
7726
|
+
data: log.data,
|
|
7727
|
+
topics: log.topics
|
|
7728
|
+
});
|
|
7729
|
+
if (decoded.eventName === "Bundled") {
|
|
7730
|
+
const args = decoded.args;
|
|
7731
|
+
bundledEvents.push({
|
|
7732
|
+
recipient: args.recipient,
|
|
7733
|
+
amountIn: args.amountIn,
|
|
7734
|
+
amountOut: args.amountOut,
|
|
7735
|
+
poolKey: normalizePoolKey2(args.poolKey)
|
|
7736
|
+
});
|
|
7737
|
+
} else if (decoded.eventName === "VestingCreated") {
|
|
7738
|
+
const args = decoded.args;
|
|
7739
|
+
vestingEvents.push(args);
|
|
7740
|
+
}
|
|
7741
|
+
} catch {
|
|
7742
|
+
}
|
|
7743
|
+
}
|
|
7744
|
+
if (bundledEvents.length === 0) {
|
|
7745
|
+
throw new AirlockCreateReceiptError("MISSING_BUNDLED_EVENT");
|
|
7746
|
+
}
|
|
7747
|
+
if (bundledEvents.length > 1) {
|
|
7748
|
+
throw new AirlockCreateReceiptError("MULTIPLE_BUNDLED_EVENTS", {
|
|
7749
|
+
expected: 1,
|
|
7750
|
+
actual: bundledEvents.length
|
|
7751
|
+
});
|
|
7752
|
+
}
|
|
7753
|
+
const bundled = bundledEvents[0];
|
|
7754
|
+
if (!addressesEqual(bundled.recipient, prepared.devBuy.recipient)) {
|
|
7755
|
+
throw new AirlockCreateReceiptError("BUNDLED_RECIPIENT_MISMATCH", {
|
|
7756
|
+
expected: prepared.devBuy.recipient,
|
|
7757
|
+
actual: bundled.recipient
|
|
7758
|
+
});
|
|
7759
|
+
}
|
|
7760
|
+
if (bundled.amountIn !== prepared.devBuy.exactAmountIn) {
|
|
7761
|
+
throw new AirlockCreateReceiptError("BUNDLED_INPUT_MISMATCH", {
|
|
7762
|
+
expected: prepared.devBuy.exactAmountIn.toString(),
|
|
7763
|
+
actual: bundled.amountIn.toString()
|
|
7764
|
+
});
|
|
7765
|
+
}
|
|
7766
|
+
const bundledPoolId = poolId(bundled.poolKey);
|
|
7767
|
+
if (bundledPoolId.toLowerCase() !== prepared.prediction.poolId.toLowerCase()) {
|
|
7768
|
+
throw new AirlockCreateReceiptError("BUNDLED_POOL_KEY_MISMATCH", {
|
|
7769
|
+
expected: prepared.prediction.poolId,
|
|
7770
|
+
actual: bundledPoolId
|
|
7771
|
+
});
|
|
7772
|
+
}
|
|
7773
|
+
if (prepared.devBuy.vesting.vestingDuration === 0n) {
|
|
7774
|
+
if (vestingEvents.length !== 0) {
|
|
7775
|
+
throw new AirlockCreateReceiptError("UNEXPECTED_VESTING_EVENT", {
|
|
7776
|
+
expected: 0,
|
|
7777
|
+
actual: vestingEvents.length
|
|
7778
|
+
});
|
|
7779
|
+
}
|
|
7780
|
+
} else {
|
|
7781
|
+
if (vestingEvents.length === 0) {
|
|
7782
|
+
throw new AirlockCreateReceiptError("MISSING_VESTING_EVENT");
|
|
7783
|
+
}
|
|
7784
|
+
if (vestingEvents.length > 1) {
|
|
7785
|
+
throw new AirlockCreateReceiptError("MULTIPLE_VESTING_EVENTS", {
|
|
7786
|
+
expected: 1,
|
|
7787
|
+
actual: vestingEvents.length
|
|
7788
|
+
});
|
|
7789
|
+
}
|
|
7790
|
+
const vesting = vestingEvents[0];
|
|
7791
|
+
if (!addressesEqual(vesting.asset, prepared.prediction.tokenAddress) || !addressesEqual(vesting.recipient, prepared.devBuy.recipient) || vesting.totalAmount !== bundled.amountOut || vesting.permissionlessClaim !== prepared.devBuy.vesting.permissionlessClaim || vesting.cliffDuration !== prepared.devBuy.vesting.cliffDuration || vesting.vestingDuration !== prepared.devBuy.vesting.vestingDuration) {
|
|
7792
|
+
throw new AirlockCreateReceiptError("VESTING_MISMATCH");
|
|
7793
|
+
}
|
|
7794
|
+
}
|
|
7795
|
+
verifiedDevBuy = { amountOut: bundled.amountOut };
|
|
7796
|
+
}
|
|
7776
7797
|
return {
|
|
7777
7798
|
receiptIdentity,
|
|
7778
7799
|
preparedIdentity: {
|
|
@@ -7785,7 +7806,8 @@ function verifyPreparedCreateReceipt({
|
|
|
7785
7806
|
poolKey: prepared.prediction.poolKey,
|
|
7786
7807
|
poolId: prepared.prediction.poolId,
|
|
7787
7808
|
tokenIsCurrency0: prepared.prediction.tokenIsCurrency0
|
|
7788
|
-
}
|
|
7809
|
+
},
|
|
7810
|
+
devBuy: verifiedDevBuy
|
|
7789
7811
|
};
|
|
7790
7812
|
}
|
|
7791
7813
|
async function verifyPreparedCreateExecution({
|
|
@@ -8101,6 +8123,42 @@ function tickToMarketCap(params) {
|
|
|
8101
8123
|
}
|
|
8102
8124
|
|
|
8103
8125
|
// src/evm/builders/shared.ts
|
|
8126
|
+
function normalizeBuilderDevBuy(params) {
|
|
8127
|
+
if (params.exactAmountIn <= 0n || params.exactAmountIn > MAX_UINT128) {
|
|
8128
|
+
throw new Error("Dev buy exactAmountIn must be in the uint128 range");
|
|
8129
|
+
}
|
|
8130
|
+
if (params.recipient.toLowerCase() === ZERO_ADDRESS) {
|
|
8131
|
+
throw new Error("Dev buy recipient must not be the zero address");
|
|
8132
|
+
}
|
|
8133
|
+
const vestingDuration = params.vesting?.vestingDuration ?? 0n;
|
|
8134
|
+
const cliffDuration = params.vesting?.cliffDuration ?? 0n;
|
|
8135
|
+
if (vestingDuration < 0n || vestingDuration > MAX_UINT64) {
|
|
8136
|
+
throw new Error("Dev buy vestingDuration must be in the uint64 range");
|
|
8137
|
+
}
|
|
8138
|
+
if (cliffDuration < 0n || cliffDuration > MAX_UINT64) {
|
|
8139
|
+
throw new Error("Dev buy cliffDuration must be in the uint64 range");
|
|
8140
|
+
}
|
|
8141
|
+
if (params.vesting && vestingDuration === 0n) {
|
|
8142
|
+
throw new Error(
|
|
8143
|
+
"Dev buy vestingDuration must be greater than zero when vesting is configured"
|
|
8144
|
+
);
|
|
8145
|
+
}
|
|
8146
|
+
if (vestingDuration !== 0n && vestingDuration < MIN_BUNDLER_VESTING_DURATION) {
|
|
8147
|
+
throw new Error("Dev buy vestingDuration must be at least 86400 seconds");
|
|
8148
|
+
}
|
|
8149
|
+
if (cliffDuration > vestingDuration) {
|
|
8150
|
+
throw new Error("Dev buy cliffDuration must not exceed vestingDuration");
|
|
8151
|
+
}
|
|
8152
|
+
return {
|
|
8153
|
+
exactAmountIn: params.exactAmountIn,
|
|
8154
|
+
recipient: params.recipient,
|
|
8155
|
+
vesting: {
|
|
8156
|
+
permissionlessClaim: params.vesting?.permissionlessClaim ?? false,
|
|
8157
|
+
vestingDuration,
|
|
8158
|
+
cliffDuration
|
|
8159
|
+
}
|
|
8160
|
+
};
|
|
8161
|
+
}
|
|
8104
8162
|
function assertTokenConfigSupportsYearlyMintRate(params) {
|
|
8105
8163
|
if ("yearlyMintRate" in params && params.type !== "standard") {
|
|
8106
8164
|
throw new Error(
|
|
@@ -8270,7 +8328,6 @@ function buildCurvesFromPresets(params) {
|
|
|
8270
8328
|
}
|
|
8271
8329
|
|
|
8272
8330
|
// src/evm/entities/DopplerFactory.ts
|
|
8273
|
-
var MAX_UINT1282 = (1n << 128n) - 1n;
|
|
8274
8331
|
var MAX_PROCEEDS_SPLIT_SHARE = WAD / 2n;
|
|
8275
8332
|
function isDopplerHookMigratorConfig(config) {
|
|
8276
8333
|
return config.type === "dopplerHookMigrator" || config.type === "dopplerHook";
|
|
@@ -8291,14 +8348,12 @@ var erc20BalanceOfAbi = [
|
|
|
8291
8348
|
];
|
|
8292
8349
|
var TOKEN_FACTORY_80_ADDRESS2 = "0xf0b5141dd9096254b2ca624dff26024f46087229";
|
|
8293
8350
|
var DERC20_V2_MIN_VESTING_DURATION = 24 * 60 * 60;
|
|
8294
|
-
var MAX_UINT64 = (1n << 64n) - 1n;
|
|
8295
8351
|
var MAX_UINT48 = (1n << 48n) - 1n;
|
|
8296
8352
|
var DopplerFactory = class {
|
|
8297
8353
|
publicClient;
|
|
8298
8354
|
walletClient;
|
|
8299
8355
|
chainId;
|
|
8300
8356
|
customMigrationEncoder;
|
|
8301
|
-
multicurveBundlerSupport = /* @__PURE__ */ new Map();
|
|
8302
8357
|
constructor(publicClient, walletClient, chainId) {
|
|
8303
8358
|
this.publicClient = publicClient;
|
|
8304
8359
|
this.walletClient = walletClient;
|
|
@@ -9199,7 +9254,6 @@ var DopplerFactory = class {
|
|
|
9199
9254
|
}
|
|
9200
9255
|
/**
|
|
9201
9256
|
* Simulate a static auction creation and return predicted addresses.
|
|
9202
|
-
* Useful for pre-buy flows (bundle) to know the token/pool before sending.
|
|
9203
9257
|
*/
|
|
9204
9258
|
async simulateCreateStaticAuction(params) {
|
|
9205
9259
|
const createParams = await this.encodeCreateStaticAuctionParams(params);
|
|
@@ -9675,7 +9729,7 @@ var DopplerFactory = class {
|
|
|
9675
9729
|
);
|
|
9676
9730
|
}
|
|
9677
9731
|
}
|
|
9678
|
-
const
|
|
9732
|
+
const poolId2 = this.computePoolId({
|
|
9679
9733
|
currency0: actualTokenAddress < params.sale.numeraire ? actualTokenAddress : params.sale.numeraire,
|
|
9680
9734
|
currency1: actualTokenAddress < params.sale.numeraire ? params.sale.numeraire : actualTokenAddress,
|
|
9681
9735
|
fee: params.pool.fee,
|
|
@@ -9685,7 +9739,7 @@ var DopplerFactory = class {
|
|
|
9685
9739
|
return {
|
|
9686
9740
|
hookAddress: actualHookAddress,
|
|
9687
9741
|
tokenAddress: actualTokenAddress,
|
|
9688
|
-
poolId,
|
|
9742
|
+
poolId: poolId2,
|
|
9689
9743
|
transactionHash: hash
|
|
9690
9744
|
};
|
|
9691
9745
|
}
|
|
@@ -9716,7 +9770,7 @@ var DopplerFactory = class {
|
|
|
9716
9770
|
}
|
|
9717
9771
|
const tokenAddress = simResult[0];
|
|
9718
9772
|
const hookAddress = simResult[1];
|
|
9719
|
-
const
|
|
9773
|
+
const poolId2 = this.computePoolId({
|
|
9720
9774
|
currency0: tokenAddress < params.sale.numeraire ? tokenAddress : params.sale.numeraire,
|
|
9721
9775
|
currency1: tokenAddress < params.sale.numeraire ? params.sale.numeraire : tokenAddress,
|
|
9722
9776
|
fee: params.pool.fee,
|
|
@@ -9735,7 +9789,7 @@ var DopplerFactory = class {
|
|
|
9735
9789
|
createParams: createParamsWithTimelock,
|
|
9736
9790
|
hookAddress,
|
|
9737
9791
|
tokenAddress,
|
|
9738
|
-
poolId,
|
|
9792
|
+
poolId: poolId2,
|
|
9739
9793
|
gasEstimate,
|
|
9740
9794
|
execute: () => this.createDynamicAuction(params, {
|
|
9741
9795
|
_createParams: createParamsWithTimelock
|
|
@@ -11078,12 +11132,9 @@ var DopplerFactory = class {
|
|
|
11078
11132
|
)
|
|
11079
11133
|
};
|
|
11080
11134
|
} else if (hasLegacyHook) {
|
|
11081
|
-
mode = {
|
|
11082
|
-
type: "rehype",
|
|
11083
|
-
hookConfig: legacyHook
|
|
11084
|
-
};
|
|
11135
|
+
mode = { type: "dopplerHook", hookConfig: legacyHook };
|
|
11085
11136
|
} else {
|
|
11086
|
-
mode = { type: "
|
|
11137
|
+
mode = { type: "dopplerHook" };
|
|
11087
11138
|
}
|
|
11088
11139
|
} else {
|
|
11089
11140
|
switch (initializer.type) {
|
|
@@ -11094,7 +11145,7 @@ var DopplerFactory = class {
|
|
|
11094
11145
|
"Initializer type 'dopplerHookInitializer' cannot be combined with legacy schedule or RehypeDopplerHookInitializer configuration"
|
|
11095
11146
|
);
|
|
11096
11147
|
}
|
|
11097
|
-
mode = { type: "
|
|
11148
|
+
mode = { type: "dopplerHook" };
|
|
11098
11149
|
break;
|
|
11099
11150
|
}
|
|
11100
11151
|
case "standard": {
|
|
@@ -11183,7 +11234,7 @@ var DopplerFactory = class {
|
|
|
11183
11234
|
"Initializer type 'rehype' cannot be combined with schedule"
|
|
11184
11235
|
);
|
|
11185
11236
|
}
|
|
11186
|
-
mode = { type: "
|
|
11237
|
+
mode = { type: "dopplerHook", hookConfig: initializer.config };
|
|
11187
11238
|
break;
|
|
11188
11239
|
}
|
|
11189
11240
|
default: {
|
|
@@ -11196,8 +11247,8 @@ var DopplerFactory = class {
|
|
|
11196
11247
|
}
|
|
11197
11248
|
if (params.modules?.dopplerHookInitializer !== void 0) {
|
|
11198
11249
|
if (mode.type === "standard") {
|
|
11199
|
-
mode = { type: "
|
|
11200
|
-
} else if (mode.type !== "
|
|
11250
|
+
mode = { type: "dopplerHook" };
|
|
11251
|
+
} else if (mode.type !== "dopplerHook") {
|
|
11201
11252
|
throw new Error(
|
|
11202
11253
|
"modules.dopplerHookInitializer can only be used with the dopplerHookInitializer, rehype, or standard multicurve initializer mode"
|
|
11203
11254
|
);
|
|
@@ -11216,14 +11267,20 @@ var DopplerFactory = class {
|
|
|
11216
11267
|
params.sale.numTokensToSell
|
|
11217
11268
|
);
|
|
11218
11269
|
const addresses = getAddresses(this.chainId);
|
|
11270
|
+
const resolvedBundler = params.devBuy ? params.modules?.bundler ?? addresses.bundler : void 0;
|
|
11271
|
+
if (params.devBuy && (!resolvedBundler || resolvedBundler === ZERO_ADDRESS)) {
|
|
11272
|
+
throw new Error(
|
|
11273
|
+
"Bundler address not configured on this chain. Override via builder.withBundler() or modules.bundler."
|
|
11274
|
+
);
|
|
11275
|
+
}
|
|
11219
11276
|
const sortedBeneficiaries = sortBeneficiaries(
|
|
11220
11277
|
params.pool.beneficiaries ?? []
|
|
11221
11278
|
);
|
|
11222
11279
|
const initializerMode = this.resolveMulticurveInitializerMode(params);
|
|
11223
11280
|
const useScheduledInitializer = initializerMode.type === "scheduled";
|
|
11224
11281
|
const useDecayInitializer = initializerMode.type === "decay";
|
|
11225
|
-
const useDopplerHookInitializer = initializerMode.type === "
|
|
11226
|
-
const normalizedRehypeHookConfig = initializerMode.type === "
|
|
11282
|
+
const useDopplerHookInitializer = initializerMode.type === "dopplerHook";
|
|
11283
|
+
const normalizedRehypeHookConfig = initializerMode.type === "dopplerHook" && initializerMode.hookConfig ? normalizeRehypeDopplerHookInitializerConfig(
|
|
11227
11284
|
initializerMode.hookConfig
|
|
11228
11285
|
) : void 0;
|
|
11229
11286
|
const curveComponents = [
|
|
@@ -11525,7 +11582,11 @@ var DopplerFactory = class {
|
|
|
11525
11582
|
),
|
|
11526
11583
|
...this.resolveGovernanceBalanceLimitExclusions(
|
|
11527
11584
|
params.governance
|
|
11528
|
-
)
|
|
11585
|
+
),
|
|
11586
|
+
...params.devBuy ? [
|
|
11587
|
+
params.devBuy.recipient,
|
|
11588
|
+
...params.devBuy.vesting.vestingDuration !== 0n && resolvedBundler ? [resolvedBundler] : []
|
|
11589
|
+
] : []
|
|
11529
11590
|
] : void 0
|
|
11530
11591
|
});
|
|
11531
11592
|
const predictedTokenAddress = this.predictDopplerERC20V1TokenAddress({
|
|
@@ -11576,29 +11637,136 @@ var DopplerFactory = class {
|
|
|
11576
11637
|
};
|
|
11577
11638
|
return createParams;
|
|
11578
11639
|
}
|
|
11640
|
+
resolveBundlerAddress(params) {
|
|
11641
|
+
const bundler = params.modules?.bundler ?? getAddresses(this.chainId).bundler;
|
|
11642
|
+
if (!bundler || bundler === ZERO_ADDRESS) {
|
|
11643
|
+
throw new Error(
|
|
11644
|
+
"Bundler address not configured on this chain. Override via builder.withBundler() or modules.bundler."
|
|
11645
|
+
);
|
|
11646
|
+
}
|
|
11647
|
+
return bundler;
|
|
11648
|
+
}
|
|
11649
|
+
async ensureDevBuyInitializerCompatibility(args) {
|
|
11650
|
+
const initializerMode = this.resolveMulticurveInitializerMode(args.params);
|
|
11651
|
+
if (initializerMode.type !== "dopplerHook") {
|
|
11652
|
+
throw new Error(
|
|
11653
|
+
"Dev buys require a DopplerHookInitializer or Rehype initializer"
|
|
11654
|
+
);
|
|
11655
|
+
}
|
|
11656
|
+
const rehypeInitializer = initializerMode.hookConfig?.hookAddress;
|
|
11657
|
+
if (!rehypeInitializer) return;
|
|
11658
|
+
const configuredBundler = await this.publicClient.readContract({
|
|
11659
|
+
address: rehypeInitializer,
|
|
11660
|
+
abi: rehypeDopplerHookInitializerAbi,
|
|
11661
|
+
functionName: "bundler"
|
|
11662
|
+
});
|
|
11663
|
+
if (configuredBundler.toLowerCase() !== args.bundler.toLowerCase()) {
|
|
11664
|
+
throw new Error(
|
|
11665
|
+
`Rehype initializer ${rehypeInitializer} is configured for Bundler ${configuredBundler}, not ${args.bundler}`
|
|
11666
|
+
);
|
|
11667
|
+
}
|
|
11668
|
+
}
|
|
11669
|
+
parseBundleSimulation(result) {
|
|
11670
|
+
const values = Array.isArray(result) ? result : result && typeof result === "object" ? [
|
|
11671
|
+
result.asset,
|
|
11672
|
+
result.poolKey,
|
|
11673
|
+
result.governance,
|
|
11674
|
+
result.timelock,
|
|
11675
|
+
result.amountOut
|
|
11676
|
+
] : [];
|
|
11677
|
+
if (values.length < 5) {
|
|
11678
|
+
throw new Error("Failed to simulate multicurve dev buy");
|
|
11679
|
+
}
|
|
11680
|
+
return {
|
|
11681
|
+
asset: values[0],
|
|
11682
|
+
poolKey: this.normalizePoolKey(values[1]),
|
|
11683
|
+
governance: values[2],
|
|
11684
|
+
timelock: values[3],
|
|
11685
|
+
amountOut: values[4]
|
|
11686
|
+
};
|
|
11687
|
+
}
|
|
11579
11688
|
async resolveFinalMulticurveCreate(args) {
|
|
11580
11689
|
const { params, simulationAccount } = args;
|
|
11581
11690
|
const addresses = getAddresses(this.chainId);
|
|
11582
11691
|
const airlock = params.modules?.airlock ?? addresses.airlock;
|
|
11583
11692
|
const initialCreateParams = args.createParams ?? this.encodeCreateMulticurveParams(params);
|
|
11584
|
-
|
|
11585
|
-
|
|
11586
|
-
|
|
11587
|
-
|
|
11588
|
-
|
|
11589
|
-
|
|
11590
|
-
|
|
11591
|
-
|
|
11592
|
-
|
|
11593
|
-
|
|
11693
|
+
if (!params.devBuy) {
|
|
11694
|
+
const initialSimulation = await this.publicClient.simulateContract({
|
|
11695
|
+
address: airlock,
|
|
11696
|
+
abi: airlockAbi,
|
|
11697
|
+
functionName: "create",
|
|
11698
|
+
args: [{ ...initialCreateParams }],
|
|
11699
|
+
account: simulationAccount
|
|
11700
|
+
});
|
|
11701
|
+
const initialResult = initialSimulation.result;
|
|
11702
|
+
if (!initialResult || !Array.isArray(initialResult) || initialResult.length < 5) {
|
|
11703
|
+
throw new Error("Failed to simulate multicurve create");
|
|
11704
|
+
}
|
|
11705
|
+
let createParams2 = initialCreateParams;
|
|
11706
|
+
let request = initialSimulation.request;
|
|
11707
|
+
let result2 = initialResult;
|
|
11708
|
+
if (!args.createParams) {
|
|
11709
|
+
const enrichedCreateParams = this.withSimulationGovernanceTimelockExclusion({
|
|
11710
|
+
createParams: createParams2,
|
|
11711
|
+
simResult: initialResult,
|
|
11712
|
+
token: params.token,
|
|
11713
|
+
governance: params.governance,
|
|
11714
|
+
modules: params.modules,
|
|
11715
|
+
addresses
|
|
11716
|
+
});
|
|
11717
|
+
if (enrichedCreateParams.tokenFactoryData !== createParams2.tokenFactoryData) {
|
|
11718
|
+
createParams2 = enrichedCreateParams;
|
|
11719
|
+
const finalSimulation = await this.publicClient.simulateContract({
|
|
11720
|
+
address: airlock,
|
|
11721
|
+
abi: airlockAbi,
|
|
11722
|
+
functionName: "create",
|
|
11723
|
+
args: [{ ...createParams2 }],
|
|
11724
|
+
account: simulationAccount
|
|
11725
|
+
});
|
|
11726
|
+
const finalResult = finalSimulation.result;
|
|
11727
|
+
if (!finalResult || !Array.isArray(finalResult) || finalResult.length < 5) {
|
|
11728
|
+
throw new Error("Failed to simulate enriched multicurve create");
|
|
11729
|
+
}
|
|
11730
|
+
request = finalSimulation.request;
|
|
11731
|
+
result2 = finalResult;
|
|
11732
|
+
}
|
|
11733
|
+
}
|
|
11734
|
+
const tokenAddress = result2[0];
|
|
11735
|
+
const poolIdentity = await this.computeMulticurvePoolIdentity(
|
|
11736
|
+
params,
|
|
11737
|
+
tokenAddress
|
|
11738
|
+
);
|
|
11739
|
+
const prediction2 = {
|
|
11740
|
+
tokenAddress,
|
|
11741
|
+
poolOrHookAddress: result2[1],
|
|
11742
|
+
governanceAddress: result2[2],
|
|
11743
|
+
timelockAddress: result2[3],
|
|
11744
|
+
migrationPoolAddress: result2[4],
|
|
11745
|
+
...poolIdentity
|
|
11746
|
+
};
|
|
11747
|
+
return { airlock, createParams: createParams2, prediction: prediction2, request };
|
|
11594
11748
|
}
|
|
11749
|
+
this.validateMulticurveDevBuy(params.devBuy);
|
|
11750
|
+
const bundler = this.resolveBundlerAddress(params);
|
|
11751
|
+
await this.ensureDevBuyInitializerCompatibility({ params, bundler });
|
|
11595
11752
|
let createParams = initialCreateParams;
|
|
11596
|
-
|
|
11597
|
-
|
|
11753
|
+
const initialBundleSimulation = await this.publicClient.simulateContract({
|
|
11754
|
+
address: bundler,
|
|
11755
|
+
abi: bundlerAbi,
|
|
11756
|
+
functionName: "simulateBundle",
|
|
11757
|
+
args: [{ ...createParams }, params.devBuy.exactAmountIn]
|
|
11758
|
+
});
|
|
11759
|
+
let result = this.parseBundleSimulation(initialBundleSimulation.result);
|
|
11598
11760
|
if (!args.createParams) {
|
|
11599
11761
|
const enrichedCreateParams = this.withSimulationGovernanceTimelockExclusion({
|
|
11600
11762
|
createParams,
|
|
11601
|
-
simResult:
|
|
11763
|
+
simResult: [
|
|
11764
|
+
result.asset,
|
|
11765
|
+
result.poolKey.hooks,
|
|
11766
|
+
result.governance,
|
|
11767
|
+
result.timelock,
|
|
11768
|
+
ZERO_ADDRESS
|
|
11769
|
+
],
|
|
11602
11770
|
token: params.token,
|
|
11603
11771
|
governance: params.governance,
|
|
11604
11772
|
modules: params.modules,
|
|
@@ -11606,87 +11774,202 @@ var DopplerFactory = class {
|
|
|
11606
11774
|
});
|
|
11607
11775
|
if (enrichedCreateParams.tokenFactoryData !== createParams.tokenFactoryData) {
|
|
11608
11776
|
createParams = enrichedCreateParams;
|
|
11609
|
-
const
|
|
11610
|
-
address:
|
|
11611
|
-
abi:
|
|
11612
|
-
functionName: "
|
|
11613
|
-
args: [{ ...createParams }]
|
|
11614
|
-
account: simulationAccount
|
|
11777
|
+
const finalBundleSimulation = await this.publicClient.simulateContract({
|
|
11778
|
+
address: bundler,
|
|
11779
|
+
abi: bundlerAbi,
|
|
11780
|
+
functionName: "simulateBundle",
|
|
11781
|
+
args: [{ ...createParams }, params.devBuy.exactAmountIn]
|
|
11615
11782
|
});
|
|
11616
|
-
|
|
11617
|
-
if (!finalResult || !Array.isArray(finalResult) || finalResult.length < 5) {
|
|
11618
|
-
throw new Error("Failed to simulate enriched multicurve create");
|
|
11619
|
-
}
|
|
11620
|
-
request = finalSimulation.request;
|
|
11621
|
-
result = finalResult;
|
|
11783
|
+
result = this.parseBundleSimulation(finalBundleSimulation.result);
|
|
11622
11784
|
}
|
|
11623
11785
|
}
|
|
11624
|
-
const
|
|
11625
|
-
const
|
|
11626
|
-
|
|
11627
|
-
|
|
11628
|
-
)
|
|
11786
|
+
const currency0 = result.poolKey.currency0.toLowerCase();
|
|
11787
|
+
const currency1 = result.poolKey.currency1.toLowerCase();
|
|
11788
|
+
const asset = result.asset.toLowerCase();
|
|
11789
|
+
const numeraire = createParams.numeraire.toLowerCase();
|
|
11790
|
+
if (!(currency0 === asset && currency1 === numeraire || currency1 === asset && currency0 === numeraire)) {
|
|
11791
|
+
throw new Error(
|
|
11792
|
+
"Bundler simulation returned a pool key that does not contain the created asset and numeraire"
|
|
11793
|
+
);
|
|
11794
|
+
}
|
|
11795
|
+
if (result.poolKey.hooks.toLowerCase() !== createParams.poolInitializer.toLowerCase()) {
|
|
11796
|
+
throw new Error(
|
|
11797
|
+
"Bundler simulation returned an unexpected pool initializer"
|
|
11798
|
+
);
|
|
11799
|
+
}
|
|
11629
11800
|
const prediction = {
|
|
11630
|
-
tokenAddress,
|
|
11631
|
-
poolOrHookAddress: result
|
|
11632
|
-
governanceAddress: result
|
|
11633
|
-
timelockAddress: result
|
|
11634
|
-
|
|
11635
|
-
|
|
11801
|
+
tokenAddress: result.asset,
|
|
11802
|
+
poolOrHookAddress: result.asset,
|
|
11803
|
+
governanceAddress: result.governance,
|
|
11804
|
+
timelockAddress: result.timelock,
|
|
11805
|
+
poolKey: result.poolKey,
|
|
11806
|
+
poolId: this.computePoolId(result.poolKey),
|
|
11807
|
+
tokenIsCurrency0: currency0 === asset
|
|
11808
|
+
};
|
|
11809
|
+
const devBuy = {
|
|
11810
|
+
...params.devBuy,
|
|
11811
|
+
vesting: { ...params.devBuy.vesting },
|
|
11812
|
+
bundler,
|
|
11813
|
+
simulatedAmountOut: result.amountOut
|
|
11814
|
+
};
|
|
11815
|
+
return { airlock, bundler, createParams, prediction, devBuy };
|
|
11816
|
+
}
|
|
11817
|
+
buildDevBuyTransaction(args) {
|
|
11818
|
+
return {
|
|
11819
|
+
to: args.devBuy.bundler,
|
|
11820
|
+
data: encodeFunctionData({
|
|
11821
|
+
abi: bundlerAbi,
|
|
11822
|
+
functionName: "bundle",
|
|
11823
|
+
args: [
|
|
11824
|
+
{ ...args.createParams },
|
|
11825
|
+
{ ...args.devBuy.vesting },
|
|
11826
|
+
args.devBuy.exactAmountIn,
|
|
11827
|
+
args.devBuy.recipient
|
|
11828
|
+
]
|
|
11829
|
+
}),
|
|
11830
|
+
value: args.createParams.numeraire === ZERO_ADDRESS ? args.devBuy.exactAmountIn : 0n
|
|
11636
11831
|
};
|
|
11637
|
-
|
|
11832
|
+
}
|
|
11833
|
+
async readDevBuyAllowance(args) {
|
|
11834
|
+
if (args.createParams.numeraire === ZERO_ADDRESS) {
|
|
11835
|
+
return void 0;
|
|
11836
|
+
}
|
|
11837
|
+
return await this.publicClient.readContract({
|
|
11838
|
+
address: args.createParams.numeraire,
|
|
11839
|
+
abi: erc20Abi,
|
|
11840
|
+
functionName: "allowance",
|
|
11841
|
+
args: [args.account, args.bundler]
|
|
11842
|
+
});
|
|
11843
|
+
}
|
|
11844
|
+
async estimateDevBuyGas(args) {
|
|
11845
|
+
try {
|
|
11846
|
+
const gas = await this.publicClient.estimateContractGas(
|
|
11847
|
+
{
|
|
11848
|
+
address: args.devBuy.bundler,
|
|
11849
|
+
abi: bundlerAbi,
|
|
11850
|
+
functionName: "bundle",
|
|
11851
|
+
args: [
|
|
11852
|
+
{ ...args.createParams },
|
|
11853
|
+
{ ...args.devBuy.vesting },
|
|
11854
|
+
args.devBuy.exactAmountIn,
|
|
11855
|
+
args.devBuy.recipient
|
|
11856
|
+
],
|
|
11857
|
+
account: args.account,
|
|
11858
|
+
value: args.createParams.numeraire === ZERO_ADDRESS ? args.devBuy.exactAmountIn : 0n
|
|
11859
|
+
}
|
|
11860
|
+
);
|
|
11861
|
+
return { status: "estimated", gas };
|
|
11862
|
+
} catch {
|
|
11863
|
+
return { status: "unavailable" };
|
|
11864
|
+
}
|
|
11638
11865
|
}
|
|
11639
11866
|
async prepareCreateMulticurve(params, options) {
|
|
11640
11867
|
const resolved = await this.resolveFinalMulticurveCreate({
|
|
11641
11868
|
params,
|
|
11642
11869
|
simulationAccount: options.account
|
|
11643
11870
|
});
|
|
11644
|
-
|
|
11645
|
-
|
|
11646
|
-
|
|
11871
|
+
if (!resolved.devBuy) {
|
|
11872
|
+
const internalGasEstimate = await this.resolveInternalCreateGasEstimate({
|
|
11873
|
+
request: resolved.request,
|
|
11874
|
+
address: resolved.airlock,
|
|
11875
|
+
createParams: resolved.createParams,
|
|
11876
|
+
account: options.account
|
|
11877
|
+
});
|
|
11878
|
+
if (internalGasEstimate.status === "reverted") {
|
|
11879
|
+
throw internalGasEstimate.error;
|
|
11880
|
+
}
|
|
11881
|
+
return {
|
|
11882
|
+
chainId: this.chainId,
|
|
11883
|
+
account: options.account,
|
|
11884
|
+
airlock: resolved.airlock,
|
|
11885
|
+
createParams: resolved.createParams,
|
|
11886
|
+
prediction: resolved.prediction,
|
|
11887
|
+
transaction: {
|
|
11888
|
+
to: resolved.airlock,
|
|
11889
|
+
data: encodeFunctionData({
|
|
11890
|
+
abi: airlockAbi,
|
|
11891
|
+
functionName: "create",
|
|
11892
|
+
args: [{ ...resolved.createParams }]
|
|
11893
|
+
}),
|
|
11894
|
+
value: 0n
|
|
11895
|
+
},
|
|
11896
|
+
gasEstimate: internalGasEstimate
|
|
11897
|
+
};
|
|
11898
|
+
}
|
|
11899
|
+
const allowance = await this.readDevBuyAllowance({
|
|
11900
|
+
createParams: resolved.createParams,
|
|
11901
|
+
account: options.account,
|
|
11902
|
+
bundler: resolved.devBuy.bundler
|
|
11903
|
+
});
|
|
11904
|
+
const approvalRequired = allowance !== void 0 && allowance < resolved.devBuy.exactAmountIn;
|
|
11905
|
+
const approvalTransaction = approvalRequired ? {
|
|
11906
|
+
to: resolved.createParams.numeraire,
|
|
11907
|
+
data: encodeFunctionData({
|
|
11908
|
+
abi: erc20Abi,
|
|
11909
|
+
functionName: "approve",
|
|
11910
|
+
args: [resolved.devBuy.bundler, resolved.devBuy.exactAmountIn]
|
|
11911
|
+
}),
|
|
11912
|
+
value: 0n
|
|
11913
|
+
} : void 0;
|
|
11914
|
+
const gasEstimate = approvalRequired ? { status: "unavailable" } : await this.estimateDevBuyGas({
|
|
11647
11915
|
createParams: resolved.createParams,
|
|
11916
|
+
devBuy: resolved.devBuy,
|
|
11648
11917
|
account: options.account
|
|
11649
11918
|
});
|
|
11650
|
-
if (internalGasEstimate.status === "reverted") {
|
|
11651
|
-
throw internalGasEstimate.error;
|
|
11652
|
-
}
|
|
11653
|
-
const gasEstimate = internalGasEstimate;
|
|
11654
11919
|
return {
|
|
11655
11920
|
chainId: this.chainId,
|
|
11656
11921
|
account: options.account,
|
|
11657
11922
|
airlock: resolved.airlock,
|
|
11658
11923
|
createParams: resolved.createParams,
|
|
11659
11924
|
prediction: resolved.prediction,
|
|
11660
|
-
transaction: {
|
|
11661
|
-
|
|
11662
|
-
|
|
11663
|
-
|
|
11664
|
-
|
|
11665
|
-
|
|
11666
|
-
}),
|
|
11667
|
-
value: 0n
|
|
11668
|
-
},
|
|
11925
|
+
transaction: this.buildDevBuyTransaction({
|
|
11926
|
+
createParams: resolved.createParams,
|
|
11927
|
+
devBuy: resolved.devBuy
|
|
11928
|
+
}),
|
|
11929
|
+
approvalTransaction,
|
|
11930
|
+
devBuy: resolved.devBuy,
|
|
11669
11931
|
gasEstimate
|
|
11670
11932
|
};
|
|
11671
11933
|
}
|
|
11672
11934
|
async simulateCreateMulticurve(params) {
|
|
11935
|
+
const paramsSnapshot = structuredClone(params);
|
|
11673
11936
|
const resolved = await this.resolveFinalMulticurveCreate({
|
|
11674
|
-
params,
|
|
11937
|
+
params: paramsSnapshot,
|
|
11675
11938
|
simulationAccount: this.walletClient?.account
|
|
11676
11939
|
});
|
|
11677
|
-
const
|
|
11678
|
-
|
|
11679
|
-
|
|
11680
|
-
|
|
11681
|
-
|
|
11682
|
-
|
|
11940
|
+
const createParamsSnapshot = structuredClone(resolved.createParams);
|
|
11941
|
+
let gasEstimate;
|
|
11942
|
+
if (resolved.devBuy) {
|
|
11943
|
+
const account = this.walletClient?.account ?? paramsSnapshot.userAddress;
|
|
11944
|
+
const allowance = await this.readDevBuyAllowance({
|
|
11945
|
+
createParams: resolved.createParams,
|
|
11946
|
+
account: typeof account === "string" ? account : account.address,
|
|
11947
|
+
bundler: resolved.devBuy.bundler
|
|
11948
|
+
});
|
|
11949
|
+
if (allowance === void 0 || allowance >= resolved.devBuy.exactAmountIn) {
|
|
11950
|
+
const estimate = await this.estimateDevBuyGas({
|
|
11951
|
+
createParams: resolved.createParams,
|
|
11952
|
+
devBuy: resolved.devBuy,
|
|
11953
|
+
account
|
|
11954
|
+
});
|
|
11955
|
+
gasEstimate = estimate.status === "estimated" ? estimate.gas : void 0;
|
|
11956
|
+
}
|
|
11957
|
+
} else {
|
|
11958
|
+
gasEstimate = await this.resolveCreateGasEstimate({
|
|
11959
|
+
request: resolved.request,
|
|
11960
|
+
address: resolved.airlock,
|
|
11961
|
+
createParams: resolved.createParams,
|
|
11962
|
+
account: this.walletClient?.account ?? paramsSnapshot.userAddress
|
|
11963
|
+
});
|
|
11964
|
+
}
|
|
11683
11965
|
return {
|
|
11684
11966
|
createParams: resolved.createParams,
|
|
11685
11967
|
tokenAddress: resolved.prediction.tokenAddress,
|
|
11686
11968
|
poolId: resolved.prediction.poolId,
|
|
11687
11969
|
gasEstimate,
|
|
11688
|
-
|
|
11689
|
-
|
|
11970
|
+
devBuy: resolved.devBuy,
|
|
11971
|
+
execute: () => this.createMulticurve(paramsSnapshot, {
|
|
11972
|
+
_createParams: createParamsSnapshot
|
|
11690
11973
|
})
|
|
11691
11974
|
};
|
|
11692
11975
|
}
|
|
@@ -11699,38 +11982,142 @@ var DopplerFactory = class {
|
|
|
11699
11982
|
simulationAccount: this.walletClient.account,
|
|
11700
11983
|
createParams: options?._createParams
|
|
11701
11984
|
});
|
|
11702
|
-
|
|
11703
|
-
|
|
11704
|
-
|
|
11985
|
+
let approvalTransactionHash;
|
|
11986
|
+
let hash;
|
|
11987
|
+
if (resolved.devBuy) {
|
|
11988
|
+
const account2 = this.walletClient.account;
|
|
11989
|
+
if (!account2) {
|
|
11990
|
+
throw new Error("Wallet account required for write operations");
|
|
11991
|
+
}
|
|
11992
|
+
const accountAddress2 = typeof account2 === "string" ? account2 : account2.address;
|
|
11993
|
+
const [allowance, balance] = await Promise.all([
|
|
11994
|
+
this.readDevBuyAllowance({
|
|
11995
|
+
createParams: resolved.createParams,
|
|
11996
|
+
account: accountAddress2,
|
|
11997
|
+
bundler: resolved.devBuy.bundler
|
|
11998
|
+
}),
|
|
11999
|
+
resolved.createParams.numeraire === ZERO_ADDRESS ? void 0 : this.publicClient.readContract({
|
|
12000
|
+
address: resolved.createParams.numeraire,
|
|
12001
|
+
abi: erc20Abi,
|
|
12002
|
+
functionName: "balanceOf",
|
|
12003
|
+
args: [accountAddress2]
|
|
12004
|
+
})
|
|
12005
|
+
]);
|
|
12006
|
+
if (balance !== void 0 && balance < resolved.devBuy.exactAmountIn) {
|
|
12007
|
+
throw new Error(
|
|
12008
|
+
`Insufficient ERC20 balance for dev buy: required ${resolved.devBuy.exactAmountIn}, available ${balance}`
|
|
12009
|
+
);
|
|
12010
|
+
}
|
|
12011
|
+
if (allowance !== void 0 && allowance < resolved.devBuy.exactAmountIn) {
|
|
12012
|
+
const { request: approvalRequest, result: approvalSucceeded } = await this.publicClient.simulateContract({
|
|
12013
|
+
address: resolved.createParams.numeraire,
|
|
12014
|
+
abi: erc20Abi,
|
|
12015
|
+
functionName: "approve",
|
|
12016
|
+
args: [resolved.devBuy.bundler, resolved.devBuy.exactAmountIn],
|
|
12017
|
+
account: account2
|
|
12018
|
+
});
|
|
12019
|
+
if (approvalSucceeded !== true) {
|
|
12020
|
+
throw new Error("Bundler approval simulation returned false");
|
|
12021
|
+
}
|
|
12022
|
+
approvalTransactionHash = await this.walletClient.writeContract(approvalRequest);
|
|
12023
|
+
const approvalReceipt = await this.publicClient.waitForTransactionReceipt({
|
|
12024
|
+
hash: approvalTransactionHash,
|
|
12025
|
+
confirmations: 2
|
|
12026
|
+
});
|
|
12027
|
+
if (approvalReceipt.status !== "success") {
|
|
12028
|
+
throw new Error("Bundler approval transaction reverted");
|
|
12029
|
+
}
|
|
12030
|
+
const approvedAllowance = await this.readDevBuyAllowance({
|
|
12031
|
+
createParams: resolved.createParams,
|
|
12032
|
+
account: accountAddress2,
|
|
12033
|
+
bundler: resolved.devBuy.bundler
|
|
12034
|
+
});
|
|
12035
|
+
if (approvedAllowance === void 0 || approvedAllowance < resolved.devBuy.exactAmountIn) {
|
|
12036
|
+
throw new Error(
|
|
12037
|
+
"Bundler approval transaction did not provide the required allowance"
|
|
12038
|
+
);
|
|
12039
|
+
}
|
|
12040
|
+
}
|
|
12041
|
+
const { request } = await this.publicClient.simulateContract({
|
|
12042
|
+
address: resolved.devBuy.bundler,
|
|
12043
|
+
abi: bundlerAbi,
|
|
12044
|
+
functionName: "bundle",
|
|
12045
|
+
args: [
|
|
12046
|
+
{ ...resolved.createParams },
|
|
12047
|
+
{ ...resolved.devBuy.vesting },
|
|
12048
|
+
resolved.devBuy.exactAmountIn,
|
|
12049
|
+
resolved.devBuy.recipient
|
|
12050
|
+
],
|
|
12051
|
+
account: account2,
|
|
12052
|
+
value: resolved.createParams.numeraire === ZERO_ADDRESS ? resolved.devBuy.exactAmountIn : 0n
|
|
12053
|
+
});
|
|
12054
|
+
hash = await this.walletClient.writeContract(
|
|
12055
|
+
params.gas === void 0 ? request : { ...request, gas: params.gas }
|
|
12056
|
+
);
|
|
12057
|
+
} else {
|
|
12058
|
+
const gasEstimate = await this.resolveCreateGasEstimate({
|
|
12059
|
+
request: resolved.request,
|
|
12060
|
+
address: resolved.airlock,
|
|
12061
|
+
createParams: resolved.createParams,
|
|
12062
|
+
account: this.walletClient.account
|
|
12063
|
+
});
|
|
12064
|
+
const gas = params.gas ?? gasEstimate ?? DEFAULT_CREATE_GAS_LIMIT;
|
|
12065
|
+
hash = await this.walletClient.writeContract({
|
|
12066
|
+
...resolved.request,
|
|
12067
|
+
gas
|
|
12068
|
+
});
|
|
12069
|
+
}
|
|
12070
|
+
const receipt = await this.publicClient.waitForTransactionReceipt({ hash, confirmations: 2 });
|
|
12071
|
+
const account = this.walletClient.account;
|
|
12072
|
+
if (!account) {
|
|
12073
|
+
throw new Error("Wallet account required for receipt verification");
|
|
12074
|
+
}
|
|
12075
|
+
const accountAddress = typeof account === "string" ? account : account.address;
|
|
12076
|
+
const transaction = resolved.devBuy ? this.buildDevBuyTransaction({
|
|
12077
|
+
createParams: resolved.createParams,
|
|
12078
|
+
devBuy: resolved.devBuy
|
|
12079
|
+
}) : {
|
|
12080
|
+
to: resolved.airlock,
|
|
12081
|
+
data: encodeFunctionData({
|
|
12082
|
+
abi: airlockAbi,
|
|
12083
|
+
functionName: "create",
|
|
12084
|
+
args: [{ ...resolved.createParams }]
|
|
12085
|
+
}),
|
|
12086
|
+
value: 0n
|
|
12087
|
+
};
|
|
12088
|
+
const prepared = {
|
|
12089
|
+
chainId: this.chainId,
|
|
12090
|
+
account: accountAddress,
|
|
12091
|
+
airlock: resolved.airlock,
|
|
11705
12092
|
createParams: resolved.createParams,
|
|
11706
|
-
|
|
11707
|
-
|
|
11708
|
-
|
|
11709
|
-
const
|
|
11710
|
-
|
|
11711
|
-
|
|
11712
|
-
|
|
11713
|
-
|
|
11714
|
-
|
|
11715
|
-
|
|
11716
|
-
|
|
11717
|
-
|
|
11718
|
-
if (!createResult) {
|
|
11719
|
-
throw new Error(
|
|
11720
|
-
"Failed to extract token address from Create event in transaction logs"
|
|
11721
|
-
);
|
|
12093
|
+
prediction: resolved.prediction,
|
|
12094
|
+
transaction,
|
|
12095
|
+
devBuy: resolved.devBuy};
|
|
12096
|
+
const verified = verifyPreparedCreateReceipt({ prepared, receipt });
|
|
12097
|
+
const baseResult = {
|
|
12098
|
+
tokenAddress: verified.receiptIdentity.tokenAddress,
|
|
12099
|
+
poolId: resolved.prediction.poolId,
|
|
12100
|
+
transactionHash: hash,
|
|
12101
|
+
approvalTransactionHash
|
|
12102
|
+
};
|
|
12103
|
+
if (!resolved.devBuy) {
|
|
12104
|
+
return baseResult;
|
|
11722
12105
|
}
|
|
11723
|
-
|
|
11724
|
-
|
|
11725
|
-
|
|
11726
|
-
`[DopplerSDK] Simulation predicted token ${resolved.prediction.tokenAddress} but actual is ${actualTokenAddress}. This may indicate state divergence between simulation and execution.`
|
|
12106
|
+
if (!verified.devBuy) {
|
|
12107
|
+
throw new Error(
|
|
12108
|
+
"Bundler receipt verification did not return dev-buy data"
|
|
11727
12109
|
);
|
|
11728
12110
|
}
|
|
11729
|
-
|
|
11730
|
-
|
|
11731
|
-
|
|
11732
|
-
|
|
11733
|
-
|
|
12111
|
+
return {
|
|
12112
|
+
...baseResult,
|
|
12113
|
+
devBuy: {
|
|
12114
|
+
exactAmountIn: resolved.devBuy.exactAmountIn,
|
|
12115
|
+
recipient: resolved.devBuy.recipient,
|
|
12116
|
+
vesting: { ...resolved.devBuy.vesting },
|
|
12117
|
+
bundler: resolved.devBuy.bundler,
|
|
12118
|
+
amountOut: verified.devBuy.amountOut
|
|
12119
|
+
}
|
|
12120
|
+
};
|
|
11734
12121
|
}
|
|
11735
12122
|
/**
|
|
11736
12123
|
* Normalize user-provided multicurve positions and ensure they satisfy SDK constraints
|
|
@@ -12231,6 +12618,24 @@ var DopplerFactory = class {
|
|
|
12231
12618
|
);
|
|
12232
12619
|
}
|
|
12233
12620
|
}
|
|
12621
|
+
validateMulticurveDevBuy(devBuy) {
|
|
12622
|
+
if (devBuy.exactAmountIn <= 0n || devBuy.exactAmountIn > MAX_UINT128) {
|
|
12623
|
+
throw new Error("Dev buy exactAmountIn must be in the uint128 range");
|
|
12624
|
+
}
|
|
12625
|
+
if (devBuy.recipient.toLowerCase() === ZERO_ADDRESS) {
|
|
12626
|
+
throw new Error("Dev buy recipient must not be the zero address");
|
|
12627
|
+
}
|
|
12628
|
+
const { vestingDuration, cliffDuration } = devBuy.vesting;
|
|
12629
|
+
if (vestingDuration < 0n || vestingDuration > MAX_UINT64 || cliffDuration < 0n || cliffDuration > MAX_UINT64) {
|
|
12630
|
+
throw new Error("Dev buy vesting durations must be in the uint64 range");
|
|
12631
|
+
}
|
|
12632
|
+
if (vestingDuration !== 0n && vestingDuration < MIN_BUNDLER_VESTING_DURATION) {
|
|
12633
|
+
throw new Error("Dev buy vestingDuration must be at least 86400 seconds");
|
|
12634
|
+
}
|
|
12635
|
+
if (cliffDuration > vestingDuration) {
|
|
12636
|
+
throw new Error("Dev buy cliffDuration must not exceed vestingDuration");
|
|
12637
|
+
}
|
|
12638
|
+
}
|
|
12234
12639
|
/**
|
|
12235
12640
|
* Validate multicurve auction parameters
|
|
12236
12641
|
*/
|
|
@@ -12254,6 +12659,14 @@ var DopplerFactory = class {
|
|
|
12254
12659
|
throw new Error("Cannot sell more tokens than initial supply");
|
|
12255
12660
|
}
|
|
12256
12661
|
this.resolveMulticurveInitializerMode(params);
|
|
12662
|
+
if (params.devBuy) {
|
|
12663
|
+
this.validateMulticurveDevBuy(params.devBuy);
|
|
12664
|
+
if (this.resolveMulticurveInitializerMode(params).type !== "dopplerHook") {
|
|
12665
|
+
throw new Error(
|
|
12666
|
+
"Dev buys require a DopplerHookInitializer or Rehype initializer"
|
|
12667
|
+
);
|
|
12668
|
+
}
|
|
12669
|
+
}
|
|
12257
12670
|
this.validateVestingConfig(params.sale, params.vesting);
|
|
12258
12671
|
if (params.pool.beneficiaries && params.pool.beneficiaries.length > 0) {
|
|
12259
12672
|
const beneficiaries = params.pool.beneficiaries;
|
|
@@ -12298,18 +12711,6 @@ var DopplerFactory = class {
|
|
|
12298
12711
|
);
|
|
12299
12712
|
}
|
|
12300
12713
|
}
|
|
12301
|
-
/**
|
|
12302
|
-
* Get the Bundler contract address for the current chain
|
|
12303
|
-
* Used to perform atomic create + swap ("bundle") flows for static auctions
|
|
12304
|
-
*/
|
|
12305
|
-
getBundlerAddress() {
|
|
12306
|
-
const addresses = getAddresses(this.chainId);
|
|
12307
|
-
const addr = addresses.bundler;
|
|
12308
|
-
if (!addr || addr === ZERO_ADDRESS) {
|
|
12309
|
-
throw new Error("Bundler address not configured for this chain");
|
|
12310
|
-
}
|
|
12311
|
-
return addr;
|
|
12312
|
-
}
|
|
12313
12714
|
/**
|
|
12314
12715
|
* Get the appropriate migrator address based on migration config
|
|
12315
12716
|
* Allows override via ModuleAddressOverrides when provided in params.
|
|
@@ -12385,168 +12786,6 @@ var DopplerFactory = class {
|
|
|
12385
12786
|
}
|
|
12386
12787
|
// computeTicks moved to builders. No longer needed here.
|
|
12387
12788
|
// computeOptimalGamma moved to utils.
|
|
12388
|
-
// -----------------------------
|
|
12389
|
-
// Bundler helpers (Static/V3)
|
|
12390
|
-
// -----------------------------
|
|
12391
|
-
/**
|
|
12392
|
-
* Simulate a bundle with exact input on Uniswap V3 as part of create
|
|
12393
|
-
* Returns the expected output amount for the provided exact input.
|
|
12394
|
-
*/
|
|
12395
|
-
async simulateBundleExactInput(createParams, params) {
|
|
12396
|
-
const bundler = this.getBundlerAddress();
|
|
12397
|
-
const { result } = await this.publicClient.simulateContract({
|
|
12398
|
-
address: bundler,
|
|
12399
|
-
abi: bundlerAbi,
|
|
12400
|
-
functionName: "simulateBundleExactIn",
|
|
12401
|
-
args: [
|
|
12402
|
-
{ ...createParams },
|
|
12403
|
-
{
|
|
12404
|
-
tokenIn: params.tokenIn,
|
|
12405
|
-
tokenOut: params.tokenOut,
|
|
12406
|
-
amountIn: params.amountIn,
|
|
12407
|
-
fee: params.fee,
|
|
12408
|
-
sqrtPriceLimitX96: params.sqrtPriceLimitX96
|
|
12409
|
-
}
|
|
12410
|
-
]
|
|
12411
|
-
});
|
|
12412
|
-
return result;
|
|
12413
|
-
}
|
|
12414
|
-
/**
|
|
12415
|
-
* Simulate a bundle with exact output on Uniswap V3 as part of create
|
|
12416
|
-
* Returns the required input amount for the provided exact output.
|
|
12417
|
-
*/
|
|
12418
|
-
async simulateBundleExactOutput(createParams, params) {
|
|
12419
|
-
const bundler = this.getBundlerAddress();
|
|
12420
|
-
const { result } = await this.publicClient.simulateContract({
|
|
12421
|
-
address: bundler,
|
|
12422
|
-
abi: bundlerAbi,
|
|
12423
|
-
functionName: "simulateBundleExactOut",
|
|
12424
|
-
args: [
|
|
12425
|
-
{ ...createParams },
|
|
12426
|
-
{
|
|
12427
|
-
tokenIn: params.tokenIn,
|
|
12428
|
-
tokenOut: params.tokenOut,
|
|
12429
|
-
amount: params.amount,
|
|
12430
|
-
fee: params.fee,
|
|
12431
|
-
sqrtPriceLimitX96: params.sqrtPriceLimitX96
|
|
12432
|
-
}
|
|
12433
|
-
]
|
|
12434
|
-
});
|
|
12435
|
-
return result;
|
|
12436
|
-
}
|
|
12437
|
-
// Bundler helpers (Multicurve/V4)
|
|
12438
|
-
async simulateMulticurveBundleExactOut(createParams, params) {
|
|
12439
|
-
const bundler = this.getBundlerAddress();
|
|
12440
|
-
await this.ensureMulticurveBundlerSupport(bundler);
|
|
12441
|
-
const exactAmountOut = params?.exactAmountOut ?? 0n;
|
|
12442
|
-
this.ensureUint128(exactAmountOut, "exactAmountOut", { allowZero: true });
|
|
12443
|
-
const hookData = "0x";
|
|
12444
|
-
const { result } = await this.publicClient.simulateContract({
|
|
12445
|
-
address: bundler,
|
|
12446
|
-
abi: bundlerAbi,
|
|
12447
|
-
functionName: "simulateMulticurveBundleExactOut",
|
|
12448
|
-
args: [{ ...createParams }, exactAmountOut, hookData]
|
|
12449
|
-
});
|
|
12450
|
-
const { asset, poolKey, amount, gasEstimate } = this.parseMulticurveBundleResult(result);
|
|
12451
|
-
return {
|
|
12452
|
-
asset,
|
|
12453
|
-
poolKey,
|
|
12454
|
-
amountIn: amount,
|
|
12455
|
-
gasEstimate
|
|
12456
|
-
};
|
|
12457
|
-
}
|
|
12458
|
-
async simulateMulticurveBundleExactIn(createParams, params) {
|
|
12459
|
-
const bundler = this.getBundlerAddress();
|
|
12460
|
-
await this.ensureMulticurveBundlerSupport(bundler);
|
|
12461
|
-
if (params.exactAmountIn === void 0) {
|
|
12462
|
-
throw new Error(
|
|
12463
|
-
"exactAmountIn is required for multicurve bundle simulations"
|
|
12464
|
-
);
|
|
12465
|
-
}
|
|
12466
|
-
const exactAmountIn = params.exactAmountIn;
|
|
12467
|
-
this.ensureUint128(exactAmountIn, "exactAmountIn");
|
|
12468
|
-
const hookData = "0x";
|
|
12469
|
-
const { result } = await this.publicClient.simulateContract({
|
|
12470
|
-
address: bundler,
|
|
12471
|
-
abi: bundlerAbi,
|
|
12472
|
-
functionName: "simulateMulticurveBundleExactIn",
|
|
12473
|
-
args: [{ ...createParams }, exactAmountIn, hookData]
|
|
12474
|
-
});
|
|
12475
|
-
const { asset, poolKey, amount, gasEstimate } = this.parseMulticurveBundleResult(result);
|
|
12476
|
-
return {
|
|
12477
|
-
asset,
|
|
12478
|
-
poolKey,
|
|
12479
|
-
amountOut: amount,
|
|
12480
|
-
gasEstimate
|
|
12481
|
-
};
|
|
12482
|
-
}
|
|
12483
|
-
/**
|
|
12484
|
-
* Execute an atomic create + swap bundle through the Bundler
|
|
12485
|
-
* commands/inputs are Universal Router encoded values (e.g., from doppler-router)
|
|
12486
|
-
*/
|
|
12487
|
-
async bundle(createParams, commands, inputs, options) {
|
|
12488
|
-
if (!this.walletClient) {
|
|
12489
|
-
throw new Error("Wallet client required for write operations");
|
|
12490
|
-
}
|
|
12491
|
-
const bundler = this.getBundlerAddress();
|
|
12492
|
-
const { request } = await this.publicClient.simulateContract({
|
|
12493
|
-
address: bundler,
|
|
12494
|
-
abi: bundlerAbi,
|
|
12495
|
-
functionName: "bundle",
|
|
12496
|
-
args: [{ ...createParams }, commands, inputs],
|
|
12497
|
-
account: this.walletClient.account,
|
|
12498
|
-
value: options?.value ?? 0n
|
|
12499
|
-
});
|
|
12500
|
-
const gas = options?.gas ?? void 0;
|
|
12501
|
-
const tx = await this.walletClient.writeContract(
|
|
12502
|
-
gas ? { ...request, gas } : request
|
|
12503
|
-
);
|
|
12504
|
-
return tx;
|
|
12505
|
-
}
|
|
12506
|
-
ensureUint128(value, paramName, options = {}) {
|
|
12507
|
-
const { allowZero = false } = options;
|
|
12508
|
-
if (value < 0n) {
|
|
12509
|
-
throw new Error(`${paramName} cannot be negative`);
|
|
12510
|
-
}
|
|
12511
|
-
if (!allowZero && value === 0n) {
|
|
12512
|
-
throw new Error(`${paramName} must be greater than zero`);
|
|
12513
|
-
}
|
|
12514
|
-
if (value > MAX_UINT1282) {
|
|
12515
|
-
throw new Error(`${paramName} exceeds uint128 range`);
|
|
12516
|
-
}
|
|
12517
|
-
}
|
|
12518
|
-
parseMulticurveBundleResult(result) {
|
|
12519
|
-
let asset;
|
|
12520
|
-
let poolKeyRaw;
|
|
12521
|
-
let amount;
|
|
12522
|
-
let gasEstimate;
|
|
12523
|
-
if (Array.isArray(result)) {
|
|
12524
|
-
if (result.length < 4) {
|
|
12525
|
-
throw new Error("Unexpected multicurve bundle simulation result shape");
|
|
12526
|
-
}
|
|
12527
|
-
asset = result[0];
|
|
12528
|
-
poolKeyRaw = result[1];
|
|
12529
|
-
amount = result[2];
|
|
12530
|
-
gasEstimate = result[3];
|
|
12531
|
-
} else if (result && typeof result === "object") {
|
|
12532
|
-
const obj = result;
|
|
12533
|
-
asset = obj.asset;
|
|
12534
|
-
poolKeyRaw = obj.poolKey;
|
|
12535
|
-
amount = obj.amountIn ?? obj.amountOut ?? obj.amount;
|
|
12536
|
-
gasEstimate = obj.gasEstimate;
|
|
12537
|
-
} else {
|
|
12538
|
-
throw new Error("Unexpected multicurve bundle simulation result format");
|
|
12539
|
-
}
|
|
12540
|
-
if (asset === void 0 || poolKeyRaw === void 0 || amount === void 0 || gasEstimate === void 0) {
|
|
12541
|
-
throw new Error("Incomplete multicurve bundle simulation result");
|
|
12542
|
-
}
|
|
12543
|
-
return {
|
|
12544
|
-
asset,
|
|
12545
|
-
poolKey: this.normalizePoolKey(poolKeyRaw),
|
|
12546
|
-
amount,
|
|
12547
|
-
gasEstimate
|
|
12548
|
-
};
|
|
12549
|
-
}
|
|
12550
12789
|
normalizePoolKey(value) {
|
|
12551
12790
|
if (Array.isArray(value)) {
|
|
12552
12791
|
const [currency0, currency1, feeRaw, tickSpacingRaw, hooks] = value;
|
|
@@ -12916,7 +13155,7 @@ var DopplerFactory = class {
|
|
|
12916
13155
|
const addresses = getAddresses(this.chainId);
|
|
12917
13156
|
const initializerMode = this.resolveMulticurveInitializerMode(params);
|
|
12918
13157
|
let hookAddress;
|
|
12919
|
-
if (initializerMode.type === "
|
|
13158
|
+
if (initializerMode.type === "dopplerHook") {
|
|
12920
13159
|
hookAddress = params.modules?.dopplerHookInitializer ?? addresses.dopplerHookInitializer ?? ZERO_ADDRESS;
|
|
12921
13160
|
if (hookAddress === ZERO_ADDRESS) {
|
|
12922
13161
|
throw new Error("DopplerHookInitializer address not configured");
|
|
@@ -12945,7 +13184,7 @@ var DopplerFactory = class {
|
|
|
12945
13184
|
const poolKey = {
|
|
12946
13185
|
currency0: tokenIsCurrency0 ? tokenAddress : numeraire,
|
|
12947
13186
|
currency1: tokenIsCurrency0 ? numeraire : tokenAddress,
|
|
12948
|
-
fee: initializerMode.type === "decay" || initializerMode.type === "
|
|
13187
|
+
fee: initializerMode.type === "decay" || initializerMode.type === "dopplerHook" && initializerMode.hookConfig ? DYNAMIC_FEE_FLAG : params.pool.fee,
|
|
12949
13188
|
tickSpacing: params.pool.tickSpacing,
|
|
12950
13189
|
hooks: hookAddress
|
|
12951
13190
|
};
|
|
@@ -12955,30 +13194,7 @@ var DopplerFactory = class {
|
|
|
12955
13194
|
tokenIsCurrency0
|
|
12956
13195
|
};
|
|
12957
13196
|
}
|
|
12958
|
-
async ensureMulticurveBundlerSupport(bundler) {
|
|
12959
|
-
if (this.multicurveBundlerSupport.get(bundler)) {
|
|
12960
|
-
return;
|
|
12961
|
-
}
|
|
12962
|
-
const client = this.publicClient;
|
|
12963
|
-
if (!client || typeof client.getBytecode !== "function") {
|
|
12964
|
-
this.multicurveBundlerSupport.set(bundler, true);
|
|
12965
|
-
return;
|
|
12966
|
-
}
|
|
12967
|
-
const bytecode = await client.getBytecode({ address: bundler });
|
|
12968
|
-
const supports = Boolean(
|
|
12969
|
-
bytecode && MULTICURVE_BUNDLER_SELECTORS.every(
|
|
12970
|
-
(selector) => bytecode.includes(selector.slice(2))
|
|
12971
|
-
)
|
|
12972
|
-
);
|
|
12973
|
-
if (!supports) {
|
|
12974
|
-
throw new Error(
|
|
12975
|
-
`Bundler at ${bundler} does not support multicurve bundling. Ensure the Doppler Bundler has been upgraded and update chain addresses.`
|
|
12976
|
-
);
|
|
12977
|
-
}
|
|
12978
|
-
this.multicurveBundlerSupport.set(bundler, true);
|
|
12979
|
-
}
|
|
12980
13197
|
};
|
|
12981
|
-
var MULTICURVE_BUNDLER_SELECTORS = ["0xe2e9faa1", "0x07087b06"];
|
|
12982
13198
|
function parseAirlockPoolOrHook(rawAssetData, context = "Airlock getAssetData") {
|
|
12983
13199
|
const rawPoolOrHook = readContractResultField(
|
|
12984
13200
|
rawAssetData,
|
|
@@ -13404,12 +13620,12 @@ var DynamicAuction = class {
|
|
|
13404
13620
|
const isToken0 = poolKey.currency0 !== zeroAddress;
|
|
13405
13621
|
const tokenAddress = isToken0 ? poolKey.currency0 : poolKey.currency1;
|
|
13406
13622
|
const numeraireAddress = isToken0 ? poolKey.currency1 : poolKey.currency0;
|
|
13407
|
-
const
|
|
13623
|
+
const poolId2 = computePoolId(poolKey);
|
|
13408
13624
|
return {
|
|
13409
13625
|
hookAddress: this.hookAddress,
|
|
13410
13626
|
tokenAddress,
|
|
13411
13627
|
numeraireAddress,
|
|
13412
|
-
poolId,
|
|
13628
|
+
poolId: poolId2,
|
|
13413
13629
|
currentEpoch,
|
|
13414
13630
|
totalProceeds: state.totalProceeds,
|
|
13415
13631
|
totalTokensSold: state.totalTokensSold,
|
|
@@ -13732,14 +13948,14 @@ async function collectMulticurveFees({
|
|
|
13732
13948
|
addresses
|
|
13733
13949
|
}) {
|
|
13734
13950
|
if (state.status === 2 /* Locked */) {
|
|
13735
|
-
const
|
|
13951
|
+
const poolId2 = computePoolId(state.poolKey);
|
|
13736
13952
|
const collectFeesAbi = initializerAddress === addresses.dopplerHookInitializer ? dopplerHookInitializerAbi : v4MulticurveInitializerAbi;
|
|
13737
13953
|
return collectFeesFromContract({
|
|
13738
13954
|
client,
|
|
13739
13955
|
walletClient,
|
|
13740
13956
|
contractAddress: initializerAddress,
|
|
13741
13957
|
abi: collectFeesAbi,
|
|
13742
|
-
poolId
|
|
13958
|
+
poolId: poolId2
|
|
13743
13959
|
});
|
|
13744
13960
|
}
|
|
13745
13961
|
throw new Error("Multicurve pool is not locked or was migrated");
|
|
@@ -13749,13 +13965,13 @@ async function collectFeesFromContract({
|
|
|
13749
13965
|
walletClient,
|
|
13750
13966
|
contractAddress,
|
|
13751
13967
|
abi,
|
|
13752
|
-
poolId
|
|
13968
|
+
poolId: poolId2
|
|
13753
13969
|
}) {
|
|
13754
13970
|
const { request, result } = await client.simulateContract({
|
|
13755
13971
|
address: contractAddress,
|
|
13756
13972
|
abi,
|
|
13757
13973
|
functionName: "collectFees",
|
|
13758
|
-
args: [
|
|
13974
|
+
args: [poolId2],
|
|
13759
13975
|
account: walletClient.account
|
|
13760
13976
|
});
|
|
13761
13977
|
const hash = await walletClient.writeContract(request);
|
|
@@ -13771,13 +13987,13 @@ async function getMulticurveFeeSchedule(client, state) {
|
|
|
13771
13987
|
if (state.poolKey.fee !== DYNAMIC_FEE_FLAG) {
|
|
13772
13988
|
return null;
|
|
13773
13989
|
}
|
|
13774
|
-
const
|
|
13990
|
+
const poolId2 = computePoolId(state.poolKey);
|
|
13775
13991
|
try {
|
|
13776
13992
|
const scheduleData = await client.readContract({
|
|
13777
13993
|
address: state.poolKey.hooks,
|
|
13778
13994
|
abi: decayMulticurveInitializerHookAbi,
|
|
13779
13995
|
functionName: "getFeeScheduleOf",
|
|
13780
|
-
args: [
|
|
13996
|
+
args: [poolId2]
|
|
13781
13997
|
});
|
|
13782
13998
|
return {
|
|
13783
13999
|
startingTime: Number(readStructField(scheduleData, "startingTime", 0)),
|
|
@@ -13853,14 +14069,14 @@ var PENDING_FEE_CALL_ORDER = [
|
|
|
13853
14069
|
"getLastCumulatedFees1"
|
|
13854
14070
|
];
|
|
13855
14071
|
var PENDING_FEE_PREVIEW_CALL_COUNT = PENDING_FEE_CALL_ORDER.length;
|
|
13856
|
-
function createPendingFeePreviewCalls(target,
|
|
14072
|
+
function createPendingFeePreviewCalls(target, poolId2, beneficiary) {
|
|
13857
14073
|
return PENDING_FEE_CALL_ORDER.map((functionName) => ({
|
|
13858
14074
|
target,
|
|
13859
14075
|
allowFailure: true,
|
|
13860
14076
|
callData: encodeFunctionData({
|
|
13861
14077
|
abi: feeClaimsInitializerAbi,
|
|
13862
14078
|
functionName,
|
|
13863
|
-
args: functionName === "collectFees" || functionName === "getCumulatedFees0" || functionName === "getCumulatedFees1" ? [
|
|
14079
|
+
args: functionName === "collectFees" || functionName === "getCumulatedFees0" || functionName === "getCumulatedFees1" ? [poolId2] : [poolId2, beneficiary]
|
|
13864
14080
|
})
|
|
13865
14081
|
}));
|
|
13866
14082
|
}
|
|
@@ -14244,10 +14460,10 @@ async function getPendingFeeBreakdownForMulticurveTokens({
|
|
|
14244
14460
|
});
|
|
14245
14461
|
}
|
|
14246
14462
|
function createPendingFeeBreakdownPreviewPlan(poolContext, beneficiary) {
|
|
14247
|
-
const
|
|
14463
|
+
const poolId2 = computePoolId(poolContext.state.poolKey);
|
|
14248
14464
|
const poolCalls = createPendingFeePreviewCalls(
|
|
14249
14465
|
poolContext.initializerAddress,
|
|
14250
|
-
|
|
14466
|
+
poolId2,
|
|
14251
14467
|
beneficiary
|
|
14252
14468
|
);
|
|
14253
14469
|
if (poolContext.initializerKind !== "dopplerHook" || poolContext.dopplerHookAddress === zeroAddress) {
|
|
@@ -14260,26 +14476,26 @@ function createPendingFeeBreakdownPreviewPlan(poolContext, beneficiary) {
|
|
|
14260
14476
|
return {
|
|
14261
14477
|
kind: "rehype",
|
|
14262
14478
|
poolContext,
|
|
14263
|
-
poolId,
|
|
14479
|
+
poolId: poolId2,
|
|
14264
14480
|
calls: [
|
|
14265
14481
|
...poolCalls,
|
|
14266
|
-
createRehypeCapabilityProbe(poolContext.dopplerHookAddress,
|
|
14482
|
+
createRehypeCapabilityProbe(poolContext.dopplerHookAddress, poolId2),
|
|
14267
14483
|
...createPendingFeePreviewCalls(
|
|
14268
14484
|
poolContext.dopplerHookAddress,
|
|
14269
|
-
|
|
14485
|
+
poolId2,
|
|
14270
14486
|
beneficiary
|
|
14271
14487
|
)
|
|
14272
14488
|
]
|
|
14273
14489
|
};
|
|
14274
14490
|
}
|
|
14275
|
-
function createRehypeCapabilityProbe(target,
|
|
14491
|
+
function createRehypeCapabilityProbe(target, poolId2) {
|
|
14276
14492
|
return {
|
|
14277
14493
|
target,
|
|
14278
14494
|
allowFailure: true,
|
|
14279
14495
|
callData: encodeFunctionData({
|
|
14280
14496
|
abi: feesManagerAbi,
|
|
14281
14497
|
functionName: "getPoolKey",
|
|
14282
|
-
args: [
|
|
14498
|
+
args: [poolId2]
|
|
14283
14499
|
})
|
|
14284
14500
|
};
|
|
14285
14501
|
}
|
|
@@ -14441,7 +14657,7 @@ var RehypeDopplerHookInitializer = class {
|
|
|
14441
14657
|
* The fee amounts are newly collected pool fees, not necessarily the caller's
|
|
14442
14658
|
* beneficiary payout.
|
|
14443
14659
|
*/
|
|
14444
|
-
async claimFees(
|
|
14660
|
+
async claimFees(poolId2, options) {
|
|
14445
14661
|
const walletClient = this.requireWalletClient(
|
|
14446
14662
|
"Wallet client required to claim rehype beneficiary fees"
|
|
14447
14663
|
);
|
|
@@ -14449,23 +14665,25 @@ var RehypeDopplerHookInitializer = class {
|
|
|
14449
14665
|
address: this.hookAddress,
|
|
14450
14666
|
abi: rehypeFeesManagerAbi,
|
|
14451
14667
|
functionName: "collectFees",
|
|
14452
|
-
args: [
|
|
14668
|
+
args: [poolId2],
|
|
14453
14669
|
account: walletClient.account
|
|
14454
14670
|
});
|
|
14455
|
-
const hash = await walletClient.writeContract(
|
|
14671
|
+
const hash = await walletClient.writeContract(
|
|
14672
|
+
options?.gas === void 0 ? request : { ...request, gas: options.gas }
|
|
14673
|
+
);
|
|
14456
14674
|
await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });
|
|
14457
14675
|
const [fees0, fees1] = result;
|
|
14458
14676
|
return { fees0, fees1, transactionHash: hash };
|
|
14459
14677
|
}
|
|
14460
|
-
async getPendingFees(
|
|
14678
|
+
async getPendingFees(poolId2, beneficiary) {
|
|
14461
14679
|
const calls = createPendingFeePreviewCalls(
|
|
14462
14680
|
this.hookAddress,
|
|
14463
|
-
|
|
14681
|
+
poolId2,
|
|
14464
14682
|
beneficiary
|
|
14465
14683
|
);
|
|
14466
14684
|
return calculatePendingFees(await callAggregate3(this.rpc, calls));
|
|
14467
14685
|
}
|
|
14468
|
-
async updateBeneficiary(
|
|
14686
|
+
async updateBeneficiary(poolId2, newBeneficiary) {
|
|
14469
14687
|
if (newBeneficiary.toLowerCase() === ZERO_ADDRESS) {
|
|
14470
14688
|
throw new Error(
|
|
14471
14689
|
"Rehype beneficiary cannot be updated to the zero address"
|
|
@@ -14478,7 +14696,7 @@ var RehypeDopplerHookInitializer = class {
|
|
|
14478
14696
|
address: this.hookAddress,
|
|
14479
14697
|
abi: feesManagerAbi,
|
|
14480
14698
|
functionName: "updateBeneficiary",
|
|
14481
|
-
args: [
|
|
14699
|
+
args: [poolId2, newBeneficiary],
|
|
14482
14700
|
account: walletClient.account
|
|
14483
14701
|
});
|
|
14484
14702
|
const hash = await walletClient.writeContract(request);
|
|
@@ -14501,48 +14719,82 @@ var RehypeDopplerHookInitializer = class {
|
|
|
14501
14719
|
const [fees0, fees1] = result;
|
|
14502
14720
|
return { fees0, fees1, transactionHash: hash };
|
|
14503
14721
|
}
|
|
14504
|
-
|
|
14722
|
+
/**
|
|
14723
|
+
* Replace a pool's complete fee distribution matrix.
|
|
14724
|
+
*
|
|
14725
|
+
* The connected wallet must be the pool's configured fee distribution
|
|
14726
|
+
* controller (`buybackDst`). The asset-fee allocations and numeraire-fee
|
|
14727
|
+
* allocations must each sum to WAD.
|
|
14728
|
+
*
|
|
14729
|
+
* @returns The confirmed transaction hash.
|
|
14730
|
+
*/
|
|
14731
|
+
async setFeeDistribution(poolId2, feeDistributionInfo) {
|
|
14732
|
+
const walletClient = this.requireWalletClient(
|
|
14733
|
+
"Wallet client required to set rehype fee distribution"
|
|
14734
|
+
);
|
|
14735
|
+
const { request } = await this.rpc.simulateContract({
|
|
14736
|
+
address: this.hookAddress,
|
|
14737
|
+
abi: rehypeDopplerHookInitializerAbi,
|
|
14738
|
+
functionName: "setFeeDistribution",
|
|
14739
|
+
args: [
|
|
14740
|
+
poolId2,
|
|
14741
|
+
feeDistributionInfo.assetFeesToAssetBuybackWad,
|
|
14742
|
+
feeDistributionInfo.assetFeesToNumeraireBuybackWad,
|
|
14743
|
+
feeDistributionInfo.assetFeesToBeneficiaryWad,
|
|
14744
|
+
feeDistributionInfo.assetFeesToLpWad,
|
|
14745
|
+
feeDistributionInfo.numeraireFeesToAssetBuybackWad,
|
|
14746
|
+
feeDistributionInfo.numeraireFeesToNumeraireBuybackWad,
|
|
14747
|
+
feeDistributionInfo.numeraireFeesToBeneficiaryWad,
|
|
14748
|
+
feeDistributionInfo.numeraireFeesToLpWad
|
|
14749
|
+
],
|
|
14750
|
+
account: walletClient.account
|
|
14751
|
+
});
|
|
14752
|
+
const hash = await walletClient.writeContract(request);
|
|
14753
|
+
await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });
|
|
14754
|
+
return { transactionHash: hash };
|
|
14755
|
+
}
|
|
14756
|
+
async getFeeDistributionInfo(poolId2) {
|
|
14505
14757
|
const result = await this.rpc.readContract({
|
|
14506
14758
|
address: this.hookAddress,
|
|
14507
14759
|
abi: rehypeDopplerHookInitializerAbi,
|
|
14508
14760
|
functionName: "getFeeDistributionInfo",
|
|
14509
|
-
args: [
|
|
14761
|
+
args: [poolId2]
|
|
14510
14762
|
});
|
|
14511
14763
|
return normalizeRehypeFeeDistributionInfo(result);
|
|
14512
14764
|
}
|
|
14513
|
-
async getFeeRoutingMode(
|
|
14765
|
+
async getFeeRoutingMode(poolId2) {
|
|
14514
14766
|
const mode = await this.rpc.readContract({
|
|
14515
14767
|
address: this.hookAddress,
|
|
14516
14768
|
abi: rehypeDopplerHookInitializerAbi,
|
|
14517
14769
|
functionName: "getFeeRoutingMode",
|
|
14518
|
-
args: [
|
|
14770
|
+
args: [poolId2]
|
|
14519
14771
|
});
|
|
14520
14772
|
return Number(mode);
|
|
14521
14773
|
}
|
|
14522
|
-
async getFeeSchedule(
|
|
14774
|
+
async getFeeSchedule(poolId2) {
|
|
14523
14775
|
const result = await this.rpc.readContract({
|
|
14524
14776
|
address: this.hookAddress,
|
|
14525
14777
|
abi: rehypeDopplerHookInitializerAbi,
|
|
14526
14778
|
functionName: "getFeeSchedule",
|
|
14527
|
-
args: [
|
|
14779
|
+
args: [poolId2]
|
|
14528
14780
|
});
|
|
14529
14781
|
return normalizeRehypeFeeSchedule(result);
|
|
14530
14782
|
}
|
|
14531
|
-
async getHookFees(
|
|
14783
|
+
async getHookFees(poolId2) {
|
|
14532
14784
|
const result = await this.rpc.readContract({
|
|
14533
14785
|
address: this.hookAddress,
|
|
14534
14786
|
abi: rehypeDopplerHookInitializerAbi,
|
|
14535
14787
|
functionName: "getHookFees",
|
|
14536
|
-
args: [
|
|
14788
|
+
args: [poolId2]
|
|
14537
14789
|
});
|
|
14538
14790
|
return normalizeRehypeHookFees(result);
|
|
14539
14791
|
}
|
|
14540
|
-
async getPoolInfo(
|
|
14792
|
+
async getPoolInfo(poolId2) {
|
|
14541
14793
|
const result = await this.rpc.readContract({
|
|
14542
14794
|
address: this.hookAddress,
|
|
14543
14795
|
abi: rehypeDopplerHookInitializerAbi,
|
|
14544
14796
|
functionName: "getPoolInfo",
|
|
14545
|
-
args: [
|
|
14797
|
+
args: [poolId2]
|
|
14546
14798
|
});
|
|
14547
14799
|
return normalizeRehypePoolInfo(result);
|
|
14548
14800
|
}
|
|
@@ -14609,7 +14861,7 @@ var RehypeDopplerHookMigrator = class {
|
|
|
14609
14861
|
const [fees0, fees1] = result;
|
|
14610
14862
|
return { fees0, fees1, transactionHash: hash };
|
|
14611
14863
|
}
|
|
14612
|
-
async setFeeDistribution(
|
|
14864
|
+
async setFeeDistribution(poolId2, feeDistributionInfo) {
|
|
14613
14865
|
if (!this.walletClient) {
|
|
14614
14866
|
throw new Error("Wallet client required to set rehype fee distribution");
|
|
14615
14867
|
}
|
|
@@ -14618,7 +14870,7 @@ var RehypeDopplerHookMigrator = class {
|
|
|
14618
14870
|
abi: rehypeDopplerHookMigratorAbi,
|
|
14619
14871
|
functionName: "setFeeDistribution",
|
|
14620
14872
|
args: [
|
|
14621
|
-
|
|
14873
|
+
poolId2,
|
|
14622
14874
|
feeDistributionInfo.assetFeesToAssetBuybackWad,
|
|
14623
14875
|
feeDistributionInfo.assetFeesToNumeraireBuybackWad,
|
|
14624
14876
|
feeDistributionInfo.assetFeesToBeneficiaryWad,
|
|
@@ -14634,48 +14886,48 @@ var RehypeDopplerHookMigrator = class {
|
|
|
14634
14886
|
await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });
|
|
14635
14887
|
return hash;
|
|
14636
14888
|
}
|
|
14637
|
-
async getFeeDistributionInfo(
|
|
14889
|
+
async getFeeDistributionInfo(poolId2) {
|
|
14638
14890
|
const result = await this.rpc.readContract({
|
|
14639
14891
|
address: this.hookAddress,
|
|
14640
14892
|
abi: rehypeDopplerHookMigratorAbi,
|
|
14641
14893
|
functionName: "getFeeDistributionInfo",
|
|
14642
|
-
args: [
|
|
14894
|
+
args: [poolId2]
|
|
14643
14895
|
});
|
|
14644
14896
|
return normalizeRehypeFeeDistributionInfo(result);
|
|
14645
14897
|
}
|
|
14646
|
-
async getFeeRoutingMode(
|
|
14898
|
+
async getFeeRoutingMode(poolId2) {
|
|
14647
14899
|
const mode = await this.rpc.readContract({
|
|
14648
14900
|
address: this.hookAddress,
|
|
14649
14901
|
abi: rehypeDopplerHookMigratorAbi,
|
|
14650
14902
|
functionName: "getFeeRoutingMode",
|
|
14651
|
-
args: [
|
|
14903
|
+
args: [poolId2]
|
|
14652
14904
|
});
|
|
14653
14905
|
return Number(mode);
|
|
14654
14906
|
}
|
|
14655
|
-
async getHookFees(
|
|
14907
|
+
async getHookFees(poolId2) {
|
|
14656
14908
|
const result = await this.rpc.readContract({
|
|
14657
14909
|
address: this.hookAddress,
|
|
14658
14910
|
abi: rehypeDopplerHookMigratorAbi,
|
|
14659
14911
|
functionName: "getHookFees",
|
|
14660
|
-
args: [
|
|
14912
|
+
args: [poolId2]
|
|
14661
14913
|
});
|
|
14662
14914
|
return normalizeRehypeHookFees(result);
|
|
14663
14915
|
}
|
|
14664
|
-
async getPoolInfo(
|
|
14916
|
+
async getPoolInfo(poolId2) {
|
|
14665
14917
|
const result = await this.rpc.readContract({
|
|
14666
14918
|
address: this.hookAddress,
|
|
14667
14919
|
abi: rehypeDopplerHookMigratorAbi,
|
|
14668
14920
|
functionName: "getPoolInfo",
|
|
14669
|
-
args: [
|
|
14921
|
+
args: [poolId2]
|
|
14670
14922
|
});
|
|
14671
14923
|
return normalizeRehypePoolInfo(result);
|
|
14672
14924
|
}
|
|
14673
|
-
async getPosition(
|
|
14925
|
+
async getPosition(poolId2) {
|
|
14674
14926
|
const result = await this.rpc.readContract({
|
|
14675
14927
|
address: this.hookAddress,
|
|
14676
14928
|
abi: rehypeDopplerHookMigratorAbi,
|
|
14677
14929
|
functionName: "getPosition",
|
|
14678
|
-
args: [
|
|
14930
|
+
args: [poolId2]
|
|
14679
14931
|
});
|
|
14680
14932
|
return normalizeRehypePosition(result);
|
|
14681
14933
|
}
|
|
@@ -18597,6 +18849,112 @@ var TopUpDistributor = class {
|
|
|
18597
18849
|
}
|
|
18598
18850
|
};
|
|
18599
18851
|
|
|
18852
|
+
// src/evm/entities/Bundler.ts
|
|
18853
|
+
var Bundler = class {
|
|
18854
|
+
publicClient;
|
|
18855
|
+
walletClient;
|
|
18856
|
+
bundlerAddress;
|
|
18857
|
+
constructor(publicClient, walletClient, bundlerAddress) {
|
|
18858
|
+
this.publicClient = publicClient;
|
|
18859
|
+
this.walletClient = walletClient;
|
|
18860
|
+
this.bundlerAddress = bundlerAddress;
|
|
18861
|
+
}
|
|
18862
|
+
get rpc() {
|
|
18863
|
+
return this.publicClient;
|
|
18864
|
+
}
|
|
18865
|
+
/** Returns the Bundler contract address used by this client. */
|
|
18866
|
+
getAddress() {
|
|
18867
|
+
return this.bundlerAddress;
|
|
18868
|
+
}
|
|
18869
|
+
/**
|
|
18870
|
+
* Reads the vesting position for an asset.
|
|
18871
|
+
*
|
|
18872
|
+
* @param asset Token whose Bundler position should be read.
|
|
18873
|
+
*/
|
|
18874
|
+
async getVesting(asset) {
|
|
18875
|
+
const result = await this.rpc.readContract({
|
|
18876
|
+
address: this.bundlerAddress,
|
|
18877
|
+
abi: bundlerAbi,
|
|
18878
|
+
functionName: "vestingOf",
|
|
18879
|
+
args: [asset]
|
|
18880
|
+
});
|
|
18881
|
+
const values = result;
|
|
18882
|
+
return {
|
|
18883
|
+
recipient: values[0],
|
|
18884
|
+
permissionlessClaim: values[1],
|
|
18885
|
+
start: values[2],
|
|
18886
|
+
cliffDuration: values[3],
|
|
18887
|
+
vestingDuration: values[4],
|
|
18888
|
+
totalAmount: values[5],
|
|
18889
|
+
claimedAmount: values[6]
|
|
18890
|
+
};
|
|
18891
|
+
}
|
|
18892
|
+
/**
|
|
18893
|
+
* Returns the amount currently claimable for an asset.
|
|
18894
|
+
*
|
|
18895
|
+
* @param asset Token whose claimable amount should be read.
|
|
18896
|
+
*/
|
|
18897
|
+
async getClaimable(asset) {
|
|
18898
|
+
return await this.rpc.readContract({
|
|
18899
|
+
address: this.bundlerAddress,
|
|
18900
|
+
abi: bundlerAbi,
|
|
18901
|
+
functionName: "claimable",
|
|
18902
|
+
args: [asset]
|
|
18903
|
+
});
|
|
18904
|
+
}
|
|
18905
|
+
/**
|
|
18906
|
+
* Simulates a claim and returns both the claimable amount and write request.
|
|
18907
|
+
*
|
|
18908
|
+
* The caller defaults to the configured wallet account. Pass `account` when
|
|
18909
|
+
* using a read-only SDK instance. For restricted positions, the caller must
|
|
18910
|
+
* be the recorded recipient.
|
|
18911
|
+
*
|
|
18912
|
+
* @param asset Token to claim.
|
|
18913
|
+
* @param account Account that will trigger the claim.
|
|
18914
|
+
*/
|
|
18915
|
+
async simulateClaim(asset, account) {
|
|
18916
|
+
const resolvedAccount = account ?? this.walletClient?.account;
|
|
18917
|
+
if (!resolvedAccount) {
|
|
18918
|
+
throw new Error(
|
|
18919
|
+
"An account is required to simulate a Bundler vesting claim"
|
|
18920
|
+
);
|
|
18921
|
+
}
|
|
18922
|
+
const { request, result } = await this.rpc.simulateContract({
|
|
18923
|
+
address: this.bundlerAddress,
|
|
18924
|
+
abi: bundlerAbi,
|
|
18925
|
+
functionName: "claim",
|
|
18926
|
+
args: [asset],
|
|
18927
|
+
account: resolvedAccount
|
|
18928
|
+
});
|
|
18929
|
+
return {
|
|
18930
|
+
amount: result,
|
|
18931
|
+
request
|
|
18932
|
+
};
|
|
18933
|
+
}
|
|
18934
|
+
/**
|
|
18935
|
+
* Claims the currently vested amount to the position's recorded recipient.
|
|
18936
|
+
*
|
|
18937
|
+
* Requires a configured wallet client. Permissionless callers may trigger a
|
|
18938
|
+
* claim but cannot redirect its proceeds.
|
|
18939
|
+
*
|
|
18940
|
+
* @param asset Token to claim.
|
|
18941
|
+
* @param options Optional transaction gas override.
|
|
18942
|
+
* @returns Submitted transaction hash.
|
|
18943
|
+
*/
|
|
18944
|
+
async claim(asset, options) {
|
|
18945
|
+
if (!this.walletClient) {
|
|
18946
|
+
throw new Error("Wallet client required for write operations");
|
|
18947
|
+
}
|
|
18948
|
+
const { request } = await this.simulateClaim(
|
|
18949
|
+
asset,
|
|
18950
|
+
this.walletClient.account
|
|
18951
|
+
);
|
|
18952
|
+
return await this.walletClient.writeContract(
|
|
18953
|
+
options?.gas === void 0 ? request : { ...request, gas: options.gas }
|
|
18954
|
+
);
|
|
18955
|
+
}
|
|
18956
|
+
};
|
|
18957
|
+
|
|
18600
18958
|
// src/evm/builders/StaticAuctionBuilder.ts
|
|
18601
18959
|
var StaticAuctionBuilder = class _StaticAuctionBuilder {
|
|
18602
18960
|
token;
|
|
@@ -19324,6 +19682,7 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19324
19682
|
schedule;
|
|
19325
19683
|
dopplerHook;
|
|
19326
19684
|
vesting;
|
|
19685
|
+
devBuy;
|
|
19327
19686
|
governance;
|
|
19328
19687
|
migration;
|
|
19329
19688
|
integrator;
|
|
@@ -19331,6 +19690,7 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19331
19690
|
salt;
|
|
19332
19691
|
moduleAddresses;
|
|
19333
19692
|
gasLimit;
|
|
19693
|
+
feeDistributionControllerAddress;
|
|
19334
19694
|
// Stored from withCurves() for graduationMarketCap conversion in build()
|
|
19335
19695
|
numerairePrice;
|
|
19336
19696
|
tokenDecimals;
|
|
@@ -19576,9 +19936,19 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19576
19936
|
"Cannot specify both graduationMarketCap and farTick. Use one or the other."
|
|
19577
19937
|
);
|
|
19578
19938
|
}
|
|
19579
|
-
|
|
19580
|
-
|
|
19581
|
-
|
|
19939
|
+
if (params.buybackDestination !== void 0 && this.feeDistributionControllerAddress !== void 0) {
|
|
19940
|
+
throw new Error(
|
|
19941
|
+
"Rehype buybackDestination and withFeeDistributionController are mutually exclusive"
|
|
19942
|
+
);
|
|
19943
|
+
}
|
|
19944
|
+
if (params.buybackDestination !== void 0 || this.feeDistributionControllerAddress !== void 0) {
|
|
19945
|
+
normalizeRehypeDopplerHookInitializerConfig(
|
|
19946
|
+
params,
|
|
19947
|
+
this.feeDistributionControllerAddress
|
|
19948
|
+
);
|
|
19949
|
+
}
|
|
19950
|
+
this.dopplerHook = params;
|
|
19951
|
+
this.initializer = { type: "rehype", config: params };
|
|
19582
19952
|
return this;
|
|
19583
19953
|
}
|
|
19584
19954
|
/** @deprecated Use withRehypeDopplerHookInitializer instead. */
|
|
@@ -19611,6 +19981,18 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19611
19981
|
};
|
|
19612
19982
|
return this;
|
|
19613
19983
|
}
|
|
19984
|
+
/**
|
|
19985
|
+
* Configures an exact-input purchase executed atomically with market creation.
|
|
19986
|
+
*
|
|
19987
|
+
* Omit `vesting` for direct delivery to `recipient`; when present, Bundler
|
|
19988
|
+
* holds the output and releases it under that schedule. This is independent
|
|
19989
|
+
* from `withVesting`, which configures token allocation vesting. Passing
|
|
19990
|
+
* `undefined` clears the dev buy.
|
|
19991
|
+
*/
|
|
19992
|
+
withDevBuy(params) {
|
|
19993
|
+
this.devBuy = params ? normalizeBuilderDevBuy(params) : void 0;
|
|
19994
|
+
return this;
|
|
19995
|
+
}
|
|
19614
19996
|
parseStartTimeSeconds(value, label) {
|
|
19615
19997
|
let startTimeSeconds;
|
|
19616
19998
|
if (value instanceof Date) {
|
|
@@ -19711,6 +20093,24 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19711
20093
|
this.governance = params;
|
|
19712
20094
|
return this;
|
|
19713
20095
|
}
|
|
20096
|
+
/**
|
|
20097
|
+
* Configure the address authorized to update a Rehype pool's fee
|
|
20098
|
+
* distribution matrix.
|
|
20099
|
+
*
|
|
20100
|
+
* This sets the on-chain `buybackDst`, which also receives direct-buyback
|
|
20101
|
+
* proceeds and legacy empty-beneficiary fees. Every Rehype initializer
|
|
20102
|
+
* requires either this method or `buybackDestination`; they configure the
|
|
20103
|
+
* same field and cannot be used together.
|
|
20104
|
+
*/
|
|
20105
|
+
withFeeDistributionController(address) {
|
|
20106
|
+
if (this.dopplerHook?.buybackDestination !== void 0) {
|
|
20107
|
+
throw new Error(
|
|
20108
|
+
"Rehype buybackDestination and withFeeDistributionController are mutually exclusive"
|
|
20109
|
+
);
|
|
20110
|
+
}
|
|
20111
|
+
this.feeDistributionControllerAddress = address;
|
|
20112
|
+
return this;
|
|
20113
|
+
}
|
|
19714
20114
|
withMigration(migration) {
|
|
19715
20115
|
this.migration = migration;
|
|
19716
20116
|
return this;
|
|
@@ -19744,6 +20144,9 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19744
20144
|
withAirlock(address) {
|
|
19745
20145
|
return this.overrideModule("airlock", address);
|
|
19746
20146
|
}
|
|
20147
|
+
withBundler(address) {
|
|
20148
|
+
return this.overrideModule("bundler", address);
|
|
20149
|
+
}
|
|
19747
20150
|
withV4MulticurveInitializer(address) {
|
|
19748
20151
|
this.assertCanSetInitializer("standard");
|
|
19749
20152
|
this.initializer = { type: "standard" };
|
|
@@ -19865,7 +20268,24 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19865
20268
|
);
|
|
19866
20269
|
}
|
|
19867
20270
|
}
|
|
20271
|
+
if (this.feeDistributionControllerAddress !== void 0 && this.dopplerHook === void 0) {
|
|
20272
|
+
throw new Error(
|
|
20273
|
+
"withFeeDistributionController requires a Rehype initializer configuration"
|
|
20274
|
+
);
|
|
20275
|
+
}
|
|
20276
|
+
const governance = this.governance ?? (isNoOpEnabledChain(this.chainId) ? { type: "noOp" } : { type: "default" });
|
|
20277
|
+
if (governance.type === "launchpad" && !isLaunchpadEnabledChain(this.chainId)) {
|
|
20278
|
+
throw new Error(
|
|
20279
|
+
`Launchpad governance is not supported on chain ${this.chainId}. Use a supported chain or a different governance type.`
|
|
20280
|
+
);
|
|
20281
|
+
}
|
|
19868
20282
|
let dopplerHook = this.dopplerHook;
|
|
20283
|
+
if (dopplerHook) {
|
|
20284
|
+
dopplerHook = normalizeRehypeDopplerHookInitializerConfig(
|
|
20285
|
+
dopplerHook,
|
|
20286
|
+
this.feeDistributionControllerAddress
|
|
20287
|
+
);
|
|
20288
|
+
}
|
|
19869
20289
|
if (dopplerHook?.graduationMarketCap !== void 0) {
|
|
19870
20290
|
const numerairePrice = dopplerHook.numerairePrice ?? this.numerairePrice;
|
|
19871
20291
|
if (!numerairePrice) {
|
|
@@ -19925,14 +20345,13 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19925
20345
|
);
|
|
19926
20346
|
}
|
|
19927
20347
|
}
|
|
19928
|
-
|
|
19929
|
-
dopplerHook = initializer.type === "rehype" ? initializer.config : void 0;
|
|
19930
|
-
const governance = this.governance ?? (isNoOpEnabledChain(this.chainId) ? { type: "noOp" } : { type: "default" });
|
|
19931
|
-
if (governance.type === "launchpad" && !isLaunchpadEnabledChain(this.chainId)) {
|
|
20348
|
+
if (this.devBuy && initializer.type !== "dopplerHookInitializer" && initializer.type !== "dopplerHook" && initializer.type !== "rehype") {
|
|
19932
20349
|
throw new Error(
|
|
19933
|
-
`
|
|
20350
|
+
`Dev buys require a DopplerHookInitializer or Rehype initializer; '${initializer.type}' is not supported`
|
|
19934
20351
|
);
|
|
19935
20352
|
}
|
|
20353
|
+
const schedule = initializer.type === "scheduled" ? { startTime: initializer.startTime } : void 0;
|
|
20354
|
+
dopplerHook = initializer.type === "rehype" ? initializer.config : void 0;
|
|
19936
20355
|
return {
|
|
19937
20356
|
token: this.token,
|
|
19938
20357
|
sale: this.sale,
|
|
@@ -19941,6 +20360,10 @@ var MulticurveBuilder = class _MulticurveBuilder {
|
|
|
19941
20360
|
schedule,
|
|
19942
20361
|
dopplerHook,
|
|
19943
20362
|
vesting: this.vesting,
|
|
20363
|
+
devBuy: this.devBuy ? {
|
|
20364
|
+
...this.devBuy,
|
|
20365
|
+
vesting: { ...this.devBuy.vesting }
|
|
20366
|
+
} : void 0,
|
|
19944
20367
|
governance,
|
|
19945
20368
|
migration: this.migration,
|
|
19946
20369
|
integrator: this.integrator ?? ZERO_ADDRESS,
|
|
@@ -20329,6 +20752,7 @@ var DopplerSDK = class {
|
|
|
20329
20752
|
_factory;
|
|
20330
20753
|
_quoter;
|
|
20331
20754
|
_topUpDistributor;
|
|
20755
|
+
_bundler;
|
|
20332
20756
|
constructor(config) {
|
|
20333
20757
|
this.publicClient = config.publicClient;
|
|
20334
20758
|
this.walletClient = config.walletClient;
|
|
@@ -20381,6 +20805,34 @@ var DopplerSDK = class {
|
|
|
20381
20805
|
resolvedTopUpDistributor
|
|
20382
20806
|
);
|
|
20383
20807
|
}
|
|
20808
|
+
/**
|
|
20809
|
+
* Gets the Bundler client configured for this chain.
|
|
20810
|
+
*
|
|
20811
|
+
* Throws when the chain has no Bundler deployment. Use `getBundler(address)`
|
|
20812
|
+
* for custom deployments.
|
|
20813
|
+
*/
|
|
20814
|
+
get bundler() {
|
|
20815
|
+
if (!this._bundler) {
|
|
20816
|
+
this._bundler = this.getBundler();
|
|
20817
|
+
}
|
|
20818
|
+
return this._bundler;
|
|
20819
|
+
}
|
|
20820
|
+
/**
|
|
20821
|
+
* Creates a Bundler client using the chain default or an explicit address.
|
|
20822
|
+
*
|
|
20823
|
+
* Read methods work without a wallet client; claims require one.
|
|
20824
|
+
*
|
|
20825
|
+
* @param bundlerAddress Optional custom Bundler deployment.
|
|
20826
|
+
*/
|
|
20827
|
+
getBundler(bundlerAddress) {
|
|
20828
|
+
const resolvedBundler = bundlerAddress ?? getAddresses(this.chainId).bundler;
|
|
20829
|
+
if (!resolvedBundler || resolvedBundler === ZERO_ADDRESS) {
|
|
20830
|
+
throw new Error(
|
|
20831
|
+
"Bundler address is not configured on this chain. Pass bundlerAddress to getBundler()."
|
|
20832
|
+
);
|
|
20833
|
+
}
|
|
20834
|
+
return new Bundler(this.publicClient, this.walletClient, resolvedBundler);
|
|
20835
|
+
}
|
|
20384
20836
|
/**
|
|
20385
20837
|
* Get a StaticAuction instance for interacting with a static auction pool
|
|
20386
20838
|
* @param poolAddress The address of the Uniswap V3 pool
|
|
@@ -20599,6 +21051,6 @@ var DopplerSDK = class {
|
|
|
20599
21051
|
// src/evm/index.ts
|
|
20600
21052
|
var VERSION = "1.0.0";
|
|
20601
21053
|
|
|
20602
|
-
export { ADDRESSES, AirlockCreateReceiptError, BASIS_POINTS, CHAIN_IDS, DAY_SECONDS, DEAD_ADDRESS, DECAY_MAX_START_FEE, DEFAULT_AIRLOCK_BENEFICIARY_SHARES, DEFAULT_AUCTION_DURATION, DEFAULT_EPOCH_LENGTH, DEFAULT_LOCK_DURATION, DEFAULT_MULTICURVE_LOWER_TICKS, DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES, DEFAULT_MULTICURVE_NUM_POSITIONS, DEFAULT_MULTICURVE_UPPER_TICKS, DEFAULT_OPENING_AUCTION_DURATION, DEFAULT_OPENING_AUCTION_FEE, DEFAULT_OPENING_AUCTION_INCENTIVE_SHARE_BPS, DEFAULT_OPENING_AUCTION_MIN_ACCEPTABLE_TICK_TOKEN0, DEFAULT_OPENING_AUCTION_MIN_ACCEPTABLE_TICK_TOKEN1, DEFAULT_OPENING_AUCTION_MIN_LIQUIDITY, DEFAULT_OPENING_AUCTION_SHARE_TO_AUCTION_BPS, DEFAULT_OPENING_DOPPLER_DURATION, DEFAULT_OPENING_DOPPLER_EPOCH_LENGTH, DEFAULT_OPENING_DOPPLER_FEE, DEFAULT_OPENING_DOPPLER_NUM_PD_SLUGS, DEFAULT_OPENING_DOPPLER_TICK_SPACING, DEFAULT_PD_SLUGS, DEFAULT_V3_END_TICK, DEFAULT_V3_FEE, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V3_INITIAL_SUPPLY, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, DEFAULT_V3_NUM_TOKENS_TO_SELL, DEFAULT_V3_PRE_MINT, DEFAULT_V3_START_TICK, DEFAULT_V3_VESTING_DURATION, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_YEARLY_MINT_RATE, derc2080_default as DERC2080Bytecode, derc20_default as DERC20Bytecode, DOPPLER_FLAGS, DOPPLER_MAX_TICK_SPACING, DYNAMIC_FEE_FLAG, Derc20, Derc20V2, doppler_default as DopplerBytecode, DopplerDN404, dopplerDN404BaseSepolia_default as DopplerDN404BaseSepoliaBytecode, dopplerDN404_default as DopplerDN404Bytecode, DopplerERC20V1, DopplerFactory, DopplerSDK, DynamicAuction, DynamicAuctionBuilder, Eth, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, INT24_MAX, INT24_MIN, LAUNCHPAD_ENABLED_CHAIN_IDS, LockablePoolStatus, MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, MulticurveBuilder, MulticurveFees, MulticurvePool, NO_OP_ENABLED_CHAIN_IDS, OPENING_AUCTION_FLAGS, OPENING_AUCTION_PHASE_ACTIVE, OPENING_AUCTION_PHASE_CLOSED, OPENING_AUCTION_PHASE_NOT_STARTED, OPENING_AUCTION_PHASE_SETTLED, OPENING_AUCTION_STATUS_ACTIVE, OPENING_AUCTION_STATUS_DOPPLER_ACTIVE, OPENING_AUCTION_STATUS_EXITED, OPENING_AUCTION_STATUS_UNINITIALIZED, OpeningAuction, OpeningAuctionBidManager, OpeningAuctionBuilder, openingAuction_default as OpeningAuctionBytecode, OpeningAuctionLifecycle, OpeningAuctionPhase, OpeningAuctionPositionManager, OpeningAuctionStatus, Q96, Quoter, RehypeDopplerHook, RehypeDopplerHookInitializer, RehypeDopplerHookMigrator, RehypeFeeRoutingMode, SECONDS_PER_DAY, SECONDS_PER_YEAR, SUPPORTED_CHAIN_IDS, stateView_default as StateViewBytecode, StaticAuction, StaticAuctionBuilder, TICK_SPACINGS, TopUpDistributor, V3_FEE_TIERS, V4_MAX_FEE, VALID_FEE_TIERS, VERSION, WAD, ZERO_ADDRESS, airlockAbi, applyTickOffsets, bundlerAbi, calculateFDV, calculateGamma, calculateMarketCap, calculateTickRange, calculateTokensToSell, computeOptimalGamma, computePoolId, createAirlockBeneficiary, decayMulticurveInitializerHookAbi, decodeBalanceDelta, derc20Abi, derc20V2Abi, dopplerDN404Abi, dopplerERC20V1Abi, dopplerHookAbi, dopplerHookInitializerAbi, dopplerLensAbi, encodeRehypeDopplerHookInitializerData, encodeRehypeDopplerHookMigratorCalldata, estimatePriceAtEpoch, estimateSlippage, feeClaimsInitializerAbi, feesManagerAbi, formatTickAsPrice, getAddresses, getAirlockBeneficiary, getAirlockOwner, getAmount0ForLiquidity, getAmount1ForLiquidity, getLiquidityForAmount0, getLiquidityForAmount1, getMaxLiquiditySafeMulticurveTickUpper, getMaxTickRounded, getNearestUsableTick, getSqrtRatioAtTick, getTickAtSqrtRatio, isLaunchpadEnabledChain, isNoOpEnabledChain, isSupportedChainId, isToken0Expected, isToken1, lockableUniswapV3InitializerAbi, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, mineTokenAddress, normalizeBeneficiaries, normalizePoolKey, normalizeRehypeDopplerHookInitializerConfig, openingAuctionAbi, openingAuctionInitializerAbi, openingAuctionPositionManagerAbi, parseAirlockCreateReceipt, poolManagerAbi, priceToSqrtPriceX96, priceToTick, quoterV2Abi, ratioToTick, rehypeDopplerHookAbi, rehypeDopplerHookInitializerAbi, rehypeDopplerHookMigratorAbi, resolveGasEstimate, sortBeneficiaries, sqrtPriceX96ToPrice, streamableFeesLockerAbi, streamableFeesLockerV2Abi, tickToMarketCap, tickToPrice, tokenPriceToRatio, topUpDistributorAbi, uniswapV2Router02Abi, uniswapV3InitializerAbi, uniswapV3PoolAbi, uniswapV4InitializerAbi, v2MigratorAbi, v3MigratorAbi, v4MigratorAbi, v4MulticurveInitializerAbi, v4MulticurveMigratorAbi, v4QuoterAbi, validateMarketCapParameters, verifyPreparedCreateExecution, verifyPreparedCreateReceipt, weth9Abi };
|
|
21054
|
+
export { ADDRESSES, AirlockCreateReceiptError, BASIS_POINTS, Bundler, CHAIN_IDS, DAY_SECONDS, DEAD_ADDRESS, DECAY_MAX_START_FEE, DEFAULT_AIRLOCK_BENEFICIARY_SHARES, DEFAULT_AUCTION_DURATION, DEFAULT_EPOCH_LENGTH, DEFAULT_LOCK_DURATION, DEFAULT_MULTICURVE_LOWER_TICKS, DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES, DEFAULT_MULTICURVE_NUM_POSITIONS, DEFAULT_MULTICURVE_UPPER_TICKS, DEFAULT_OPENING_AUCTION_DURATION, DEFAULT_OPENING_AUCTION_FEE, DEFAULT_OPENING_AUCTION_INCENTIVE_SHARE_BPS, DEFAULT_OPENING_AUCTION_MIN_ACCEPTABLE_TICK_TOKEN0, DEFAULT_OPENING_AUCTION_MIN_ACCEPTABLE_TICK_TOKEN1, DEFAULT_OPENING_AUCTION_MIN_LIQUIDITY, DEFAULT_OPENING_AUCTION_SHARE_TO_AUCTION_BPS, DEFAULT_OPENING_DOPPLER_DURATION, DEFAULT_OPENING_DOPPLER_EPOCH_LENGTH, DEFAULT_OPENING_DOPPLER_FEE, DEFAULT_OPENING_DOPPLER_NUM_PD_SLUGS, DEFAULT_OPENING_DOPPLER_TICK_SPACING, DEFAULT_PD_SLUGS, DEFAULT_V3_END_TICK, DEFAULT_V3_FEE, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V3_INITIAL_SUPPLY, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, DEFAULT_V3_NUM_TOKENS_TO_SELL, DEFAULT_V3_PRE_MINT, DEFAULT_V3_START_TICK, DEFAULT_V3_VESTING_DURATION, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_YEARLY_MINT_RATE, derc2080_default as DERC2080Bytecode, derc20_default as DERC20Bytecode, DOPPLER_FLAGS, DOPPLER_MAX_TICK_SPACING, DYNAMIC_FEE_FLAG, Derc20, Derc20V2, doppler_default as DopplerBytecode, DopplerDN404, dopplerDN404BaseSepolia_default as DopplerDN404BaseSepoliaBytecode, dopplerDN404_default as DopplerDN404Bytecode, DopplerERC20V1, DopplerFactory, DopplerSDK, DynamicAuction, DynamicAuctionBuilder, Eth, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, INT24_MAX, INT24_MIN, LAUNCHPAD_ENABLED_CHAIN_IDS, LockablePoolStatus, MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, MulticurveBuilder, MulticurveFees, MulticurvePool, NO_OP_ENABLED_CHAIN_IDS, OPENING_AUCTION_FLAGS, OPENING_AUCTION_PHASE_ACTIVE, OPENING_AUCTION_PHASE_CLOSED, OPENING_AUCTION_PHASE_NOT_STARTED, OPENING_AUCTION_PHASE_SETTLED, OPENING_AUCTION_STATUS_ACTIVE, OPENING_AUCTION_STATUS_DOPPLER_ACTIVE, OPENING_AUCTION_STATUS_EXITED, OPENING_AUCTION_STATUS_UNINITIALIZED, OpeningAuction, OpeningAuctionBidManager, OpeningAuctionBuilder, openingAuction_default as OpeningAuctionBytecode, OpeningAuctionLifecycle, OpeningAuctionPhase, OpeningAuctionPositionManager, OpeningAuctionStatus, Q96, Quoter, RehypeDopplerHook, RehypeDopplerHookInitializer, RehypeDopplerHookMigrator, RehypeFeeRoutingMode, SECONDS_PER_DAY, SECONDS_PER_YEAR, SUPPORTED_CHAIN_IDS, stateView_default as StateViewBytecode, StaticAuction, StaticAuctionBuilder, TICK_SPACINGS, TopUpDistributor, V3_FEE_TIERS, V4_MAX_FEE, VALID_FEE_TIERS, VERSION, WAD, ZERO_ADDRESS, airlockAbi, applyTickOffsets, bundlerAbi, calculateFDV, calculateGamma, calculateMarketCap, calculateTickRange, calculateTokensToSell, computeOptimalGamma, computePoolId, createAirlockBeneficiary, decayMulticurveInitializerHookAbi, decodeBalanceDelta, derc20Abi, derc20V2Abi, dopplerDN404Abi, dopplerERC20V1Abi, dopplerHookAbi, dopplerHookInitializerAbi, dopplerLensAbi, encodeRehypeDopplerHookInitializerData, encodeRehypeDopplerHookMigratorCalldata, estimatePriceAtEpoch, estimateSlippage, feeClaimsInitializerAbi, feesManagerAbi, formatTickAsPrice, getAddresses, getAirlockBeneficiary, getAirlockOwner, getAmount0ForLiquidity, getAmount1ForLiquidity, getLiquidityForAmount0, getLiquidityForAmount1, getMaxLiquiditySafeMulticurveTickUpper, getMaxTickRounded, getNearestUsableTick, getSqrtRatioAtTick, getTickAtSqrtRatio, isLaunchpadEnabledChain, isNoOpEnabledChain, isSupportedChainId, isToken0Expected, isToken1, lockableUniswapV3InitializerAbi, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, mineTokenAddress, normalizeBeneficiaries, normalizePoolKey, normalizeRehypeDopplerHookInitializerConfig, openingAuctionAbi, openingAuctionInitializerAbi, openingAuctionPositionManagerAbi, parseAirlockCreateReceipt, poolManagerAbi, priceToSqrtPriceX96, priceToTick, quoterV2Abi, ratioToTick, rehypeDopplerHookAbi, rehypeDopplerHookInitializerAbi, rehypeDopplerHookMigratorAbi, resolveGasEstimate, sortBeneficiaries, sqrtPriceX96ToPrice, streamableFeesLockerAbi, streamableFeesLockerV2Abi, tickToMarketCap, tickToPrice, tokenPriceToRatio, topUpDistributorAbi, uniswapV2Router02Abi, uniswapV3InitializerAbi, uniswapV3PoolAbi, uniswapV4InitializerAbi, v2MigratorAbi, v3MigratorAbi, v4MigratorAbi, v4MulticurveInitializerAbi, v4MulticurveMigratorAbi, v4QuoterAbi, validateMarketCapParameters, verifyPreparedCreateExecution, verifyPreparedCreateReceipt, weth9Abi };
|
|
20603
21055
|
//# sourceMappingURL=index.js.map
|
|
20604
21056
|
//# sourceMappingURL=index.js.map
|