@panoptic-eng/sdk 1.0.37 → 1.0.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cow/index.d.ts +4 -5
- package/dist/cow/index.js +3 -3
- package/dist/cow/types.d.ts +3 -2
- package/dist/{cow-aX6of9TS.js → cow-DB8siv6M.js} +2 -2
- package/dist/{cow-aX6of9TS.js.map → cow-DB8siv6M.js.map} +1 -1
- package/dist/deployments.d.ts +3 -2
- package/dist/deployments.d.ts.map +1 -1
- package/dist/deployments.js +4 -0
- package/dist/deployments.js.map +1 -1
- package/dist/{position-C8rkkKhi.js → getTrackedPositionIds-zYPIs5dt.js} +1086 -34
- package/dist/getTrackedPositionIds-zYPIs5dt.js.map +1 -0
- package/dist/hypoVault/vaultDisplayNames.d.ts +2 -0
- package/dist/hypoVault/vaultDisplayNames.js +4 -0
- package/dist/{index-CURXeKNy.d.ts → index-BhEBx83X.d.ts} +405 -351
- package/dist/index-BhEBx83X.d.ts.map +1 -0
- package/dist/index-Bo9tHtD7.d.ts +1901 -0
- package/dist/index-Bo9tHtD7.d.ts.map +1 -0
- package/dist/{index-Cp-nCeV2.d.ts → index-CttjEZ-S.d.ts} +3 -4
- package/dist/index-CttjEZ-S.d.ts.map +1 -0
- package/dist/{index-Zvu-rJpV.d.ts → index-DktZq9Kb.d.ts} +2 -2
- package/dist/{index-Zvu-rJpV.d.ts.map → index-DktZq9Kb.d.ts.map} +1 -1
- package/dist/index.d.ts +159 -39
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +319 -66
- package/dist/index.js.map +1 -1
- package/dist/{irm-DnM96-X4.js → irm-ChkvYphK.js} +3 -318
- package/dist/irm-ChkvYphK.js.map +1 -0
- package/dist/{irm-CmgC1Mqi.d.ts → irm-D2WTHtuo.d.ts} +3 -30
- package/dist/{irm-CmgC1Mqi.d.ts.map → irm-D2WTHtuo.d.ts.map} +1 -1
- package/dist/irm-D5plRhpB.d.ts +32 -0
- package/dist/irm-D5plRhpB.d.ts.map +1 -0
- package/dist/panoptic/v2/greeks/index.d.ts +3 -2
- package/dist/panoptic/v2/index.d.ts +7 -8
- package/dist/panoptic/v2/index.js +7 -6
- package/dist/panoptic/v2/react-public.d.ts +27 -11
- package/dist/panoptic/v2/react-public.d.ts.map +1 -1
- package/dist/panoptic/v2/react-public.js +48 -8
- package/dist/panoptic/v2/react-public.js.map +1 -1
- package/dist/panoptic/v2/types/index.d.ts +3 -0
- package/dist/panoptic/v2/types/index.js +0 -0
- package/dist/quote-DeHNUR0Z.d.ts +52 -0
- package/dist/quote-DeHNUR0Z.d.ts.map +1 -0
- package/dist/{router-CS86ptMu.js → router-BCUJkY8j.js} +3 -3
- package/dist/{router-CS86ptMu.js.map → router-BCUJkY8j.js.map} +1 -1
- package/dist/{router-DcoU2KmV.js → router-tCRa0ekE.js} +2 -2
- package/dist/{router-DcoU2KmV.js.map → router-tCRa0ekE.js.map} +1 -1
- package/dist/src-CRAtPwWk.js +321 -0
- package/dist/src-CRAtPwWk.js.map +1 -0
- package/dist/test/index.d.ts +2 -2
- package/dist/test/index.d.ts.map +1 -1
- package/dist/transactionFees-CVi2TrJh.js +175 -0
- package/dist/transactionFees-CVi2TrJh.js.map +1 -0
- package/dist/transactionFees-DzDyt50k.d.ts +63 -0
- package/dist/transactionFees-DzDyt50k.d.ts.map +1 -0
- package/dist/{types-D_jcYss-.d.ts → types-Cad5m4Td.d.ts} +3 -5
- package/dist/types-Cad5m4Td.d.ts.map +1 -0
- package/dist/{types-BHdnurYr.d.ts → types-DM0nxlZr.d.ts} +2 -2
- package/dist/{types-BHdnurYr.d.ts.map → types-DM0nxlZr.d.ts.map} +1 -1
- package/dist/uniswap/index.d.ts +4 -5
- package/dist/uniswap/index.d.ts.map +1 -1
- package/dist/uniswap/index.js +4 -4
- package/dist/{v2-D0dEatKb.js → v2-BxtzpUnV.js} +3267 -2675
- package/dist/v2-BxtzpUnV.js.map +1 -0
- package/dist/vault-transaction-fees.d.ts +2 -0
- package/dist/vault-transaction-fees.js +3 -0
- package/dist/vaultDisplayNames-CKpz51Hu.js +0 -0
- package/dist/vaultDisplayNames-Q6htUcch.d.ts +2 -0
- package/dist/{writes-AupZCK4M.js → writes-D3bj1wth.js} +326 -1292
- package/dist/writes-D3bj1wth.js.map +1 -0
- package/package.json +5 -1
- package/dist/index-CURXeKNy.d.ts.map +0 -1
- package/dist/index-Cp-nCeV2.d.ts.map +0 -1
- package/dist/irm-DnM96-X4.js.map +0 -1
- package/dist/position-BqIgubs5.d.ts +0 -199
- package/dist/position-BqIgubs5.d.ts.map +0 -1
- package/dist/position-C8rkkKhi.js.map +0 -1
- package/dist/quote-BxQkPBRg.d.ts +0 -718
- package/dist/quote-BxQkPBRg.d.ts.map +0 -1
- package/dist/simulation-zM6-YUaw.d.ts +0 -258
- package/dist/simulation-zM6-YUaw.d.ts.map +0 -1
- package/dist/tx-CbDQ58Io.d.ts +0 -367
- package/dist/tx-CbDQ58Io.d.ts.map +0 -1
- package/dist/types-D_jcYss-.d.ts.map +0 -1
- package/dist/v2-D0dEatKb.js.map +0 -1
- package/dist/writes-AupZCK4M.js.map +0 -1
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
//#region ../deployments/src/chainDeployments.data.json
|
|
2
|
+
var _1 = {
|
|
3
|
+
"chainId": 1,
|
|
4
|
+
"infrastructure": {
|
|
5
|
+
"uniswapV3Factory": "0x1F98431c8aD98523631AE4a59f267346ea31F984",
|
|
6
|
+
"poolManager": "0x000000000004444c5dc75cB358380D2e3dE08A90",
|
|
7
|
+
"stateView": "0x7ffe42c4a5deea5b0fec41c94c136cf115597227"
|
|
8
|
+
},
|
|
9
|
+
"hypovault": {
|
|
10
|
+
"core": {
|
|
11
|
+
"hypoVaultImplementation": "0xF16714665955DBd0361D997eFc50fe391D96E8D0",
|
|
12
|
+
"factory": "0xd5049B2647de57141dE7F65E5124707B99A452A3",
|
|
13
|
+
"accountant": "0x65aA902AE3135658587FFC36ED51B61c927114e1",
|
|
14
|
+
"rolesAuthority": "0xb952D345c413Ddb7850173422bAe4968e0330598",
|
|
15
|
+
"collateralTrackerDecoderAndSanitizer": "0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6"
|
|
16
|
+
},
|
|
17
|
+
"vaults": {
|
|
18
|
+
"wethPlpVault": "0xd4e2c720a760049cc4151bcf61e3a9348db9cd92",
|
|
19
|
+
"usdcPlpVault": "0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18"
|
|
20
|
+
},
|
|
21
|
+
"managers": {
|
|
22
|
+
"wethPlpVaultManager": "0xB6Fc48e658C9B1a7dbdFA51A5E153ab60BB2e04d",
|
|
23
|
+
"usdcPlpVaultManager": "0x2ce65016366ef7320078e0758D58Cf1038bc7C4e"
|
|
24
|
+
},
|
|
25
|
+
"turnkeySigners": {
|
|
26
|
+
"wethPlpVaultManager": "0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F",
|
|
27
|
+
"usdcPlpVaultManager": "0x3c1c79d0cfc316Ba959194c89696a8382d7d283b"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"panoptic": {
|
|
31
|
+
"pool": {
|
|
32
|
+
"version": "v4",
|
|
33
|
+
"panopticPool": "0x00000000563b70d704f4c6675a5f6ac989fbae13",
|
|
34
|
+
"collateralTracker0": "0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7",
|
|
35
|
+
"collateralTracker1": "0x12bF31955522BAC337D93e1bC0a39F68D8BDa216"
|
|
36
|
+
},
|
|
37
|
+
"additionalPools": { "ethUsdc5bpsV3": {
|
|
38
|
+
"version": "v3",
|
|
39
|
+
"panopticPool": "0x00000000009C7B687e833559e34503f64d7ed7c4",
|
|
40
|
+
"collateralTracker0": "0x3CCdA7d5E841d6543D90BcEc20b36a724C184DE9",
|
|
41
|
+
"collateralTracker1": "0x69E9f9e44E5F52237493b980dd7306198C64A4E4"
|
|
42
|
+
} },
|
|
43
|
+
"v2": {
|
|
44
|
+
"semiFungiblePositionManagerV4": "0x000000000000047534b9E1D528ED997169865a64",
|
|
45
|
+
"semiFungiblePositionManagerV3": "0x000000000000031d296bBA22f188472157eEb01f",
|
|
46
|
+
"builderFactory": "0x00000000000008D41F2cd5bF144F61cEB3661F98",
|
|
47
|
+
"riskEngine": "0x0000000000000e673aECBDB5f5fE5DFAf4a8e9Ac",
|
|
48
|
+
"panopticPoolImplementation": "0x00000000000010bb6695dAAC60D0515c0A01a948",
|
|
49
|
+
"collateralTrackerImplementation": "0x0000000000002038055dB8f2B2Fd356598935C51",
|
|
50
|
+
"panopticFactoryV4": "0x0000000000000c51d0f8cf4bd9adE7191372a625",
|
|
51
|
+
"panopticFactoryV3": "0x0000000000000aDC9A108591e718F2aee963a2a7",
|
|
52
|
+
"panopticHelper": "0x0000000000000000000000000000000000000000",
|
|
53
|
+
"panopticMath": "0x000000000000301F5BC0171C75967b8e78a92b10",
|
|
54
|
+
"panopticQuery": "0x0000000000000e1aE9c66C1c3B0A547D23389C93",
|
|
55
|
+
"interactionHelper": "0x00000000000040ae7CD505F4E0e3F34195D8c08C"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"riskEngines": [
|
|
59
|
+
"0x000000000000075e29cdaa9cb640a69e148ca7da",
|
|
60
|
+
"0x0000000000000fe1e261f66ce2f44def4f5ae0cb",
|
|
61
|
+
"0x0000000000000e673aECBDB5f5fE5DFAf4a8e9Ac"
|
|
62
|
+
],
|
|
63
|
+
"markets": { "ethUsdc30bps": {
|
|
64
|
+
"currency0": "0x0000000000000000000000000000000000000000",
|
|
65
|
+
"currency1": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
|
|
66
|
+
"fee": 3e3,
|
|
67
|
+
"tickSpacing": 60,
|
|
68
|
+
"poolId": "0x3C08AE4977F78D"
|
|
69
|
+
} },
|
|
70
|
+
"subgraphs": {
|
|
71
|
+
"hypovault": "https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-mainnet/prod/gn",
|
|
72
|
+
"panoptic": "https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/v2_prod/gn"
|
|
73
|
+
},
|
|
74
|
+
"sfpmSwap": {
|
|
75
|
+
"version": "v3",
|
|
76
|
+
"sfpm": "0x00000000000005E4693aDc8Ec0f12D686f728198",
|
|
77
|
+
"poolAddress": "0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640",
|
|
78
|
+
"poolId": "2824133844976349",
|
|
79
|
+
"fee": 500,
|
|
80
|
+
"weth": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
|
|
81
|
+
}
|
|
82
|
+
};
|
|
83
|
+
var _8453 = {
|
|
84
|
+
"chainId": 8453,
|
|
85
|
+
"infrastructure": {
|
|
86
|
+
"uniswapV3Factory": "0x33128a8fC17869897dcE68Ed026d694621f6FDfD",
|
|
87
|
+
"poolManager": "0x498581fF718922c3f8e6A244956aF099B2652b2b",
|
|
88
|
+
"stateView": "0xA3c0c9b65baD0b08107Aa264b0f3dB444b867A71"
|
|
89
|
+
},
|
|
90
|
+
"hypovault": {
|
|
91
|
+
"core": {
|
|
92
|
+
"hypoVaultImplementation": "0xec311aE06486ad44Ba782133b502A34aCE0f479E",
|
|
93
|
+
"factory": "0x9bE53b169a41030f1710A9B82e9eA6413f14D12E",
|
|
94
|
+
"accountant": "0x345cA3407942f9d175c9eA8B90e83A36F570f852",
|
|
95
|
+
"rolesAuthority": "0x278D37CaBFFB4B72D2866E30fEFE08aef773E0B6",
|
|
96
|
+
"collateralTrackerDecoderAndSanitizer": "0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b"
|
|
97
|
+
},
|
|
98
|
+
"vaults": {
|
|
99
|
+
"wethPlpVault": "0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04",
|
|
100
|
+
"usdcPlpVault": "0xb452af299c565D04B05E601efF2840e000C922f1"
|
|
101
|
+
},
|
|
102
|
+
"managers": {
|
|
103
|
+
"wethPlpVaultManager": "0x2a4923456c79E9ebD10F5Bf5305a5C742bBc1D7C",
|
|
104
|
+
"usdcPlpVaultManager": "0xdd6E2406a044582463CFE9F0C774870eAf4A310B"
|
|
105
|
+
},
|
|
106
|
+
"turnkeySigners": {
|
|
107
|
+
"wethPlpVaultManager": "0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F",
|
|
108
|
+
"usdcPlpVaultManager": "0x3c1c79d0cfc316Ba959194c89696a8382d7d283b"
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"panoptic": {
|
|
112
|
+
"pool": {
|
|
113
|
+
"version": "v4",
|
|
114
|
+
"panopticPool": "0xB50e8bb68f5855DA742f4579274902a20454174a",
|
|
115
|
+
"collateralTracker0": "0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869",
|
|
116
|
+
"collateralTracker1": "0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2"
|
|
117
|
+
},
|
|
118
|
+
"v2": {
|
|
119
|
+
"semiFungiblePositionManagerV4": "0x8dcAa08cF298F8b4830FAf56d47930981AdE33af",
|
|
120
|
+
"semiFungiblePositionManagerV3": "0xFB1c06B491305d618bb8a7a368C6e50c001C153A",
|
|
121
|
+
"builderFactory": "0x6d26E916a18d522f7DdA2a26d9E1645564ccDcA5",
|
|
122
|
+
"riskEngine": "0x8bbce8b1eb64118cfe6c1eab0afe13b80ea41481",
|
|
123
|
+
"panopticPoolImplementation": "0x5BA68a018fF149c38ec52D181Dd24aBabE9a07DB",
|
|
124
|
+
"collateralTrackerImplementation": "0x34B3a4e4F14f292575ECe3EF67886C4598af459f",
|
|
125
|
+
"panopticFactoryV4": "0x9ac0317fcd124aff0b5429beb8de17020bc45f9a",
|
|
126
|
+
"panopticFactoryV3": "0x687f616d68c483a7223e6922f59aef7452e26c1d",
|
|
127
|
+
"panopticHelper": "0x0000000000000000000000000000000000000000",
|
|
128
|
+
"panopticMath": "0x6d21699192f5aF112C87e53b32ff846782afF407",
|
|
129
|
+
"panopticQuery": "0xd2586E1bbdd1169F597F3A370117EdF7372A7350",
|
|
130
|
+
"interactionHelper": "0x643d8DD5372FD6c71f8fAbCce4Eb8857704F3E15"
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"riskEngines": ["0x8bbce8b1eb64118cfe6c1eab0afe13b80ea41481"],
|
|
134
|
+
"markets": { "ethUsdc5bps": {
|
|
135
|
+
"currency0": "0x0000000000000000000000000000000000000000",
|
|
136
|
+
"currency1": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
|
|
137
|
+
"fee": 500,
|
|
138
|
+
"tickSpacing": 10,
|
|
139
|
+
"poolId": "0x96d4b53a38337a5733179751781178a2613306063c511b78cd02684739288c0a"
|
|
140
|
+
} },
|
|
141
|
+
"subgraphs": {
|
|
142
|
+
"hypovault": "https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-base/prod/gn",
|
|
143
|
+
"panoptic": "https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-base/v2_prod/gn"
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
var _11155111 = {
|
|
147
|
+
"chainId": 11155111,
|
|
148
|
+
"infrastructure": {
|
|
149
|
+
"uniswapV3Factory": "0x0227628f3F023bb0B980b67D528571c95c6DaC1c",
|
|
150
|
+
"poolManager": "0xE03A1074c86CFeDd5C142C4F04F1a1536e203543",
|
|
151
|
+
"stateView": "0xE1Dd9c3fA50EDB962E442f60DfBc432e24537E4C"
|
|
152
|
+
},
|
|
153
|
+
"hypovault": {
|
|
154
|
+
"core": {
|
|
155
|
+
"hypoVaultImplementation": "0xC5b415Db4087228Af817893769DC3a205160160B",
|
|
156
|
+
"factory": "0x363a9d605ca45cBfF3b597350DeADb53cdC292c7",
|
|
157
|
+
"accountant": "0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab",
|
|
158
|
+
"rolesAuthority": "0x673BfafB4e2712215B422347c1571421B83E8A3d",
|
|
159
|
+
"collateralTrackerDecoderAndSanitizer": "0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d"
|
|
160
|
+
},
|
|
161
|
+
"vaults": {
|
|
162
|
+
"wethPlpVault": "0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1",
|
|
163
|
+
"usdcPlpVault": "0xdd7a8d6c6975488e801129bC84302d74e2361208"
|
|
164
|
+
},
|
|
165
|
+
"managers": {
|
|
166
|
+
"wethPlpVaultManager": "0x95eC124FAAB70D7aE147c3BE0336E01a828AE2d5",
|
|
167
|
+
"usdcPlpVaultManager": "0xFB5aa3e0b46F3859D90B14b52ffd287013b5Ec53"
|
|
168
|
+
},
|
|
169
|
+
"turnkeySigners": {
|
|
170
|
+
"wethPlpVaultManager": "0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F",
|
|
171
|
+
"usdcPlpVaultManager": "0x3c1c79d0cfc316Ba959194c89696a8382d7d283b"
|
|
172
|
+
}
|
|
173
|
+
},
|
|
174
|
+
"panoptic": {
|
|
175
|
+
"pool": {
|
|
176
|
+
"version": "v4",
|
|
177
|
+
"panopticPool": "0x872b98C46b2062F663BEb2CC9D4cE046Da2a2918",
|
|
178
|
+
"collateralTracker0": "0x09a60b78d06a03e5148faedd3bfee6f58b22012f",
|
|
179
|
+
"collateralTracker1": "0x7365664c8101ff7e9422ae2b203822253c31e69c"
|
|
180
|
+
},
|
|
181
|
+
"v2": {
|
|
182
|
+
"semiFungiblePositionManagerV3": "0x9DaD2C40107Db4B29a5450401BB7A28e6eA00e43",
|
|
183
|
+
"semiFungiblePositionManagerV4": "0xD2615995A71644E122cC2FD7FeC2392b971220DE",
|
|
184
|
+
"builderFactory": "0x55f3D2d9D065AA5Fcc11D94c55a6085849e8b6C3",
|
|
185
|
+
"riskEngine": "0x1376aF5ca426B6B9fad6a712c21f6Cf58a94b93c",
|
|
186
|
+
"panopticPoolImplementation": "0x969235B5830f13b58BB699305d9c70A8Cd3BD97C",
|
|
187
|
+
"collateralTrackerImplementation": "0xafcd5F651Ae0403Ff668bb2dAc38BEa907a35Dba",
|
|
188
|
+
"panopticFactoryV3": "0xd9FFCa53C0A6155001Ce8cbcAEfe89DB204690F1",
|
|
189
|
+
"panopticFactoryV4": "0x8FCBb59b05779818D9BAD2686cc44B705603ce03",
|
|
190
|
+
"panopticHelper": "0xfFEbB3A4ab793cB244209d4dA0Cb3e6B07133bd0",
|
|
191
|
+
"panopticMath": "0x6d21699192f5aF112C87e53b32ff846782afF407",
|
|
192
|
+
"panopticQuery": "0x74057945467Fb4eAE9193B46A60ae66a53f06A5b",
|
|
193
|
+
"interactionHelper": "0x643d8DD5372FD6c71f8fAbCce4Eb8857704F3E15"
|
|
194
|
+
}
|
|
195
|
+
},
|
|
196
|
+
"riskEngines": ["0x1376aF5ca426B6B9fad6a712c21f6Cf58a94b93c"],
|
|
197
|
+
"markets": { "ethUsdc5bps": {
|
|
198
|
+
"currency0": "0x0000000000000000000000000000000000000000",
|
|
199
|
+
"currency1": "0xFFFeD8254566B7F800f6D8CDb843ec75AE49B07A",
|
|
200
|
+
"fee": 500,
|
|
201
|
+
"tickSpacing": 10,
|
|
202
|
+
"poolId": "0xba6673bcb27568a73a93dd23b20c8174fa16193cd90905be859144e8f13097a5"
|
|
203
|
+
} },
|
|
204
|
+
"subgraphs": {
|
|
205
|
+
"hypovault": "https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-sepolia/prod/gn",
|
|
206
|
+
"panoptic": "https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/v2_prod/gn"
|
|
207
|
+
}
|
|
208
|
+
};
|
|
209
|
+
var chainDeployments_data_default = {
|
|
210
|
+
"1": _1,
|
|
211
|
+
"8453": _8453,
|
|
212
|
+
"11155111": _11155111
|
|
213
|
+
};
|
|
214
|
+
|
|
215
|
+
//#endregion
|
|
216
|
+
//#region ../deployments/src/chainDeployments.js
|
|
217
|
+
const MAINNET_CHAIN_ID = 1;
|
|
218
|
+
const SEPOLIA_CHAIN_ID = 11155111;
|
|
219
|
+
const BASE_CHAIN_ID = 8453;
|
|
220
|
+
const CHAIN_DEPLOYMENTS = chainDeployments_data_default;
|
|
221
|
+
function getChainDeployment(chainId) {
|
|
222
|
+
return CHAIN_DEPLOYMENTS[chainId];
|
|
223
|
+
}
|
|
224
|
+
function requireChainDeployment(chainId) {
|
|
225
|
+
const deployment = getChainDeployment(chainId);
|
|
226
|
+
if (deployment === void 0) throw new Error(`Unsupported chain deployment for chainId ${chainId}`);
|
|
227
|
+
return deployment;
|
|
228
|
+
}
|
|
229
|
+
function isSupportedChain(chainId) {
|
|
230
|
+
return getChainDeployment(chainId) !== void 0;
|
|
231
|
+
}
|
|
232
|
+
function getEthUsdcMarket(deployment) {
|
|
233
|
+
const market = deployment.markets.ethUsdc5bps ?? deployment.markets.ethUsdc30bps;
|
|
234
|
+
if (market === void 0) throw new Error(`Missing ETH/USDC market for chainId ${deployment.chainId}`);
|
|
235
|
+
return market;
|
|
236
|
+
}
|
|
237
|
+
const MAINNET_DEPLOYMENT = CHAIN_DEPLOYMENTS[MAINNET_CHAIN_ID];
|
|
238
|
+
const MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES = MAINNET_DEPLOYMENT.panoptic.additionalPools?.ethUsdc5bpsV3;
|
|
239
|
+
const MAINNET_PANOPTIC_V2_ADDRESSES = MAINNET_DEPLOYMENT.panoptic.v2;
|
|
240
|
+
const SEPOLIA_DEPLOYMENT = CHAIN_DEPLOYMENTS[SEPOLIA_CHAIN_ID];
|
|
241
|
+
const SEPOLIA_HYPOVAULT_CORE_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.core;
|
|
242
|
+
const SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults;
|
|
243
|
+
const SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers;
|
|
244
|
+
const SEPOLIA_HYPOVAULT_MANAGER_TURNKEY_SIGNERS = SEPOLIA_DEPLOYMENT.hypovault.turnkeySigners;
|
|
245
|
+
const SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool;
|
|
246
|
+
const SEPOLIA_PANOPTIC_V2_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.v2;
|
|
247
|
+
const BASE_DEPLOYMENT = CHAIN_DEPLOYMENTS[BASE_CHAIN_ID];
|
|
248
|
+
const BASE_HYPOVAULT_CORE_ADDRESSES = BASE_DEPLOYMENT.hypovault.core;
|
|
249
|
+
const BASE_HYPOVAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults;
|
|
250
|
+
const BASE_HYPOVAULT_MANAGER_ADDRESSES = BASE_DEPLOYMENT.hypovault.managers;
|
|
251
|
+
const BASE_HYPOVAULT_MANAGER_TURNKEY_SIGNERS = BASE_DEPLOYMENT.hypovault.turnkeySigners;
|
|
252
|
+
const BASE_PANOPTIC_POOL_ADDRESSES = BASE_DEPLOYMENT.panoptic.pool;
|
|
253
|
+
const BASE_PANOPTIC_V2_ADDRESSES = BASE_DEPLOYMENT.panoptic.v2;
|
|
254
|
+
const BASE_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(BASE_DEPLOYMENT);
|
|
255
|
+
const SEPOLIA_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(SEPOLIA_DEPLOYMENT);
|
|
256
|
+
const MAINNET_RISK_ENGINES = MAINNET_DEPLOYMENT.riskEngines;
|
|
257
|
+
const BASE_RISK_ENGINES = BASE_DEPLOYMENT.riskEngines;
|
|
258
|
+
const SEPOLIA_RISK_ENGINES = SEPOLIA_DEPLOYMENT.riskEngines;
|
|
259
|
+
|
|
260
|
+
//#endregion
|
|
261
|
+
//#region ../deployments/src/vaultDisplayNames.js
|
|
262
|
+
const mainnetDeployment = requireChainDeployment(MAINNET_CHAIN_ID);
|
|
263
|
+
const mainnetVaults = mainnetDeployment.hypovault.vaults;
|
|
264
|
+
const legacyMainnetVaults = {
|
|
265
|
+
wethPlpVault: "0x779a2aa634A004b3a3f3b322083744869BBC6D66",
|
|
266
|
+
usdcPlpVault: "0x963Fe9c93bc353602656ee4051A75114bA74d6c5"
|
|
267
|
+
};
|
|
268
|
+
const sepoliaDeployment = requireChainDeployment(SEPOLIA_CHAIN_ID);
|
|
269
|
+
const sepoliaVaults = sepoliaDeployment.hypovault.vaults;
|
|
270
|
+
const baseDeployment = requireChainDeployment(BASE_CHAIN_ID);
|
|
271
|
+
const baseVaults = baseDeployment.hypovault.vaults;
|
|
272
|
+
const VAULT_DISPLAY_NAMES_PER_CHAIN = {
|
|
273
|
+
[MAINNET_CHAIN_ID]: {
|
|
274
|
+
[mainnetVaults.wethPlpVault.toLowerCase()]: "PLP Vault",
|
|
275
|
+
[mainnetVaults.usdcPlpVault.toLowerCase()]: "Unicorn Vault",
|
|
276
|
+
[legacyMainnetVaults.wethPlpVault.toLowerCase()]: "PLP Vault",
|
|
277
|
+
[legacyMainnetVaults.usdcPlpVault.toLowerCase()]: "Unicorn Vault"
|
|
278
|
+
},
|
|
279
|
+
[BASE_CHAIN_ID]: {
|
|
280
|
+
[baseVaults.wethPlpVault.toLowerCase()]: "PLP Vault",
|
|
281
|
+
[baseVaults.usdcPlpVault.toLowerCase()]: "Unicorn Vault"
|
|
282
|
+
},
|
|
283
|
+
[SEPOLIA_CHAIN_ID]: {
|
|
284
|
+
[sepoliaVaults.wethPlpVault.toLowerCase()]: "PLP Vault",
|
|
285
|
+
[sepoliaVaults.usdcPlpVault.toLowerCase()]: "Unicorn Vault"
|
|
286
|
+
}
|
|
287
|
+
};
|
|
288
|
+
const VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN = {
|
|
289
|
+
[MAINNET_CHAIN_ID]: {
|
|
290
|
+
[mainnetVaults.wethPlpVault.toLowerCase()]: () => "PLP Vault",
|
|
291
|
+
[mainnetVaults.usdcPlpVault.toLowerCase()]: () => "Unicorn Vault",
|
|
292
|
+
[legacyMainnetVaults.wethPlpVault.toLowerCase()]: () => "PLP Vault",
|
|
293
|
+
[legacyMainnetVaults.usdcPlpVault.toLowerCase()]: () => "Unicorn Vault"
|
|
294
|
+
},
|
|
295
|
+
[BASE_CHAIN_ID]: {
|
|
296
|
+
[baseVaults.wethPlpVault.toLowerCase()]: () => "PLP Vault",
|
|
297
|
+
[baseVaults.usdcPlpVault.toLowerCase()]: () => "Unicorn Vault"
|
|
298
|
+
},
|
|
299
|
+
[SEPOLIA_CHAIN_ID]: {
|
|
300
|
+
[sepoliaVaults.wethPlpVault.toLowerCase()]: () => "PLP Vault",
|
|
301
|
+
[sepoliaVaults.usdcPlpVault.toLowerCase()]: () => "Unicorn Vault"
|
|
302
|
+
}
|
|
303
|
+
};
|
|
304
|
+
function resolveVaultDisplayName({ chainId, vaultAddress, underlyingSymbol, fallbackName }) {
|
|
305
|
+
const vaultAddressLower = vaultAddress.toLowerCase();
|
|
306
|
+
const resolver = VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN[chainId]?.[vaultAddressLower];
|
|
307
|
+
if (resolver !== void 0) return resolver({
|
|
308
|
+
chainId,
|
|
309
|
+
vaultAddress: vaultAddressLower,
|
|
310
|
+
underlyingSymbol,
|
|
311
|
+
fallbackName
|
|
312
|
+
});
|
|
313
|
+
const staticName = VAULT_DISPLAY_NAMES_PER_CHAIN[chainId]?.[vaultAddressLower];
|
|
314
|
+
if (staticName !== void 0) return staticName;
|
|
315
|
+
if (fallbackName !== void 0 && fallbackName !== null) return fallbackName;
|
|
316
|
+
return "Vault";
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
//#endregion
|
|
320
|
+
export { BASE_CHAIN_ID, BASE_DEPLOYMENT, BASE_ETH_USDC_5BPS_MARKET, BASE_HYPOVAULT_ADDRESSES, BASE_HYPOVAULT_CORE_ADDRESSES, BASE_HYPOVAULT_MANAGER_ADDRESSES, BASE_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, BASE_PANOPTIC_POOL_ADDRESSES, BASE_PANOPTIC_V2_ADDRESSES, CHAIN_DEPLOYMENTS, MAINNET_CHAIN_ID, MAINNET_DEPLOYMENT, MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES, MAINNET_PANOPTIC_V2_ADDRESSES, MAINNET_RISK_ENGINES, SEPOLIA_CHAIN_ID, SEPOLIA_DEPLOYMENT, SEPOLIA_ETH_USDC_5BPS_MARKET, SEPOLIA_HYPOVAULT_ADDRESSES, SEPOLIA_HYPOVAULT_CORE_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES, SEPOLIA_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, SEPOLIA_PANOPTIC_POOL_ADDRESSES, SEPOLIA_PANOPTIC_V2_ADDRESSES, VAULT_DISPLAY_NAMES_PER_CHAIN as VAULT_DISPLAY_NAMES_PER_CHAIN$1, VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN as VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN$1, getChainDeployment, getEthUsdcMarket, isSupportedChain, requireChainDeployment, resolveVaultDisplayName as resolveVaultDisplayName$1 };
|
|
321
|
+
//# sourceMappingURL=src-CRAtPwWk.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"src-CRAtPwWk.js","names":["chainDeploymentsData"],"sources":["../../deployments/src/chainDeployments.data.json","../../deployments/src/chainDeployments.js","../../deployments/src/vaultDisplayNames.js"],"sourcesContent":["{\n \"1\": {\n \"chainId\": 1,\n \"infrastructure\": {\n \"uniswapV3Factory\": \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n \"poolManager\": \"0x000000000004444c5dc75cB358380D2e3dE08A90\",\n \"stateView\": \"0x7ffe42c4a5deea5b0fec41c94c136cf115597227\"\n },\n \"hypovault\": {\n \"core\": {\n \"hypoVaultImplementation\": \"0xF16714665955DBd0361D997eFc50fe391D96E8D0\",\n \"factory\": \"0xd5049B2647de57141dE7F65E5124707B99A452A3\",\n \"accountant\": \"0x65aA902AE3135658587FFC36ED51B61c927114e1\",\n \"rolesAuthority\": \"0xb952D345c413Ddb7850173422bAe4968e0330598\",\n \"collateralTrackerDecoderAndSanitizer\": \"0xC87c45d2dbE5acb56013e2591427ECC84Fa251E6\"\n },\n \"vaults\": {\n \"wethPlpVault\": \"0xd4e2c720a760049cc4151bcf61e3a9348db9cd92\",\n \"usdcPlpVault\": \"0x236d0558f06cd60780b232d4Ec4c92d2cb7e4D18\"\n },\n \"managers\": {\n \"wethPlpVaultManager\": \"0xB6Fc48e658C9B1a7dbdFA51A5E153ab60BB2e04d\",\n \"usdcPlpVaultManager\": \"0x2ce65016366ef7320078e0758D58Cf1038bc7C4e\"\n },\n \"turnkeySigners\": {\n \"wethPlpVaultManager\": \"0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F\",\n \"usdcPlpVaultManager\": \"0x3c1c79d0cfc316Ba959194c89696a8382d7d283b\"\n }\n },\n \"panoptic\": {\n \"pool\": {\n \"version\": \"v4\",\n \"panopticPool\": \"0x00000000563b70d704f4c6675a5f6ac989fbae13\",\n \"collateralTracker0\": \"0x1e46b0289B7E0F710E2Db8Ab87800dd782D624f7\",\n \"collateralTracker1\": \"0x12bF31955522BAC337D93e1bC0a39F68D8BDa216\"\n },\n \"additionalPools\": {\n \"ethUsdc5bpsV3\": {\n \"version\": \"v3\",\n \"panopticPool\": \"0x00000000009C7B687e833559e34503f64d7ed7c4\",\n \"collateralTracker0\": \"0x3CCdA7d5E841d6543D90BcEc20b36a724C184DE9\",\n \"collateralTracker1\": \"0x69E9f9e44E5F52237493b980dd7306198C64A4E4\"\n }\n },\n \"v2\": {\n \"semiFungiblePositionManagerV4\": \"0x000000000000047534b9E1D528ED997169865a64\",\n \"semiFungiblePositionManagerV3\": \"0x000000000000031d296bBA22f188472157eEb01f\",\n \"builderFactory\": \"0x00000000000008D41F2cd5bF144F61cEB3661F98\",\n \"riskEngine\": \"0x0000000000000e673aECBDB5f5fE5DFAf4a8e9Ac\",\n \"panopticPoolImplementation\": \"0x00000000000010bb6695dAAC60D0515c0A01a948\",\n \"collateralTrackerImplementation\": \"0x0000000000002038055dB8f2B2Fd356598935C51\",\n \"panopticFactoryV4\": \"0x0000000000000c51d0f8cf4bd9adE7191372a625\",\n \"panopticFactoryV3\": \"0x0000000000000aDC9A108591e718F2aee963a2a7\",\n \"panopticHelper\": \"0x0000000000000000000000000000000000000000\",\n \"panopticMath\": \"0x000000000000301F5BC0171C75967b8e78a92b10\",\n \"panopticQuery\": \"0x0000000000000e1aE9c66C1c3B0A547D23389C93\",\n \"interactionHelper\": \"0x00000000000040ae7CD505F4E0e3F34195D8c08C\"\n }\n },\n \"riskEngines\": [\n \"0x000000000000075e29cdaa9cb640a69e148ca7da\",\n \"0x0000000000000fe1e261f66ce2f44def4f5ae0cb\",\n \"0x0000000000000e673aECBDB5f5fE5DFAf4a8e9Ac\"\n ],\n \"markets\": {\n \"ethUsdc30bps\": {\n \"currency0\": \"0x0000000000000000000000000000000000000000\",\n \"currency1\": \"0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48\",\n \"fee\": 3000,\n \"tickSpacing\": 60,\n \"poolId\": \"0x3C08AE4977F78D\"\n }\n },\n \"subgraphs\": {\n \"hypovault\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-mainnet/prod/gn\",\n \"panoptic\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-mainnet/v2_prod/gn\"\n },\n \"sfpmSwap\": {\n \"version\": \"v3\",\n \"sfpm\": \"0x00000000000005E4693aDc8Ec0f12D686f728198\",\n \"poolAddress\": \"0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640\",\n \"poolId\": \"2824133844976349\",\n \"fee\": 500,\n \"weth\": \"0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2\"\n }\n },\n \"8453\": {\n \"chainId\": 8453,\n \"infrastructure\": {\n \"uniswapV3Factory\": \"0x33128a8fC17869897dcE68Ed026d694621f6FDfD\",\n \"poolManager\": \"0x498581fF718922c3f8e6A244956aF099B2652b2b\",\n \"stateView\": \"0xA3c0c9b65baD0b08107Aa264b0f3dB444b867A71\"\n },\n \"hypovault\": {\n \"core\": {\n \"hypoVaultImplementation\": \"0xec311aE06486ad44Ba782133b502A34aCE0f479E\",\n \"factory\": \"0x9bE53b169a41030f1710A9B82e9eA6413f14D12E\",\n \"accountant\": \"0x345cA3407942f9d175c9eA8B90e83A36F570f852\",\n \"rolesAuthority\": \"0x278D37CaBFFB4B72D2866E30fEFE08aef773E0B6\",\n \"collateralTrackerDecoderAndSanitizer\": \"0x4A290b3EC46cF320421Bb2aaee96d445de31CF0b\"\n },\n \"vaults\": {\n \"wethPlpVault\": \"0x41b7D0515d709A4Fd2CF27f9d141D0c2F8713D04\",\n \"usdcPlpVault\": \"0xb452af299c565D04B05E601efF2840e000C922f1\"\n },\n \"managers\": {\n \"wethPlpVaultManager\": \"0x2a4923456c79E9ebD10F5Bf5305a5C742bBc1D7C\",\n \"usdcPlpVaultManager\": \"0xdd6E2406a044582463CFE9F0C774870eAf4A310B\"\n },\n \"turnkeySigners\": {\n \"wethPlpVaultManager\": \"0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F\",\n \"usdcPlpVaultManager\": \"0x3c1c79d0cfc316Ba959194c89696a8382d7d283b\"\n }\n },\n \"panoptic\": {\n \"pool\": {\n \"version\": \"v4\",\n \"panopticPool\": \"0xB50e8bb68f5855DA742f4579274902a20454174a\",\n \"collateralTracker0\": \"0x0d82b189c96EbB1f44A7207e6A9cfB1e490f2869\",\n \"collateralTracker1\": \"0x9ba1082Ab3cb9edEA988697A14BBe543A3dABEd2\"\n },\n \"v2\": {\n \"semiFungiblePositionManagerV4\": \"0x8dcAa08cF298F8b4830FAf56d47930981AdE33af\",\n \"semiFungiblePositionManagerV3\": \"0xFB1c06B491305d618bb8a7a368C6e50c001C153A\",\n \"builderFactory\": \"0x6d26E916a18d522f7DdA2a26d9E1645564ccDcA5\",\n \"riskEngine\": \"0x8bbce8b1eb64118cfe6c1eab0afe13b80ea41481\",\n \"panopticPoolImplementation\": \"0x5BA68a018fF149c38ec52D181Dd24aBabE9a07DB\",\n \"collateralTrackerImplementation\": \"0x34B3a4e4F14f292575ECe3EF67886C4598af459f\",\n \"panopticFactoryV4\": \"0x9ac0317fcd124aff0b5429beb8de17020bc45f9a\",\n \"panopticFactoryV3\": \"0x687f616d68c483a7223e6922f59aef7452e26c1d\",\n \"panopticHelper\": \"0x0000000000000000000000000000000000000000\",\n \"panopticMath\": \"0x6d21699192f5aF112C87e53b32ff846782afF407\",\n \"panopticQuery\": \"0xd2586E1bbdd1169F597F3A370117EdF7372A7350\",\n \"interactionHelper\": \"0x643d8DD5372FD6c71f8fAbCce4Eb8857704F3E15\"\n }\n },\n \"riskEngines\": [\n \"0x8bbce8b1eb64118cfe6c1eab0afe13b80ea41481\"\n ],\n \"markets\": {\n \"ethUsdc5bps\": {\n \"currency0\": \"0x0000000000000000000000000000000000000000\",\n \"currency1\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n \"fee\": 500,\n \"tickSpacing\": 10,\n \"poolId\": \"0x96d4b53a38337a5733179751781178a2613306063c511b78cd02684739288c0a\"\n }\n },\n \"subgraphs\": {\n \"hypovault\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-base/prod/gn\",\n \"panoptic\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-base/v2_prod/gn\"\n }\n },\n \"11155111\": {\n \"chainId\": 11155111,\n \"infrastructure\": {\n \"uniswapV3Factory\": \"0x0227628f3F023bb0B980b67D528571c95c6DaC1c\",\n \"poolManager\": \"0xE03A1074c86CFeDd5C142C4F04F1a1536e203543\",\n \"stateView\": \"0xE1Dd9c3fA50EDB962E442f60DfBc432e24537E4C\"\n },\n \"hypovault\": {\n \"core\": {\n \"hypoVaultImplementation\": \"0xC5b415Db4087228Af817893769DC3a205160160B\",\n \"factory\": \"0x363a9d605ca45cBfF3b597350DeADb53cdC292c7\",\n \"accountant\": \"0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab\",\n \"rolesAuthority\": \"0x673BfafB4e2712215B422347c1571421B83E8A3d\",\n \"collateralTrackerDecoderAndSanitizer\": \"0xb899BE50BAF25BBB3A3ca3403256B3c703E5AB5d\"\n },\n \"vaults\": {\n \"wethPlpVault\": \"0xD58C4F9AEe5bBfcf28dC9a8d3D57b323fA6521b1\",\n \"usdcPlpVault\": \"0xdd7a8d6c6975488e801129bC84302d74e2361208\"\n },\n \"managers\": {\n \"wethPlpVaultManager\": \"0x95eC124FAAB70D7aE147c3BE0336E01a828AE2d5\",\n \"usdcPlpVaultManager\": \"0xFB5aa3e0b46F3859D90B14b52ffd287013b5Ec53\"\n },\n \"turnkeySigners\": {\n \"wethPlpVaultManager\": \"0x8FfA6DAB99f8afc64F61BeF83F0966eD6362f24F\",\n \"usdcPlpVaultManager\": \"0x3c1c79d0cfc316Ba959194c89696a8382d7d283b\"\n }\n },\n \"panoptic\": {\n \"pool\": {\n \"version\": \"v4\",\n \"panopticPool\": \"0x872b98C46b2062F663BEb2CC9D4cE046Da2a2918\",\n \"collateralTracker0\": \"0x09a60b78d06a03e5148faedd3bfee6f58b22012f\",\n \"collateralTracker1\": \"0x7365664c8101ff7e9422ae2b203822253c31e69c\"\n },\n \"v2\": {\n \"semiFungiblePositionManagerV3\": \"0x9DaD2C40107Db4B29a5450401BB7A28e6eA00e43\",\n \"semiFungiblePositionManagerV4\": \"0xD2615995A71644E122cC2FD7FeC2392b971220DE\",\n \"builderFactory\": \"0x55f3D2d9D065AA5Fcc11D94c55a6085849e8b6C3\",\n \"riskEngine\": \"0x1376aF5ca426B6B9fad6a712c21f6Cf58a94b93c\",\n \"panopticPoolImplementation\": \"0x969235B5830f13b58BB699305d9c70A8Cd3BD97C\",\n \"collateralTrackerImplementation\": \"0xafcd5F651Ae0403Ff668bb2dAc38BEa907a35Dba\",\n \"panopticFactoryV3\": \"0xd9FFCa53C0A6155001Ce8cbcAEfe89DB204690F1\",\n \"panopticFactoryV4\": \"0x8FCBb59b05779818D9BAD2686cc44B705603ce03\",\n \"panopticHelper\": \"0xfFEbB3A4ab793cB244209d4dA0Cb3e6B07133bd0\",\n \"panopticMath\": \"0x6d21699192f5aF112C87e53b32ff846782afF407\",\n \"panopticQuery\": \"0x74057945467Fb4eAE9193B46A60ae66a53f06A5b\",\n \"interactionHelper\": \"0x643d8DD5372FD6c71f8fAbCce4Eb8857704F3E15\"\n }\n },\n \"riskEngines\": [\n \"0x1376aF5ca426B6B9fad6a712c21f6Cf58a94b93c\"\n ],\n \"markets\": {\n \"ethUsdc5bps\": {\n \"currency0\": \"0x0000000000000000000000000000000000000000\",\n \"currency1\": \"0xFFFeD8254566B7F800f6D8CDb843ec75AE49B07A\",\n \"fee\": 500,\n \"tickSpacing\": 10,\n \"poolId\": \"0xba6673bcb27568a73a93dd23b20c8174fa16193cd90905be859144e8f13097a5\"\n }\n },\n \"subgraphs\": {\n \"hypovault\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/hypovault-subgraph-sepolia/prod/gn\",\n \"panoptic\": \"https://api.goldsky.com/api/public/project_cl9gc21q105380hxuh8ks53k3/subgraphs/panoptic-subgraph-sepolia/v2_prod/gn\"\n }\n }\n}\n","import chainDeploymentsData from './chainDeployments.data.json' with { type: 'json' }\n\nexport const MAINNET_CHAIN_ID = 1\nexport const SEPOLIA_CHAIN_ID = 11155111\nexport const BASE_CHAIN_ID = 8453\n\nexport const CHAIN_DEPLOYMENTS = chainDeploymentsData\n\nexport function getChainDeployment(chainId) {\n return CHAIN_DEPLOYMENTS[chainId]\n}\n\nexport function requireChainDeployment(chainId) {\n const deployment = getChainDeployment(chainId)\n if (deployment === undefined) {\n throw new Error(`Unsupported chain deployment for chainId ${chainId}`)\n }\n return deployment\n}\n\nexport function isSupportedChain(chainId) {\n return getChainDeployment(chainId) !== undefined\n}\n\nexport function getEthUsdcMarket(deployment) {\n const market = deployment.markets.ethUsdc5bps ?? deployment.markets.ethUsdc30bps\n if (market === undefined) {\n throw new Error(`Missing ETH/USDC market for chainId ${deployment.chainId}`)\n }\n return market\n}\n\n\nexport const MAINNET_DEPLOYMENT = CHAIN_DEPLOYMENTS[MAINNET_CHAIN_ID]\nexport const MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES =\n MAINNET_DEPLOYMENT.panoptic.additionalPools?.ethUsdc5bpsV3\nexport const MAINNET_PANOPTIC_V2_ADDRESSES = MAINNET_DEPLOYMENT.panoptic.v2\nexport const SEPOLIA_DEPLOYMENT = CHAIN_DEPLOYMENTS[SEPOLIA_CHAIN_ID]\nexport const SEPOLIA_HYPOVAULT_CORE_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.core\nexport const SEPOLIA_HYPOVAULT_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.vaults\nexport const SEPOLIA_HYPOVAULT_MANAGER_ADDRESSES = SEPOLIA_DEPLOYMENT.hypovault.managers\nexport const SEPOLIA_HYPOVAULT_MANAGER_TURNKEY_SIGNERS = SEPOLIA_DEPLOYMENT.hypovault.turnkeySigners\nexport const SEPOLIA_PANOPTIC_POOL_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.pool\nexport const SEPOLIA_PANOPTIC_V2_ADDRESSES = SEPOLIA_DEPLOYMENT.panoptic.v2\nexport const BASE_DEPLOYMENT = CHAIN_DEPLOYMENTS[BASE_CHAIN_ID]\nexport const BASE_HYPOVAULT_CORE_ADDRESSES = BASE_DEPLOYMENT.hypovault.core\nexport const BASE_HYPOVAULT_ADDRESSES = BASE_DEPLOYMENT.hypovault.vaults\nexport const BASE_HYPOVAULT_MANAGER_ADDRESSES = BASE_DEPLOYMENT.hypovault.managers\nexport const BASE_HYPOVAULT_MANAGER_TURNKEY_SIGNERS = BASE_DEPLOYMENT.hypovault.turnkeySigners\nexport const BASE_PANOPTIC_POOL_ADDRESSES = BASE_DEPLOYMENT.panoptic.pool\nexport const BASE_PANOPTIC_V2_ADDRESSES = BASE_DEPLOYMENT.panoptic.v2\nexport const BASE_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(BASE_DEPLOYMENT)\nexport const SEPOLIA_ETH_USDC_5BPS_MARKET = getEthUsdcMarket(SEPOLIA_DEPLOYMENT)\n\nexport const MAINNET_RISK_ENGINES = MAINNET_DEPLOYMENT.riskEngines\nexport const BASE_RISK_ENGINES = BASE_DEPLOYMENT.riskEngines\nexport const SEPOLIA_RISK_ENGINES = SEPOLIA_DEPLOYMENT.riskEngines\n","import {\n BASE_CHAIN_ID,\n MAINNET_CHAIN_ID,\n requireChainDeployment,\n SEPOLIA_CHAIN_ID,\n} from './chainDeployments.js'\n\nconst mainnetDeployment = requireChainDeployment(MAINNET_CHAIN_ID)\nconst mainnetVaults = mainnetDeployment.hypovault.vaults\nconst legacyMainnetVaults = {\n wethPlpVault: '0x779a2aa634A004b3a3f3b322083744869BBC6D66',\n usdcPlpVault: '0x963Fe9c93bc353602656ee4051A75114bA74d6c5',\n}\nconst sepoliaDeployment = requireChainDeployment(SEPOLIA_CHAIN_ID)\nconst sepoliaVaults = sepoliaDeployment.hypovault.vaults\nconst baseDeployment = requireChainDeployment(BASE_CHAIN_ID)\nconst baseVaults = baseDeployment.hypovault.vaults\n\nexport const VAULT_DISPLAY_NAMES_PER_CHAIN = {\n [MAINNET_CHAIN_ID]: {\n [mainnetVaults.wethPlpVault.toLowerCase()]: 'PLP Vault',\n [mainnetVaults.usdcPlpVault.toLowerCase()]: 'Unicorn Vault',\n [legacyMainnetVaults.wethPlpVault.toLowerCase()]: 'PLP Vault',\n [legacyMainnetVaults.usdcPlpVault.toLowerCase()]: 'Unicorn Vault',\n },\n [BASE_CHAIN_ID]: {\n [baseVaults.wethPlpVault.toLowerCase()]: 'PLP Vault',\n [baseVaults.usdcPlpVault.toLowerCase()]: 'Unicorn Vault',\n },\n [SEPOLIA_CHAIN_ID]: {\n [sepoliaVaults.wethPlpVault.toLowerCase()]: 'PLP Vault',\n [sepoliaVaults.usdcPlpVault.toLowerCase()]: 'Unicorn Vault',\n },\n}\n\nexport const VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN = {\n [MAINNET_CHAIN_ID]: {\n [mainnetVaults.wethPlpVault.toLowerCase()]: () => 'PLP Vault',\n [mainnetVaults.usdcPlpVault.toLowerCase()]: () => 'Unicorn Vault',\n [legacyMainnetVaults.wethPlpVault.toLowerCase()]: () => 'PLP Vault',\n [legacyMainnetVaults.usdcPlpVault.toLowerCase()]: () => 'Unicorn Vault',\n },\n [BASE_CHAIN_ID]: {\n [baseVaults.wethPlpVault.toLowerCase()]: () => 'PLP Vault',\n [baseVaults.usdcPlpVault.toLowerCase()]: () => 'Unicorn Vault',\n },\n [SEPOLIA_CHAIN_ID]: {\n [sepoliaVaults.wethPlpVault.toLowerCase()]: () => 'PLP Vault',\n [sepoliaVaults.usdcPlpVault.toLowerCase()]: () => 'Unicorn Vault',\n },\n}\n\nexport function resolveVaultDisplayName({ chainId, vaultAddress, underlyingSymbol, fallbackName }) {\n const vaultAddressLower = vaultAddress.toLowerCase()\n const resolver = VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN[chainId]?.[vaultAddressLower]\n if (resolver !== undefined) {\n return resolver({\n chainId,\n vaultAddress: vaultAddressLower,\n underlyingSymbol,\n fallbackName,\n })\n }\n\n const staticName = VAULT_DISPLAY_NAMES_PER_CHAIN[chainId]?.[vaultAddressLower]\n if (staticName !== undefined) {\n return staticName\n }\n\n if (fallbackName !== undefined && fallbackName !== null) {\n return fallbackName\n }\n\n return 'Vault'\n}\n"],"mappings":";SACO;CACH,WAAW;CACX,kBAAkB;EAChB,oBAAoB;EACpB,eAAe;EACf,aAAa;CACd;CACD,aAAa;EACX,QAAQ;GACN,2BAA2B;GAC3B,WAAW;GACX,cAAc;GACd,kBAAkB;GAClB,wCAAwC;EACzC;EACD,UAAU;GACR,gBAAgB;GAChB,gBAAgB;EACjB;EACD,YAAY;GACV,uBAAuB;GACvB,uBAAuB;EACxB;EACD,kBAAkB;GAChB,uBAAuB;GACvB,uBAAuB;EACxB;CACF;CACD,YAAY;EACV,QAAQ;GACN,WAAW;GACX,gBAAgB;GAChB,sBAAsB;GACtB,sBAAsB;EACvB;EACD,mBAAmB,EACjB,iBAAiB;GACf,WAAW;GACX,gBAAgB;GAChB,sBAAsB;GACtB,sBAAsB;EACvB,EACF;EACD,MAAM;GACJ,iCAAiC;GACjC,iCAAiC;GACjC,kBAAkB;GAClB,cAAc;GACd,8BAA8B;GAC9B,mCAAmC;GACnC,qBAAqB;GACrB,qBAAqB;GACrB,kBAAkB;GAClB,gBAAgB;GAChB,iBAAiB;GACjB,qBAAqB;EACtB;CACF;CACD,eAAe;EACb;EACA;EACA;CACD;CACD,WAAW,EACT,gBAAgB;EACd,aAAa;EACb,aAAa;EACb,OAAO;EACP,eAAe;EACf,UAAU;CACX,EACF;CACD,aAAa;EACX,aAAa;EACb,YAAY;CACb;CACD,YAAY;EACV,WAAW;EACX,QAAQ;EACR,eAAe;EACf,UAAU;EACV,OAAO;EACP,QAAQ;CACT;AACF;YACO;CACN,WAAW;CACX,kBAAkB;EAChB,oBAAoB;EACpB,eAAe;EACf,aAAa;CACd;CACD,aAAa;EACX,QAAQ;GACN,2BAA2B;GAC3B,WAAW;GACX,cAAc;GACd,kBAAkB;GAClB,wCAAwC;EACzC;EACD,UAAU;GACR,gBAAgB;GAChB,gBAAgB;EACjB;EACD,YAAY;GACV,uBAAuB;GACvB,uBAAuB;EACxB;EACD,kBAAkB;GAChB,uBAAuB;GACvB,uBAAuB;EACxB;CACF;CACD,YAAY;EACV,QAAQ;GACN,WAAW;GACX,gBAAgB;GAChB,sBAAsB;GACtB,sBAAsB;EACvB;EACD,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"}
|
package/dist/test/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Address } from "viem";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
import { Config } from "wagmi";
|
|
4
|
-
import * as
|
|
4
|
+
import * as react_jsx_runtime28 from "react/jsx-runtime";
|
|
5
5
|
|
|
6
6
|
//#region src/test/test-utils.d.ts
|
|
7
7
|
declare const spawnAnvil: (args?: AnvilArgs) => Promise<void>;
|
|
@@ -236,7 +236,7 @@ declare const ReactTestWrapper: ({
|
|
|
236
236
|
}: {
|
|
237
237
|
children?: ReactNode;
|
|
238
238
|
wagmiConfig: Config;
|
|
239
|
-
}) =>
|
|
239
|
+
}) => react_jsx_runtime28.JSX.Element;
|
|
240
240
|
|
|
241
241
|
//#endregion
|
|
242
242
|
//#region src/test/test-accounts.d.ts
|
package/dist/test/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":["spawnAnvil","AnvilArgs","Promise","killAnvilProcess","killAllAnvilProcesses","Record","ReactNode","Config","ReactTestWrapper","children","wagmiConfig","
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":["spawnAnvil","AnvilArgs","Promise","killAnvilProcess","killAllAnvilProcesses","Record","ReactNode","Config","ReactTestWrapper","children","wagmiConfig","react_jsx_runtime28","JSX","Element","Address","alice","bob","charlie"],"sources":["../../src/test/test-utils.d.ts","../../src/test/react-test-utils.d.ts","../../src/test/test-accounts.d.ts"],"sourcesContent":null,"mappings":";;;;;;cAAqBA,oBAAoBC,cAAcC;cAClCC,oCAAoCD;cACpCE,6BAA6BF;KAC7CD,SAAAA;;;AAHL;;;EAAkD,QAAKC,CAAAA,EAAAA,MAAAA,GAAAA,SAAAA;EAAO;AAC9D;AACA;AAAgE;;;;ACAhE;;EAG6C,eAHHO,CAAAA,EAAAA,OAAAA,GAAAA,SAAAA;EAAQ;;;;AAGL;;;;ACJ7C;EACqBO,kBAAKF,CAAAA,EAAAA,MAAO,GAAA,MAAA,GAAA,SAAA;EACZG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;eFkGJZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cCnGIG;;;;aACNF;eACEC;MACiBI,mBAAAA,CAAAC,GAAAA,CAAIC;;;;cCJjBE,OAAOD;cACPE,KAAKF;cACLG,SAASH"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { estimateFeesPerGas, getFeeHistory } from "viem/actions";
|
|
2
|
+
|
|
3
|
+
//#region src/hypoVault/transactionFees.ts
|
|
4
|
+
const MIN_VAULT_PRIORITY_FEE_PER_GAS = 100000000n;
|
|
5
|
+
const MAX_VAULT_PRIORITY_FEE_PER_GAS = 3000000000n;
|
|
6
|
+
const MAX_VAULT_TRANSACTION_GAS_COST = 15000000000000000n;
|
|
7
|
+
const FEE_HISTORY_BLOCK_COUNT = 20;
|
|
8
|
+
const FEE_HISTORY_REWARD_PERCENTILES = [90];
|
|
9
|
+
const BASE_FEE_BUFFER_NUMERATOR = 1125n;
|
|
10
|
+
const BASE_FEE_BUFFER_DENOMINATOR = 1000n;
|
|
11
|
+
const GAS_ESTIMATE_BUFFER_NUMERATOR = 3n;
|
|
12
|
+
const GAS_ESTIMATE_BUFFER_DENOMINATOR = 2n;
|
|
13
|
+
var VaultTransactionFeeEstimationError = class extends Error {
|
|
14
|
+
feeHistoryError;
|
|
15
|
+
fallbackError;
|
|
16
|
+
constructor({ feeHistoryError, fallbackError }) {
|
|
17
|
+
super("Unable to estimate EIP-1559 fees for vault transaction");
|
|
18
|
+
this.name = "VaultTransactionFeeEstimationError";
|
|
19
|
+
this.feeHistoryError = feeHistoryError;
|
|
20
|
+
this.fallbackError = fallbackError;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
var VaultTransactionGasCostLimitError = class extends Error {
|
|
24
|
+
gasLimit;
|
|
25
|
+
maximumAffordableFeePerGas;
|
|
26
|
+
minimumRequiredFeePerGas;
|
|
27
|
+
constructor({ gasLimit, maximumAffordableFeePerGas, minimumRequiredFeePerGas }) {
|
|
28
|
+
super(`Vault transaction cannot fit the ${MAX_VAULT_TRANSACTION_GAS_COST.toString()} wei gas-cost limit: gasLimit=${gasLimit.toString()}, maximumAffordableFeePerGas=${maximumAffordableFeePerGas.toString()}, minimumRequiredFeePerGas=${minimumRequiredFeePerGas.toString()}`);
|
|
29
|
+
this.name = "VaultTransactionGasCostLimitError";
|
|
30
|
+
this.gasLimit = gasLimit;
|
|
31
|
+
this.maximumAffordableFeePerGas = maximumAffordableFeePerGas;
|
|
32
|
+
this.minimumRequiredFeePerGas = minimumRequiredFeePerGas;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
function ceilMultiplyFraction(value, numerator, denominator) {
|
|
36
|
+
return (value * numerator + denominator - 1n) / denominator;
|
|
37
|
+
}
|
|
38
|
+
function medianBigInt(values) {
|
|
39
|
+
if (values.length === 0) return void 0;
|
|
40
|
+
const sorted = [...values].sort((left, right) => left < right ? -1 : left > right ? 1 : 0);
|
|
41
|
+
const upperMiddleIndex = Math.floor(sorted.length / 2);
|
|
42
|
+
const upperMiddle = sorted[upperMiddleIndex];
|
|
43
|
+
if (upperMiddle === void 0) return void 0;
|
|
44
|
+
if (sorted.length % 2 === 1) return upperMiddle;
|
|
45
|
+
const lowerMiddle = sorted[upperMiddleIndex - 1];
|
|
46
|
+
return lowerMiddle === void 0 ? void 0 : (lowerMiddle + upperMiddle) / 2n;
|
|
47
|
+
}
|
|
48
|
+
function clampPriorityFee(priorityFee) {
|
|
49
|
+
if (priorityFee < MIN_VAULT_PRIORITY_FEE_PER_GAS) return MIN_VAULT_PRIORITY_FEE_PER_GAS;
|
|
50
|
+
if (priorityFee > MAX_VAULT_PRIORITY_FEE_PER_GAS) return MAX_VAULT_PRIORITY_FEE_PER_GAS;
|
|
51
|
+
return priorityFee;
|
|
52
|
+
}
|
|
53
|
+
function resolveFeeHistoryQuote({ baseFeePerGas, reward }) {
|
|
54
|
+
const latestBaseFeeIndex = baseFeePerGas.length - 2;
|
|
55
|
+
if (latestBaseFeeIndex < 0 || reward === void 0 || reward.length === 0) return null;
|
|
56
|
+
const p90Rewards = reward.flatMap((blockRewards) => {
|
|
57
|
+
const p90 = blockRewards[0];
|
|
58
|
+
return p90 === void 0 ? [] : [p90];
|
|
59
|
+
});
|
|
60
|
+
const sampledPriorityFee = medianBigInt(p90Rewards);
|
|
61
|
+
if (sampledPriorityFee === void 0) return null;
|
|
62
|
+
const maxPriorityFeePerGas = clampPriorityFee(sampledPriorityFee);
|
|
63
|
+
const bufferedBaseFee = ceilMultiplyFraction(baseFeePerGas[latestBaseFeeIndex], BASE_FEE_BUFFER_NUMERATOR, BASE_FEE_BUFFER_DENOMINATOR);
|
|
64
|
+
return {
|
|
65
|
+
maxFeePerGas: bufferedBaseFee + maxPriorityFeePerGas,
|
|
66
|
+
maxPriorityFeePerGas,
|
|
67
|
+
minimumMaxFeePerGas: bufferedBaseFee + MIN_VAULT_PRIORITY_FEE_PER_GAS,
|
|
68
|
+
source: "fee_history"
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function resolveFallbackQuote({ maxFeePerGas: estimatedMaxFeePerGas, maxPriorityFeePerGas: estimatedPriorityFeePerGas }) {
|
|
72
|
+
const maxPriorityFeePerGas = clampPriorityFee(estimatedPriorityFeePerGas);
|
|
73
|
+
const estimatedBaseFeeAllowance = estimatedMaxFeePerGas > estimatedPriorityFeePerGas ? estimatedMaxFeePerGas - estimatedPriorityFeePerGas : 0n;
|
|
74
|
+
return {
|
|
75
|
+
maxFeePerGas: estimatedBaseFeeAllowance + maxPriorityFeePerGas,
|
|
76
|
+
maxPriorityFeePerGas,
|
|
77
|
+
minimumMaxFeePerGas: estimatedBaseFeeAllowance + MIN_VAULT_PRIORITY_FEE_PER_GAS,
|
|
78
|
+
source: "viem_fallback"
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function applyVaultTransactionGasCostLimit(quote, gasLimit) {
|
|
82
|
+
if (gasLimit <= 0n) throw new Error(`Vault transaction gas limit must be positive, received ${gasLimit.toString()}`);
|
|
83
|
+
const maximumAffordableFeePerGas = MAX_VAULT_TRANSACTION_GAS_COST / gasLimit;
|
|
84
|
+
if (maximumAffordableFeePerGas < quote.minimumMaxFeePerGas) throw new VaultTransactionGasCostLimitError({
|
|
85
|
+
gasLimit,
|
|
86
|
+
maximumAffordableFeePerGas,
|
|
87
|
+
minimumRequiredFeePerGas: quote.minimumMaxFeePerGas
|
|
88
|
+
});
|
|
89
|
+
if (quote.maxFeePerGas <= maximumAffordableFeePerGas) return quote;
|
|
90
|
+
const bufferedBaseFee = quote.minimumMaxFeePerGas - MIN_VAULT_PRIORITY_FEE_PER_GAS;
|
|
91
|
+
const affordablePriorityFee = maximumAffordableFeePerGas - bufferedBaseFee;
|
|
92
|
+
return {
|
|
93
|
+
...quote,
|
|
94
|
+
maxFeePerGas: maximumAffordableFeePerGas,
|
|
95
|
+
maxPriorityFeePerGas: quote.maxPriorityFeePerGas < affordablePriorityFee ? quote.maxPriorityFeePerGas : affordablePriorityFee
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function bufferVaultTransactionGasEstimate(gasEstimate) {
|
|
99
|
+
if (gasEstimate <= 0n) throw new Error(`Vault transaction gas estimate must be positive, received ${gasEstimate.toString()}`);
|
|
100
|
+
return ceilMultiplyFraction(gasEstimate, GAS_ESTIMATE_BUFFER_NUMERATOR, GAS_ESTIMATE_BUFFER_DENOMINATOR);
|
|
101
|
+
}
|
|
102
|
+
function validateVaultSignedTransactionFeeCaps(feeCaps, quote) {
|
|
103
|
+
const { gasLimit, maxFeePerGas, maxPriorityFeePerGas } = feeCaps;
|
|
104
|
+
if (maxFeePerGas === null || maxPriorityFeePerGas === null) return {
|
|
105
|
+
valid: false,
|
|
106
|
+
code: "MissingEip1559Fees",
|
|
107
|
+
reason: "Signed transaction must include EIP-1559 max fee and priority fee caps."
|
|
108
|
+
};
|
|
109
|
+
if (maxPriorityFeePerGas > maxFeePerGas) return {
|
|
110
|
+
valid: false,
|
|
111
|
+
code: "InvalidFeeCaps",
|
|
112
|
+
reason: `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) cannot exceed maxFeePerGas (${maxFeePerGas.toString()} wei).`
|
|
113
|
+
};
|
|
114
|
+
if (maxPriorityFeePerGas < MIN_VAULT_PRIORITY_FEE_PER_GAS) return {
|
|
115
|
+
valid: false,
|
|
116
|
+
code: "PriorityFeeTooLow",
|
|
117
|
+
reason: `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) must be at least ${MIN_VAULT_PRIORITY_FEE_PER_GAS.toString()} wei (0.1 gwei).`
|
|
118
|
+
};
|
|
119
|
+
if (maxPriorityFeePerGas > MAX_VAULT_PRIORITY_FEE_PER_GAS) return {
|
|
120
|
+
valid: false,
|
|
121
|
+
code: "PriorityFeeTooHigh",
|
|
122
|
+
reason: `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) must not exceed ${MAX_VAULT_PRIORITY_FEE_PER_GAS.toString()} wei (3 gwei).`
|
|
123
|
+
};
|
|
124
|
+
if (gasLimit !== void 0 && gasLimit !== null && gasLimit * maxFeePerGas > MAX_VAULT_TRANSACTION_GAS_COST) return {
|
|
125
|
+
valid: false,
|
|
126
|
+
code: "GasCostTooHigh",
|
|
127
|
+
reason: `Signed transaction maximum gas cost (${(gasLimit * maxFeePerGas).toString()} wei) must not exceed ${MAX_VAULT_TRANSACTION_GAS_COST.toString()} wei (0.015 ETH).`
|
|
128
|
+
};
|
|
129
|
+
if (quote !== void 0 && maxFeePerGas < quote.minimumMaxFeePerGas) return {
|
|
130
|
+
valid: false,
|
|
131
|
+
code: "MaxFeeTooLow",
|
|
132
|
+
reason: `Signed transaction maxFeePerGas (${maxFeePerGas.toString()} wei) must be at least ${quote.minimumMaxFeePerGas.toString()} wei for the buffered next-block base fee and 0.1 gwei minimum priority fee.`
|
|
133
|
+
};
|
|
134
|
+
return { valid: true };
|
|
135
|
+
}
|
|
136
|
+
async function resolveVaultTransactionFeeQuote({ readFeeHistory, readFallbackEstimate }) {
|
|
137
|
+
let feeHistoryError;
|
|
138
|
+
try {
|
|
139
|
+
const quote = resolveFeeHistoryQuote(await readFeeHistory());
|
|
140
|
+
if (quote !== null) return quote;
|
|
141
|
+
feeHistoryError = new Error("eth_feeHistory returned incomplete base fee or reward data");
|
|
142
|
+
} catch (error) {
|
|
143
|
+
feeHistoryError = error;
|
|
144
|
+
}
|
|
145
|
+
try {
|
|
146
|
+
return resolveFallbackQuote(await readFallbackEstimate());
|
|
147
|
+
} catch (fallbackError) {
|
|
148
|
+
throw new VaultTransactionFeeEstimationError({
|
|
149
|
+
feeHistoryError,
|
|
150
|
+
fallbackError
|
|
151
|
+
});
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Resolve explicit EIP-1559 fees for operator-controlled vault transactions.
|
|
156
|
+
*
|
|
157
|
+
* The normal path follows the median p90 priority fee from the last 20 blocks,
|
|
158
|
+
* with a 0.1 gwei floor and 3 gwei ceiling. If fee history is unavailable,
|
|
159
|
+
* Viem's estimate is used while preserving those bounds and its original
|
|
160
|
+
* base-fee allowance.
|
|
161
|
+
*/
|
|
162
|
+
async function getVaultTransactionFeeQuote(client) {
|
|
163
|
+
return resolveVaultTransactionFeeQuote({
|
|
164
|
+
readFeeHistory: () => getFeeHistory(client, {
|
|
165
|
+
blockCount: FEE_HISTORY_BLOCK_COUNT,
|
|
166
|
+
blockTag: "latest",
|
|
167
|
+
rewardPercentiles: FEE_HISTORY_REWARD_PERCENTILES
|
|
168
|
+
}),
|
|
169
|
+
readFallbackEstimate: () => estimateFeesPerGas(client)
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
//#endregion
|
|
174
|
+
export { MAX_VAULT_PRIORITY_FEE_PER_GAS, MAX_VAULT_TRANSACTION_GAS_COST, MIN_VAULT_PRIORITY_FEE_PER_GAS, VaultTransactionFeeEstimationError, VaultTransactionGasCostLimitError, applyVaultTransactionGasCostLimit, bufferVaultTransactionGasEstimate, getVaultTransactionFeeQuote, validateVaultSignedTransactionFeeCaps };
|
|
175
|
+
//# sourceMappingURL=transactionFees-CVi2TrJh.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transactionFees-CVi2TrJh.js","names":["value: bigint","numerator: bigint","denominator: bigint","values: readonly bigint[]","priorityFee: bigint","quote: VaultTransactionFeeQuote","gasLimit: bigint","gasEstimate: bigint","feeCaps: VaultSignedTransactionFeeCaps","quote?: VaultTransactionFeeQuote","feeHistoryError: unknown","client: Client<Transport, chain>"],"sources":["../src/hypoVault/transactionFees.ts"],"sourcesContent":["import type { Chain, Client, Transport } from 'viem'\nimport { estimateFeesPerGas, getFeeHistory } from 'viem/actions'\n\nexport const MIN_VAULT_PRIORITY_FEE_PER_GAS = 100_000_000n // 0.1 gwei\nexport const MAX_VAULT_PRIORITY_FEE_PER_GAS = 3_000_000_000n // 3 gwei\nexport const MAX_VAULT_TRANSACTION_GAS_COST = 15_000_000_000_000_000n // 0.015 ETH\n\nconst FEE_HISTORY_BLOCK_COUNT = 20\nconst FEE_HISTORY_REWARD_PERCENTILES = [90]\nconst BASE_FEE_BUFFER_NUMERATOR = 1_125n\nconst BASE_FEE_BUFFER_DENOMINATOR = 1_000n\nconst GAS_ESTIMATE_BUFFER_NUMERATOR = 3n\nconst GAS_ESTIMATE_BUFFER_DENOMINATOR = 2n\n\nexport type VaultTransactionFeeQuote = {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n minimumMaxFeePerGas: bigint\n source: 'fee_history' | 'viem_fallback'\n}\n\nexport type VaultSignedTransactionFeeCaps = {\n gasLimit?: bigint | null\n maxFeePerGas: bigint | null\n maxPriorityFeePerGas: bigint | null\n}\n\nexport type VaultSignedTransactionFeeValidationResult =\n | { valid: true }\n | {\n valid: false\n code:\n | 'MissingEip1559Fees'\n | 'InvalidFeeCaps'\n | 'PriorityFeeTooLow'\n | 'PriorityFeeTooHigh'\n | 'MaxFeeTooLow'\n | 'GasCostTooHigh'\n reason: string\n }\n\nexport class VaultTransactionFeeEstimationError extends Error {\n readonly feeHistoryError: unknown\n readonly fallbackError: unknown\n\n constructor({\n feeHistoryError,\n fallbackError,\n }: {\n feeHistoryError: unknown\n fallbackError: unknown\n }) {\n super('Unable to estimate EIP-1559 fees for vault transaction')\n this.name = 'VaultTransactionFeeEstimationError'\n this.feeHistoryError = feeHistoryError\n this.fallbackError = fallbackError\n }\n}\n\nexport class VaultTransactionGasCostLimitError extends Error {\n readonly gasLimit: bigint\n readonly maximumAffordableFeePerGas: bigint\n readonly minimumRequiredFeePerGas: bigint\n\n constructor({\n gasLimit,\n maximumAffordableFeePerGas,\n minimumRequiredFeePerGas,\n }: {\n gasLimit: bigint\n maximumAffordableFeePerGas: bigint\n minimumRequiredFeePerGas: bigint\n }) {\n super(\n `Vault transaction cannot fit the ${MAX_VAULT_TRANSACTION_GAS_COST.toString()} wei gas-cost limit: ` +\n `gasLimit=${gasLimit.toString()}, maximumAffordableFeePerGas=${maximumAffordableFeePerGas.toString()}, ` +\n `minimumRequiredFeePerGas=${minimumRequiredFeePerGas.toString()}`,\n )\n this.name = 'VaultTransactionGasCostLimitError'\n this.gasLimit = gasLimit\n this.maximumAffordableFeePerGas = maximumAffordableFeePerGas\n this.minimumRequiredFeePerGas = minimumRequiredFeePerGas\n }\n}\n\ntype FeeHistorySnapshot = {\n baseFeePerGas: readonly bigint[]\n reward?: readonly (readonly bigint[])[] | undefined\n}\n\ntype FallbackFeeEstimate = {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n}\n\nfunction ceilMultiplyFraction(value: bigint, numerator: bigint, denominator: bigint): bigint {\n return (value * numerator + denominator - 1n) / denominator\n}\n\nfunction medianBigInt(values: readonly bigint[]): bigint | undefined {\n if (values.length === 0) return undefined\n const sorted = [...values].sort((left, right) => (left < right ? -1 : left > right ? 1 : 0))\n const upperMiddleIndex = Math.floor(sorted.length / 2)\n const upperMiddle = sorted[upperMiddleIndex]\n if (upperMiddle === undefined) return undefined\n if (sorted.length % 2 === 1) return upperMiddle\n const lowerMiddle = sorted[upperMiddleIndex - 1]\n return lowerMiddle === undefined ? undefined : (lowerMiddle + upperMiddle) / 2n\n}\n\nfunction clampPriorityFee(priorityFee: bigint): bigint {\n if (priorityFee < MIN_VAULT_PRIORITY_FEE_PER_GAS) return MIN_VAULT_PRIORITY_FEE_PER_GAS\n if (priorityFee > MAX_VAULT_PRIORITY_FEE_PER_GAS) return MAX_VAULT_PRIORITY_FEE_PER_GAS\n return priorityFee\n}\n\nfunction resolveFeeHistoryQuote({\n baseFeePerGas,\n reward,\n}: {\n baseFeePerGas: readonly bigint[]\n reward?: readonly (readonly bigint[])[] | undefined\n}): VaultTransactionFeeQuote | null {\n // feeHistory includes one additional base fee for the next block. The\n // second-to-last entry is therefore the latest mined block's base fee.\n const latestBaseFeeIndex = baseFeePerGas.length - 2\n if (latestBaseFeeIndex < 0 || reward === undefined || reward.length === 0) return null\n\n const p90Rewards = reward.flatMap((blockRewards) => {\n const p90 = blockRewards[0]\n return p90 === undefined ? [] : [p90]\n })\n const sampledPriorityFee = medianBigInt(p90Rewards)\n if (sampledPriorityFee === undefined) return null\n\n const maxPriorityFeePerGas = clampPriorityFee(sampledPriorityFee)\n const bufferedBaseFee = ceilMultiplyFraction(\n baseFeePerGas[latestBaseFeeIndex],\n BASE_FEE_BUFFER_NUMERATOR,\n BASE_FEE_BUFFER_DENOMINATOR,\n )\n\n return {\n maxFeePerGas: bufferedBaseFee + maxPriorityFeePerGas,\n maxPriorityFeePerGas,\n minimumMaxFeePerGas: bufferedBaseFee + MIN_VAULT_PRIORITY_FEE_PER_GAS,\n source: 'fee_history',\n }\n}\n\nfunction resolveFallbackQuote({\n maxFeePerGas: estimatedMaxFeePerGas,\n maxPriorityFeePerGas: estimatedPriorityFeePerGas,\n}: {\n maxFeePerGas: bigint\n maxPriorityFeePerGas: bigint\n}): VaultTransactionFeeQuote {\n const maxPriorityFeePerGas = clampPriorityFee(estimatedPriorityFeePerGas)\n const estimatedBaseFeeAllowance =\n estimatedMaxFeePerGas > estimatedPriorityFeePerGas\n ? estimatedMaxFeePerGas - estimatedPriorityFeePerGas\n : 0n\n\n return {\n maxFeePerGas: estimatedBaseFeeAllowance + maxPriorityFeePerGas,\n maxPriorityFeePerGas,\n minimumMaxFeePerGas: estimatedBaseFeeAllowance + MIN_VAULT_PRIORITY_FEE_PER_GAS,\n source: 'viem_fallback',\n }\n}\n\nexport function applyVaultTransactionGasCostLimit(\n quote: VaultTransactionFeeQuote,\n gasLimit: bigint,\n): VaultTransactionFeeQuote {\n if (gasLimit <= 0n) {\n throw new Error(`Vault transaction gas limit must be positive, received ${gasLimit.toString()}`)\n }\n\n const maximumAffordableFeePerGas = MAX_VAULT_TRANSACTION_GAS_COST / gasLimit\n if (maximumAffordableFeePerGas < quote.minimumMaxFeePerGas) {\n throw new VaultTransactionGasCostLimitError({\n gasLimit,\n maximumAffordableFeePerGas,\n minimumRequiredFeePerGas: quote.minimumMaxFeePerGas,\n })\n }\n\n if (quote.maxFeePerGas <= maximumAffordableFeePerGas) return quote\n\n const bufferedBaseFee = quote.minimumMaxFeePerGas - MIN_VAULT_PRIORITY_FEE_PER_GAS\n const affordablePriorityFee = maximumAffordableFeePerGas - bufferedBaseFee\n return {\n ...quote,\n maxFeePerGas: maximumAffordableFeePerGas,\n maxPriorityFeePerGas:\n quote.maxPriorityFeePerGas < affordablePriorityFee\n ? quote.maxPriorityFeePerGas\n : affordablePriorityFee,\n }\n}\n\nexport function bufferVaultTransactionGasEstimate(gasEstimate: bigint): bigint {\n if (gasEstimate <= 0n) {\n throw new Error(\n `Vault transaction gas estimate must be positive, received ${gasEstimate.toString()}`,\n )\n }\n return ceilMultiplyFraction(\n gasEstimate,\n GAS_ESTIMATE_BUFFER_NUMERATOR,\n GAS_ESTIMATE_BUFFER_DENOMINATOR,\n )\n}\n\nexport function validateVaultSignedTransactionFeeCaps(\n feeCaps: VaultSignedTransactionFeeCaps,\n quote?: VaultTransactionFeeQuote,\n): VaultSignedTransactionFeeValidationResult {\n const { gasLimit, maxFeePerGas, maxPriorityFeePerGas } = feeCaps\n if (maxFeePerGas === null || maxPriorityFeePerGas === null) {\n return {\n valid: false,\n code: 'MissingEip1559Fees',\n reason: 'Signed transaction must include EIP-1559 max fee and priority fee caps.',\n }\n }\n if (maxPriorityFeePerGas > maxFeePerGas) {\n return {\n valid: false,\n code: 'InvalidFeeCaps',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `cannot exceed maxFeePerGas (${maxFeePerGas.toString()} wei).`,\n }\n }\n if (maxPriorityFeePerGas < MIN_VAULT_PRIORITY_FEE_PER_GAS) {\n return {\n valid: false,\n code: 'PriorityFeeTooLow',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `must be at least ${MIN_VAULT_PRIORITY_FEE_PER_GAS.toString()} wei (0.1 gwei).`,\n }\n }\n if (maxPriorityFeePerGas > MAX_VAULT_PRIORITY_FEE_PER_GAS) {\n return {\n valid: false,\n code: 'PriorityFeeTooHigh',\n reason:\n `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) ` +\n `must not exceed ${MAX_VAULT_PRIORITY_FEE_PER_GAS.toString()} wei (3 gwei).`,\n }\n }\n if (\n gasLimit !== undefined &&\n gasLimit !== null &&\n gasLimit * maxFeePerGas > MAX_VAULT_TRANSACTION_GAS_COST\n ) {\n return {\n valid: false,\n code: 'GasCostTooHigh',\n reason:\n `Signed transaction maximum gas cost (${(gasLimit * maxFeePerGas).toString()} wei) ` +\n `must not exceed ${MAX_VAULT_TRANSACTION_GAS_COST.toString()} wei (0.015 ETH).`,\n }\n }\n if (quote !== undefined && maxFeePerGas < quote.minimumMaxFeePerGas) {\n return {\n valid: false,\n code: 'MaxFeeTooLow',\n reason:\n `Signed transaction maxFeePerGas (${maxFeePerGas.toString()} wei) must be at least ` +\n `${quote.minimumMaxFeePerGas.toString()} wei for the buffered next-block base fee ` +\n 'and 0.1 gwei minimum priority fee.',\n }\n }\n return { valid: true }\n}\n\nasync function resolveVaultTransactionFeeQuote({\n readFeeHistory,\n readFallbackEstimate,\n}: {\n readFeeHistory: () => Promise<FeeHistorySnapshot>\n readFallbackEstimate: () => Promise<FallbackFeeEstimate>\n}): Promise<VaultTransactionFeeQuote> {\n let feeHistoryError: unknown\n try {\n const quote = resolveFeeHistoryQuote(await readFeeHistory())\n if (quote !== null) return quote\n feeHistoryError = new Error('eth_feeHistory returned incomplete base fee or reward data')\n } catch (error) {\n feeHistoryError = error\n }\n\n try {\n return resolveFallbackQuote(await readFallbackEstimate())\n } catch (fallbackError) {\n throw new VaultTransactionFeeEstimationError({ feeHistoryError, fallbackError })\n }\n}\n\n/**\n * Resolve explicit EIP-1559 fees for operator-controlled vault transactions.\n *\n * The normal path follows the median p90 priority fee from the last 20 blocks,\n * with a 0.1 gwei floor and 3 gwei ceiling. If fee history is unavailable,\n * Viem's estimate is used while preserving those bounds and its original\n * base-fee allowance.\n */\nexport async function getVaultTransactionFeeQuote<chain extends Chain | undefined>(\n client: Client<Transport, chain>,\n): Promise<VaultTransactionFeeQuote> {\n return resolveVaultTransactionFeeQuote({\n readFeeHistory: () =>\n getFeeHistory(client, {\n blockCount: FEE_HISTORY_BLOCK_COUNT,\n blockTag: 'latest',\n rewardPercentiles: FEE_HISTORY_REWARD_PERCENTILES,\n }),\n readFallbackEstimate: () => estimateFeesPerGas(client),\n })\n}\n\nexport const __transactionFeeTestUtils = {\n resolveFallbackQuote,\n resolveFeeHistoryQuote,\n resolveVaultTransactionFeeQuote,\n}\n"],"mappings":"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"}
|