@panoptic-eng/sdk 1.0.55 → 1.0.57
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/chainDeployments-D_bvyWEm.js +408 -0
- package/dist/{cow-BahYFov0.js → cow-45nsAaEr.js} +1 -1
- package/dist/deployments.js +2 -2
- package/dist/deployments.js.map +1 -1
- package/dist/index.d.ts +83 -41
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +323 -78
- package/dist/index.js.map +1 -1
- package/dist/{irm-BsRdsXMS.js → irm-DsM35dGO.js} +2 -409
- package/dist/panoptic/v2/index.d.ts +147 -1
- package/dist/panoptic/v2/index.d.ts.map +1 -1
- package/dist/panoptic/v2/index.js +266 -22
- package/dist/panoptic/v2/index.js.map +1 -1
- package/dist/panoptic/v2/react-public.d.ts +147 -1
- package/dist/panoptic/v2/react-public.d.ts.map +1 -1
- package/dist/panoptic/v2/react-public.js +266 -22
- package/dist/panoptic/v2/react-public.js.map +1 -1
- package/dist/{rates-B0uPUed1.js → rates-CEJz8fjw.js} +1 -1
- package/dist/{router-BhJqStSJ.js → router-DOUAKfn6.js} +2 -2
- package/dist/{router-kAllFA4i.js → router-DUOHNdYZ.js} +21 -12
- package/dist/{transactionFees-DE-Whxab.js → transactionFees-qweht4Rd.js} +54 -28
- package/dist/uniswap/index.d.ts +6 -1
- package/dist/uniswap/index.d.ts.map +1 -1
- package/dist/uniswap/index.js +19 -10
- package/dist/uniswap/index.js.map +1 -1
- package/dist/{v2-bpvC_P3W.js → v2-B3MqHVHt.js} +247 -12
- package/dist/vault-transaction-fees.d.ts +5 -3
- package/dist/vault-transaction-fees.d.ts.map +1 -1
- package/dist/vault-transaction-fees.js +443 -28
- package/dist/vault-transaction-fees.js.map +1 -1
- package/dist/{writes-B4nGIi6h.js → writes-CQrevcCu.js} +2 -2
- package/dist/zodiac/index.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,12 +1,210 @@
|
|
|
1
|
-
import { BaseError, ContractFunctionExecutionError, ContractFunctionRevertedError, concat, decodeAbiParameters, decodeFunctionData, encodeAbiParameters, encodeFunctionData, encodePacked, getAddress, hexToBigInt, keccak256, maxUint256, parseAbi, toBytes, toFunctionSelector, zeroAddress } from "viem";
|
|
1
|
+
import { BaseError, ContractFunctionExecutionError, ContractFunctionRevertedError, concat, decodeAbiParameters, decodeFunctionData, encodeAbiParameters, encodeFunctionData, encodePacked, erc20Abi, getAddress, hexToBigInt, keccak256, maxUint256, parseAbi, toBytes, toFunctionSelector, zeroAddress } from "viem";
|
|
2
|
+
import { z } from "zod";
|
|
2
3
|
import { estimateFeesPerGas, getBlock, getBlockNumber, getFeeHistory, readContract, simulateContract, writeContract } from "viem/actions";
|
|
3
4
|
import Decimal from "decimal.js";
|
|
4
5
|
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
5
6
|
import { useAccount, useReadContract, useSimulateContract, useWaitForTransactionReceipt, useWriteContract } from "wagmi";
|
|
6
|
-
import { z } from "zod";
|
|
7
7
|
import { GraphQLClient } from "graphql-request";
|
|
8
8
|
import gql from "graphql-tag";
|
|
9
9
|
|
|
10
|
+
//#region src/lending/normalize.ts
|
|
11
|
+
function normalizeUnsignedBigInt(value) {
|
|
12
|
+
let normalized;
|
|
13
|
+
if (typeof value === "bigint") normalized = value;
|
|
14
|
+
else if (typeof value === "string" && /^\d+$/.test(value)) normalized = BigInt(value);
|
|
15
|
+
else if (typeof value === "number" && Number.isSafeInteger(value)) normalized = BigInt(value);
|
|
16
|
+
else throw new TypeError("Expected an unsigned bigint-compatible value");
|
|
17
|
+
if (normalized < 0n) throw new RangeError("Expected a nonnegative value");
|
|
18
|
+
return normalized;
|
|
19
|
+
}
|
|
20
|
+
function normalizeTokenDecimals(value) {
|
|
21
|
+
const normalized = typeof value === "string" && /^\d+$/.test(value) ? Number(value) : value;
|
|
22
|
+
if (typeof normalized !== "number" || !Number.isSafeInteger(normalized) || normalized < 0 || normalized > 255) throw new RangeError("Expected token decimals between 0 and 255");
|
|
23
|
+
return normalized;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
//#endregion
|
|
27
|
+
//#region src/lending/aave.ts
|
|
28
|
+
const providerAbi = parseAbi(["function getPoolDataProvider() view returns (address)", "function getPriceOracle() view returns (address)"]);
|
|
29
|
+
const dataAbi = parseAbi([
|
|
30
|
+
"function getAllReservesTokens() view returns ((string symbol, address tokenAddress)[])",
|
|
31
|
+
"function getAllATokens() view returns ((string symbol, address tokenAddress)[])",
|
|
32
|
+
"function getUserReserveData(address asset, address user) view returns (uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint40,bool)"
|
|
33
|
+
]);
|
|
34
|
+
const oracleAbi = parseAbi(["function BASE_CURRENCY_UNIT() view returns (uint256)", "function getAssetPrice(address asset) view returns (uint256)"]);
|
|
35
|
+
/** Reads accrued Aave V3 balances and oracle prices at a single block. */
|
|
36
|
+
async function getAaveHoldings({ client, provider, account }) {
|
|
37
|
+
const blockNumber = normalizeUnsignedBigInt(await client.getBlockNumber());
|
|
38
|
+
const [dataProvider, oracle] = await client.multicall({
|
|
39
|
+
blockNumber,
|
|
40
|
+
allowFailure: false,
|
|
41
|
+
contracts: [{
|
|
42
|
+
address: provider,
|
|
43
|
+
abi: providerAbi,
|
|
44
|
+
functionName: "getPoolDataProvider"
|
|
45
|
+
}, {
|
|
46
|
+
address: provider,
|
|
47
|
+
abi: providerAbi,
|
|
48
|
+
functionName: "getPriceOracle"
|
|
49
|
+
}]
|
|
50
|
+
});
|
|
51
|
+
const [reserves, receipts, rawPriceUnit] = await Promise.all([
|
|
52
|
+
client.readContract({
|
|
53
|
+
address: dataProvider,
|
|
54
|
+
abi: dataAbi,
|
|
55
|
+
functionName: "getAllReservesTokens",
|
|
56
|
+
blockNumber
|
|
57
|
+
}),
|
|
58
|
+
client.readContract({
|
|
59
|
+
address: dataProvider,
|
|
60
|
+
abi: dataAbi,
|
|
61
|
+
functionName: "getAllATokens",
|
|
62
|
+
blockNumber
|
|
63
|
+
}),
|
|
64
|
+
client.readContract({
|
|
65
|
+
address: oracle,
|
|
66
|
+
abi: oracleAbi,
|
|
67
|
+
functionName: "BASE_CURRENCY_UNIT",
|
|
68
|
+
blockNumber
|
|
69
|
+
})
|
|
70
|
+
]);
|
|
71
|
+
const priceUnit = normalizeUnsignedBigInt(rawPriceUnit);
|
|
72
|
+
const rawBalances = await client.multicall({
|
|
73
|
+
blockNumber,
|
|
74
|
+
allowFailure: false,
|
|
75
|
+
contracts: reserves.map((reserve) => ({
|
|
76
|
+
address: dataProvider,
|
|
77
|
+
abi: dataAbi,
|
|
78
|
+
functionName: "getUserReserveData",
|
|
79
|
+
args: [reserve.tokenAddress, account]
|
|
80
|
+
}))
|
|
81
|
+
});
|
|
82
|
+
const balances = rawBalances.map(([supplied, stableDebt, variableDebt]) => [
|
|
83
|
+
normalizeUnsignedBigInt(supplied),
|
|
84
|
+
normalizeUnsignedBigInt(stableDebt),
|
|
85
|
+
normalizeUnsignedBigInt(variableDebt)
|
|
86
|
+
]);
|
|
87
|
+
const holdings = await Promise.all(reserves.flatMap((reserve, i) => {
|
|
88
|
+
const [supplied, stableDebt, variableDebt] = balances[i];
|
|
89
|
+
const debt = stableDebt + variableDebt;
|
|
90
|
+
if (supplied === 0n && debt === 0n) return [];
|
|
91
|
+
return [(async () => {
|
|
92
|
+
const [rawDecimals, rawPrice] = await Promise.all([client.readContract({
|
|
93
|
+
address: reserve.tokenAddress,
|
|
94
|
+
abi: erc20Abi,
|
|
95
|
+
functionName: "decimals",
|
|
96
|
+
blockNumber
|
|
97
|
+
}), client.readContract({
|
|
98
|
+
address: oracle,
|
|
99
|
+
abi: oracleAbi,
|
|
100
|
+
functionName: "getAssetPrice",
|
|
101
|
+
args: [reserve.tokenAddress],
|
|
102
|
+
blockNumber
|
|
103
|
+
})]);
|
|
104
|
+
const decimals = normalizeTokenDecimals(rawDecimals);
|
|
105
|
+
const price = normalizeUnsignedBigInt(rawPrice);
|
|
106
|
+
return {
|
|
107
|
+
address: reserve.tokenAddress,
|
|
108
|
+
symbol: reserve.symbol,
|
|
109
|
+
decimals,
|
|
110
|
+
supplied,
|
|
111
|
+
debt,
|
|
112
|
+
price,
|
|
113
|
+
priceUnit
|
|
114
|
+
};
|
|
115
|
+
})()];
|
|
116
|
+
}));
|
|
117
|
+
return {
|
|
118
|
+
holdings,
|
|
119
|
+
receiptTokens: receipts.map((token) => token.tokenAddress),
|
|
120
|
+
blockNumber
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
//#endregion
|
|
125
|
+
//#region src/lending/morpho.ts
|
|
126
|
+
const amount = z.union([z.string().regex(/^\d+$/), z.number().int().nonnegative().safe().transform((value) => value.toString())]).transform(normalizeUnsignedBigInt);
|
|
127
|
+
const asset = z.object({
|
|
128
|
+
address: z.string().transform((value) => getAddress(value)),
|
|
129
|
+
symbol: z.string(),
|
|
130
|
+
decimals: z.union([z.number(), z.string()]).transform(normalizeTokenDecimals),
|
|
131
|
+
price: z.object({ usd: z.number().finite().nonnegative().nullable() }).nullable()
|
|
132
|
+
});
|
|
133
|
+
const responseSchema = z.object({ data: z.object({ marketPositions: z.object({ items: z.array(z.object({
|
|
134
|
+
market: z.object({
|
|
135
|
+
marketId: z.string(),
|
|
136
|
+
loanAsset: asset,
|
|
137
|
+
collateralAsset: asset.nullable()
|
|
138
|
+
}),
|
|
139
|
+
state: z.object({
|
|
140
|
+
supplyAssets: amount,
|
|
141
|
+
borrowAssets: amount,
|
|
142
|
+
collateral: amount
|
|
143
|
+
})
|
|
144
|
+
})) }) }) });
|
|
145
|
+
/** Indexed Morpho Blue balances; amounts include the indexer's accrued interest. */
|
|
146
|
+
async function getMorphoHoldings(account, chainId) {
|
|
147
|
+
const holdings = [];
|
|
148
|
+
for (let skip = 0; skip < 1e4; skip += 100) {
|
|
149
|
+
const response = await fetch("https://api.morpho.org/graphql", {
|
|
150
|
+
method: "POST",
|
|
151
|
+
headers: { "Content-Type": "application/json" },
|
|
152
|
+
signal: AbortSignal.timeout(15e3),
|
|
153
|
+
body: JSON.stringify({
|
|
154
|
+
query: `query Positions($account: [String!], $chains: [Int!], $skip: Int!) {
|
|
155
|
+
marketPositions(first: 100, skip: $skip, where: {userAddress_in: $account, chainId_in: $chains}) {
|
|
156
|
+
items { market { marketId loanAsset { address symbol decimals price { usd } }
|
|
157
|
+
collateralAsset { address symbol decimals price { usd } } }
|
|
158
|
+
state { supplyAssets borrowAssets collateral } }
|
|
159
|
+
}
|
|
160
|
+
}`,
|
|
161
|
+
variables: {
|
|
162
|
+
account: [account],
|
|
163
|
+
chains: [chainId],
|
|
164
|
+
skip
|
|
165
|
+
}
|
|
166
|
+
})
|
|
167
|
+
});
|
|
168
|
+
if (!response.ok) throw new Error("Morpho positions unavailable");
|
|
169
|
+
const body = await response.json();
|
|
170
|
+
if (typeof body === "object" && body !== null && "errors" in body) throw new Error("Morpho query failed");
|
|
171
|
+
const items = responseSchema.parse(body).data.marketPositions.items;
|
|
172
|
+
for (const { market, state } of items) {
|
|
173
|
+
const legs = [
|
|
174
|
+
{
|
|
175
|
+
token: market.loanAsset,
|
|
176
|
+
amount: state.supplyAssets,
|
|
177
|
+
kind: "supply"
|
|
178
|
+
},
|
|
179
|
+
{
|
|
180
|
+
token: market.loanAsset,
|
|
181
|
+
amount: -state.borrowAssets,
|
|
182
|
+
kind: "debt"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
token: market.collateralAsset,
|
|
186
|
+
amount: state.collateral,
|
|
187
|
+
kind: "collateral"
|
|
188
|
+
}
|
|
189
|
+
];
|
|
190
|
+
for (const leg of legs) {
|
|
191
|
+
if (leg.amount === 0n) continue;
|
|
192
|
+
if (leg.token === null) throw new Error("Missing Morpho collateral asset");
|
|
193
|
+
holdings.push({
|
|
194
|
+
...leg.token,
|
|
195
|
+
amount: leg.amount,
|
|
196
|
+
kind: leg.kind,
|
|
197
|
+
marketId: market.marketId,
|
|
198
|
+
priceUsd: leg.token.price?.usd?.toString() ?? null
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
if (items.length < 100) return holdings;
|
|
203
|
+
}
|
|
204
|
+
throw new Error("Morpho position pagination limit exceeded");
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
//#endregion
|
|
10
208
|
//#region src/abis/CollateralTracker.ts
|
|
11
209
|
const CollateralTrackerAbi = [
|
|
12
210
|
{
|
|
@@ -23652,7 +23850,7 @@ const UINT24_MASK = (1n << 24n) - 1n;
|
|
|
23652
23850
|
|
|
23653
23851
|
//#endregion
|
|
23654
23852
|
//#region src/panoptic/v2/reads/pool.ts
|
|
23655
|
-
const erc20Abi$
|
|
23853
|
+
const erc20Abi$3 = [
|
|
23656
23854
|
{
|
|
23657
23855
|
type: "function",
|
|
23658
23856
|
name: "symbol",
|
|
@@ -23746,33 +23944,33 @@ async function getPoolMetadata(params) {
|
|
|
23746
23944
|
const erc20Contracts = [...isToken0Native ? [] : [
|
|
23747
23945
|
{
|
|
23748
23946
|
address: token0Asset,
|
|
23749
|
-
abi: erc20Abi$
|
|
23947
|
+
abi: erc20Abi$3,
|
|
23750
23948
|
functionName: "symbol"
|
|
23751
23949
|
},
|
|
23752
23950
|
{
|
|
23753
23951
|
address: token0Asset,
|
|
23754
|
-
abi: erc20Abi$
|
|
23952
|
+
abi: erc20Abi$3,
|
|
23755
23953
|
functionName: "decimals"
|
|
23756
23954
|
},
|
|
23757
23955
|
{
|
|
23758
23956
|
address: token0Asset,
|
|
23759
|
-
abi: erc20Abi$
|
|
23957
|
+
abi: erc20Abi$3,
|
|
23760
23958
|
functionName: "name"
|
|
23761
23959
|
}
|
|
23762
23960
|
], ...isToken1Native ? [] : [
|
|
23763
23961
|
{
|
|
23764
23962
|
address: token1Asset,
|
|
23765
|
-
abi: erc20Abi$
|
|
23963
|
+
abi: erc20Abi$3,
|
|
23766
23964
|
functionName: "symbol"
|
|
23767
23965
|
},
|
|
23768
23966
|
{
|
|
23769
23967
|
address: token1Asset,
|
|
23770
|
-
abi: erc20Abi$
|
|
23968
|
+
abi: erc20Abi$3,
|
|
23771
23969
|
functionName: "decimals"
|
|
23772
23970
|
},
|
|
23773
23971
|
{
|
|
23774
23972
|
address: token1Asset,
|
|
23775
|
-
abi: erc20Abi$
|
|
23973
|
+
abi: erc20Abi$3,
|
|
23776
23974
|
functionName: "name"
|
|
23777
23975
|
}
|
|
23778
23976
|
]];
|
|
@@ -24074,7 +24272,7 @@ async function getAccountCollateral(params) {
|
|
|
24074
24272
|
//#endregion
|
|
24075
24273
|
//#region src/panoptic/v2/reads/collateral.ts
|
|
24076
24274
|
const SECONDS_PER_YEAR$3 = 31536000n;
|
|
24077
|
-
const erc20Abi$
|
|
24275
|
+
const erc20Abi$2 = [{
|
|
24078
24276
|
type: "function",
|
|
24079
24277
|
name: "symbol",
|
|
24080
24278
|
inputs: [],
|
|
@@ -24183,11 +24381,11 @@ async function getCollateralData(params) {
|
|
|
24183
24381
|
const [symbol, decimals] = await client.multicall({
|
|
24184
24382
|
contracts: [{
|
|
24185
24383
|
address: assetAddress,
|
|
24186
|
-
abi: erc20Abi$
|
|
24384
|
+
abi: erc20Abi$2,
|
|
24187
24385
|
functionName: "symbol"
|
|
24188
24386
|
}, {
|
|
24189
24387
|
address: assetAddress,
|
|
24190
|
-
abi: erc20Abi$
|
|
24388
|
+
abi: erc20Abi$2,
|
|
24191
24389
|
functionName: "decimals"
|
|
24192
24390
|
}],
|
|
24193
24391
|
allowFailure: false
|
|
@@ -24585,7 +24783,7 @@ const VAULT_DISPLAY_NAMES_PER_CHAIN = {
|
|
|
24585
24783
|
[sepoliaVaults.wethPlpVault.toLowerCase()]: "PLP Vault",
|
|
24586
24784
|
[sepoliaVaults.usdcPlpVault.toLowerCase()]: "Unicorn Vault"
|
|
24587
24785
|
},
|
|
24588
|
-
[ROBINHOOD_CHAIN_ID]: { [robinhoodUsdgVault.toLowerCase()]: "
|
|
24786
|
+
[ROBINHOOD_CHAIN_ID]: { [robinhoodUsdgVault.toLowerCase()]: "0DTE +67∆ Vault" }
|
|
24589
24787
|
};
|
|
24590
24788
|
const VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN = {
|
|
24591
24789
|
[MAINNET_CHAIN_ID]: {
|
|
@@ -24602,7 +24800,7 @@ const VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN = {
|
|
|
24602
24800
|
[sepoliaVaults.wethPlpVault.toLowerCase()]: () => "PLP Vault",
|
|
24603
24801
|
[sepoliaVaults.usdcPlpVault.toLowerCase()]: () => "Unicorn Vault"
|
|
24604
24802
|
},
|
|
24605
|
-
[ROBINHOOD_CHAIN_ID]: { [robinhoodUsdgVault.toLowerCase()]: () => "
|
|
24803
|
+
[ROBINHOOD_CHAIN_ID]: { [robinhoodUsdgVault.toLowerCase()]: () => "0DTE +67∆ Vault" }
|
|
24606
24804
|
};
|
|
24607
24805
|
function resolveVaultDisplayName({ chainId, vaultAddress: vaultAddress$1, underlyingSymbol, fallbackName }) {
|
|
24608
24806
|
const vaultAddressLower = vaultAddress$1.toLowerCase();
|
|
@@ -25379,7 +25577,7 @@ const trackerLeaves = [
|
|
|
25379
25577
|
}
|
|
25380
25578
|
];
|
|
25381
25579
|
const dispatchLeaf = {
|
|
25382
|
-
description: "Dispatch mint/burn options on
|
|
25580
|
+
description: "Dispatch mint/burn options on PanopticPool",
|
|
25383
25581
|
target: pool,
|
|
25384
25582
|
functionSignature: dispatchSignature,
|
|
25385
25583
|
addressArguments: [],
|
|
@@ -25412,8 +25610,8 @@ const UsdgPlpVaultRobinhoodProdConfig = {
|
|
|
25412
25610
|
artifactSet: "robinhood-prod",
|
|
25413
25611
|
vaultAssetIndex: 1n,
|
|
25414
25612
|
manageCycleIntervalMs: 6e5,
|
|
25415
|
-
vaultCapInUnderlying:
|
|
25416
|
-
vaultCapInShares:
|
|
25613
|
+
vaultCapInUnderlying: 100000000n,
|
|
25614
|
+
vaultCapInShares: 100000000000000n,
|
|
25417
25615
|
allowUnlimitedDepositRequestIfCapNotReached: true,
|
|
25418
25616
|
maxBuyingPowerUsageBps: 6600,
|
|
25419
25617
|
poolDeploymentBlock: Number(ROBINHOOD_SPY_USDG_POOL_DEPLOYMENT_BLOCK),
|
|
@@ -25436,13 +25634,14 @@ const UsdgPlpVaultRobinhoodProdConfig = {
|
|
|
25436
25634
|
allocationBps: 1e4
|
|
25437
25635
|
}] },
|
|
25438
25636
|
deltaHedge: {
|
|
25637
|
+
targetDeltaBps: 6700n,
|
|
25439
25638
|
deltaThresholdBps: 200n,
|
|
25440
25639
|
maxHedgeSlots: 3
|
|
25441
25640
|
},
|
|
25442
25641
|
alerts: { outOfRangeEnabled: true },
|
|
25443
25642
|
reporting: {
|
|
25444
25643
|
assetSymbol: "USDG",
|
|
25445
|
-
vaultLabel: "
|
|
25644
|
+
vaultLabel: "0DTE +67∆ Vault"
|
|
25446
25645
|
}
|
|
25447
25646
|
};
|
|
25448
25647
|
|
|
@@ -26734,6 +26933,8 @@ async function resolveMainnetV3AuthorizationArtifacts({ viemClient, chainId, vau
|
|
|
26734
26933
|
const MAINNET_DEPLOYMENT$1 = requireChainDeployment(MAINNET_CHAIN_ID);
|
|
26735
26934
|
const MAINNET_POOL_RETIREMENT_BLOCK = 25898997n;
|
|
26736
26935
|
const MAINNET_POOL_RETIREMENT_TRANSACTION = "0xfca6a6dd0f081649dd6f50496175a58e6a119d574b594390beab23618b05ba2c";
|
|
26936
|
+
const ROBINHOOD_USDG_VAULT_DEPLOYMENT_BLOCK = 63972776n;
|
|
26937
|
+
const ROBINHOOD_USDG_VAULT_DEPLOYMENT_TRANSACTION = "0x738c8a6d30a45f9b71d2d6260aa1c04aff558489631b3a9c6ccd5f49e0f57df4";
|
|
26737
26938
|
const POOL_INFO_ARRAY_ABI = {
|
|
26738
26939
|
type: "tuple[]",
|
|
26739
26940
|
components: [
|
|
@@ -26852,6 +27053,15 @@ const MAINNET_VAULT_HISTORIES = [{
|
|
|
26852
27053
|
}
|
|
26853
27054
|
]
|
|
26854
27055
|
}];
|
|
27056
|
+
const ROBINHOOD_VAULT_HISTORIES = [{
|
|
27057
|
+
vaultAddress: RobinhoodUSDGPLPVaultPoolInfos.vaultAddress,
|
|
27058
|
+
poolConfigurations: [poolConfiguration(ROBINHOOD_USDG_VAULT_DEPLOYMENT_BLOCK, ROBINHOOD_USDG_VAULT_DEPLOYMENT_TRANSACTION, RobinhoodUSDGPLPVaultPoolInfos.poolInfos)],
|
|
27059
|
+
managerRootTransitions: [{
|
|
27060
|
+
activationBlockNumber: ROBINHOOD_USDG_VAULT_DEPLOYMENT_BLOCK,
|
|
27061
|
+
transactionHash: ROBINHOOD_USDG_VAULT_DEPLOYMENT_TRANSACTION,
|
|
27062
|
+
manageRoot: "0x5ef821042a85fea05901e4612e8a8d60efd2468ca08f0810d5691e23ea98967f"
|
|
27063
|
+
}]
|
|
27064
|
+
}];
|
|
26855
27065
|
function copyPoolConfiguration(configuration) {
|
|
26856
27066
|
return {
|
|
26857
27067
|
...configuration,
|
|
@@ -26869,9 +27079,10 @@ function copyHistory(history) {
|
|
|
26869
27079
|
};
|
|
26870
27080
|
}
|
|
26871
27081
|
function findHistory(chainId, vaultAddress$1) {
|
|
26872
|
-
|
|
27082
|
+
const histories = chainId === MAINNET_CHAIN_ID ? MAINNET_VAULT_HISTORIES : chainId === ROBINHOOD_CHAIN_ID ? ROBINHOOD_VAULT_HISTORIES : null;
|
|
27083
|
+
if (histories === null) return null;
|
|
26873
27084
|
const normalizedVault = vaultAddress$1.toLowerCase();
|
|
26874
|
-
const history =
|
|
27085
|
+
const history = histories.find((candidate) => candidate.vaultAddress.toLowerCase() === normalizedVault);
|
|
26875
27086
|
return history === void 0 ? null : copyHistory(history);
|
|
26876
27087
|
}
|
|
26877
27088
|
function latestAtBlock(values, blockNumber) {
|
|
@@ -27620,7 +27831,7 @@ async function getLendingAllocationRows({ client, chainId, vaultAddress: vaultAd
|
|
|
27620
27831
|
|
|
27621
27832
|
//#endregion
|
|
27622
27833
|
//#region src/hypoVault/analytics/vaultLendingAllocation.ts
|
|
27623
|
-
const erc20Abi = [
|
|
27834
|
+
const erc20Abi$1 = [
|
|
27624
27835
|
{
|
|
27625
27836
|
type: "function",
|
|
27626
27837
|
name: "balanceOf",
|
|
@@ -27663,15 +27874,15 @@ const Q128 = 2n ** 128n;
|
|
|
27663
27874
|
* semantics (same as `~/utils/panopticMath` in the UI app, without the
|
|
27664
27875
|
* `@uniswap/v3-sdk` dependency).
|
|
27665
27876
|
*/
|
|
27666
|
-
function convert0to1(amount, sqrtPriceX96) {
|
|
27667
|
-
if (sqrtPriceX96 < Q128) return amount * sqrtPriceX96 * sqrtPriceX96 >> 192n;
|
|
27877
|
+
function convert0to1(amount$1, sqrtPriceX96) {
|
|
27878
|
+
if (sqrtPriceX96 < Q128) return amount$1 * sqrtPriceX96 * sqrtPriceX96 >> 192n;
|
|
27668
27879
|
const sp2Hi = sqrtPriceX96 * sqrtPriceX96 >> 64n;
|
|
27669
|
-
return amount * sp2Hi >> 128n;
|
|
27880
|
+
return amount$1 * sp2Hi >> 128n;
|
|
27670
27881
|
}
|
|
27671
|
-
function convert1to0(amount, sqrtPriceX96) {
|
|
27672
|
-
if (sqrtPriceX96 < Q128) return amount * 2n ** 192n / (sqrtPriceX96 * sqrtPriceX96);
|
|
27882
|
+
function convert1to0(amount$1, sqrtPriceX96) {
|
|
27883
|
+
if (sqrtPriceX96 < Q128) return amount$1 * 2n ** 192n / (sqrtPriceX96 * sqrtPriceX96);
|
|
27673
27884
|
const sp2Hi = sqrtPriceX96 * sqrtPriceX96 >> 64n;
|
|
27674
|
-
return amount * 2n ** 128n / sp2Hi;
|
|
27885
|
+
return amount$1 * 2n ** 128n / sp2Hi;
|
|
27675
27886
|
}
|
|
27676
27887
|
function adjustUnderlyingIdleBalance({ rawUnderlyingBalance, unfulfilledDepositAssets, reservedWithdrawalAssets: _reservedWithdrawalAssets }) {
|
|
27677
27888
|
const nonIdleUnderlying = unfulfilledDepositAssets;
|
|
@@ -27726,7 +27937,7 @@ async function readTokenSymbol({ client, tokenAddress, blockNumber }) {
|
|
|
27726
27937
|
if (isNativeToken(tokenAddress)) return "ETH";
|
|
27727
27938
|
return client.readContract({
|
|
27728
27939
|
address: tokenAddress,
|
|
27729
|
-
abi: erc20Abi,
|
|
27940
|
+
abi: erc20Abi$1,
|
|
27730
27941
|
functionName: "symbol",
|
|
27731
27942
|
...blockNumber === void 0 ? {} : { blockNumber }
|
|
27732
27943
|
});
|
|
@@ -27736,7 +27947,7 @@ async function readTokenDecimals({ client, tokenAddress, blockNumber }) {
|
|
|
27736
27947
|
try {
|
|
27737
27948
|
const decimals = await client.readContract({
|
|
27738
27949
|
address: tokenAddress,
|
|
27739
|
-
abi: erc20Abi,
|
|
27950
|
+
abi: erc20Abi$1,
|
|
27740
27951
|
functionName: "decimals",
|
|
27741
27952
|
...blockNumber === void 0 ? {} : { blockNumber }
|
|
27742
27953
|
});
|
|
@@ -27753,7 +27964,7 @@ async function readTokenBalance({ client, tokenAddress, owner, blockNumber }) {
|
|
|
27753
27964
|
});
|
|
27754
27965
|
return client.readContract({
|
|
27755
27966
|
address: tokenAddress,
|
|
27756
|
-
abi: erc20Abi,
|
|
27967
|
+
abi: erc20Abi$1,
|
|
27757
27968
|
functionName: "balanceOf",
|
|
27758
27969
|
args: [owner],
|
|
27759
27970
|
...blockNumber === void 0 ? {} : { blockNumber }
|
|
@@ -27764,22 +27975,22 @@ function resolveUnderlyingPoolToken({ underlyingTokenAddress, token0Address, tok
|
|
|
27764
27975
|
if (isNativeToken(token0Address)) return token0Address;
|
|
27765
27976
|
return null;
|
|
27766
27977
|
}
|
|
27767
|
-
function convertToUnderlying({ amount, sourceTokenAddress, token0Address, token1Address, underlyingPoolTokenAddress, twapTick }) {
|
|
27768
|
-
if (amount === 0n) return 0n;
|
|
27769
|
-
if (addressesEqual(sourceTokenAddress, underlyingPoolTokenAddress)) return amount;
|
|
27978
|
+
function convertToUnderlying({ amount: amount$1, sourceTokenAddress, token0Address, token1Address, underlyingPoolTokenAddress, twapTick }) {
|
|
27979
|
+
if (amount$1 === 0n) return 0n;
|
|
27980
|
+
if (addressesEqual(sourceTokenAddress, underlyingPoolTokenAddress)) return amount$1;
|
|
27770
27981
|
const sourceIsToken0 = addressesEqual(sourceTokenAddress, token0Address);
|
|
27771
27982
|
const sourceIsToken1 = addressesEqual(sourceTokenAddress, token1Address);
|
|
27772
27983
|
const underlyingIsToken0 = addressesEqual(underlyingPoolTokenAddress, token0Address);
|
|
27773
27984
|
const underlyingIsToken1 = addressesEqual(underlyingPoolTokenAddress, token1Address);
|
|
27774
27985
|
if (!sourceIsToken0 && !sourceIsToken1 || !underlyingIsToken0 && !underlyingIsToken1) return 0n;
|
|
27775
27986
|
const sqrtPriceX96 = tickToSqrtPriceX96(BigInt(twapTick));
|
|
27776
|
-
if (sourceIsToken0 && underlyingIsToken1) return convert0to1(amount, sqrtPriceX96);
|
|
27777
|
-
if (sourceIsToken1 && underlyingIsToken0) return convert1to0(amount, sqrtPriceX96);
|
|
27987
|
+
if (sourceIsToken0 && underlyingIsToken1) return convert0to1(amount$1, sqrtPriceX96);
|
|
27988
|
+
if (sourceIsToken1 && underlyingIsToken0) return convert1to0(amount$1, sqrtPriceX96);
|
|
27778
27989
|
return 0n;
|
|
27779
27990
|
}
|
|
27780
|
-
function convertSignedToUnderlying({ amount, sourceTokenAddress, token0Address, token1Address, underlyingPoolTokenAddress, twapTick }) {
|
|
27781
|
-
if (amount >= 0n) return convertToUnderlying({
|
|
27782
|
-
amount,
|
|
27991
|
+
function convertSignedToUnderlying({ amount: amount$1, sourceTokenAddress, token0Address, token1Address, underlyingPoolTokenAddress, twapTick }) {
|
|
27992
|
+
if (amount$1 >= 0n) return convertToUnderlying({
|
|
27993
|
+
amount: amount$1,
|
|
27783
27994
|
sourceTokenAddress,
|
|
27784
27995
|
token0Address,
|
|
27785
27996
|
token1Address,
|
|
@@ -27787,7 +27998,7 @@ function convertSignedToUnderlying({ amount, sourceTokenAddress, token0Address,
|
|
|
27787
27998
|
twapTick
|
|
27788
27999
|
});
|
|
27789
28000
|
return -convertToUnderlying({
|
|
27790
|
-
amount: -amount,
|
|
28001
|
+
amount: -amount$1,
|
|
27791
28002
|
sourceTokenAddress,
|
|
27792
28003
|
token0Address,
|
|
27793
28004
|
token1Address,
|
|
@@ -29742,6 +29953,7 @@ const HypoVaultManagerConfigSchema = z.object({
|
|
|
29742
29953
|
allocationBps: z.number().int().positive().max(1e4)
|
|
29743
29954
|
})).optional() }).optional(),
|
|
29744
29955
|
deltaHedge: z.object({
|
|
29956
|
+
targetDeltaBps: z.bigint().nonnegative().max(10000n).optional(),
|
|
29745
29957
|
deltaThresholdBps: z.bigint().positive().optional(),
|
|
29746
29958
|
maxHedgeSlots: z.number().int().positive().optional(),
|
|
29747
29959
|
timedRehedge: timedRehedgeSchema.optional()
|
|
@@ -30964,32 +31176,39 @@ function calculateAnnualizedApyPct({ currentSharePrice, previousSharePrice, days
|
|
|
30964
31176
|
return Decimal.pow(growthFactor, annualizationExponent).minus(1).times(100).toNumber();
|
|
30965
31177
|
}
|
|
30966
31178
|
|
|
31179
|
+
//#endregion
|
|
31180
|
+
//#region src/hypoVault/robinhoodAccountantRuntime.ts
|
|
31181
|
+
const ROBINHOOD_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE = "0x608060405234801561000f575f5ffd5b5060043610610090575f3560e01c80638da5cb5b116100635780638da5cb5b14610135578063995cac6d14610145578063a519c19814610158578063d597b7361461016b578063f2fde38b1461017e575f5ffd5b8063016ff32e1461009457806328d6ae4a146100cb5780634f0e0ef3146100ec578063715018a61461012b575b5f5ffd5b6100b66100a236600461279a565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100de6100d93660046127b5565b610191565b6040519081526020016100c2565b6101137f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad7381565b6040516001600160a01b0390911681526020016100c2565b6101336101b3565b005b5f546001600160a01b0316610113565b61013361015336600461281f565b6101c6565b61013361016636600461279a565b610598565b6100de6101793660046128d0565b6105c3565b61013361018c36600461279a565b6118b4565b6001602052815f5260405f2081600281106101aa575f80fd5b01549150829050565b6101bb6118f6565b6101c45f611922565b565b6101ce6118f6565b6001600160a01b0385165f9081526002602052604090205460ff1615610207576040516372b89e9760e11b815260040160405180910390fd5b5f5b838110156102ac575f5b818110156102a35785858281811061022d5761022d61295c565b610243926020608090920201908101915061279a565b6001600160a01b031686868481811061025e5761025e61295c565b610274926020608090920201908101915061279a565b6001600160a01b03160361029b57604051635c1523a360e11b815260040160405180910390fd5b600101610213565b50600101610209565b505f5b8181101561050a575f5b81811015610347578383828181106102d3576102d361295c565b90506020020160208101906102e8919061279a565b6001600160a01b03168484848181106103035761030361295c565b9050602002016020810190610318919061279a565b6001600160a01b03160361033f57604051637542915f60e11b815260040160405180910390fd5b6001016102b9565b505f5b84811015610501578585828181106103645761036461295c565b61037a926020608090920201908101915061279a565b6001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d99190612970565b6001600160a01b03168484848181106103f4576103f461295c565b9050602002016020810190610409919061279a565b6001600160a01b031614806104db575085858281811061042b5761042b61295c565b610441926020608090920201908101915061279a565b6001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561047c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a09190612970565b6001600160a01b03168484848181106104bb576104bb61295c565b90506020020160208101906104d0919061279a565b6001600160a01b0316145b156104f957604051637542915f60e11b815260040160405180910390fd5b60010161034a565b506001016102af565b50838360405160200161051e929190612999565b60408051808303601f1901815282825280516020918201206001600160a01b0389165f90815260018352929092209190915561055e918491849101612a33565b60408051808303601f1901815291815281516020928301206001600160a01b03979097165f90815260019283905220019490945550505050565b6105a06118f6565b6001600160a01b03165f908152600260205260409020805460ff19166001179055565b5f8080806105d385870187612d21565b506001600160a01b038b165f90815260016020526040812093965091945092500154826040516020016106069190612e78565b604051602081830303815290604052805190602001201461063a576040516395241ae360e01b815260040160405180910390fd5b5f825160026106499190612f07565b6001600160401b0381111561066057610660612a75565b604051908082528060200260200182016040528015610689578160200160208202803683370190505b509050885f5b8451811015611586575f5f5f8784815181106106ad576106ad61295c565b60200260200101515f01516001600160a01b03166305ecd0036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107179190612f1e565b905087848151811061072b5761072b61295c565b60200260200101516060015160020b61076d828b87815181106107505761075061295c565b60200260200101515f01516107659190612f39565b60020b611971565b131561078c57604051631510fe5b60e31b815260040160405180910390fd5b60605f5f8a87815181106107a2576107a261295c565b60200260200101515f01516001600160a01b031663011492288960018d8b815181106107d0576107d061295c565b60200260200101516040518463ffffffff1660e01b81526004016107f693929190612f5e565b5f60405180830381865afa158015610810573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108379190810190613019565b50909550919350915061085890506001600160801b03808316908416613111565b95506108648160801c90565b6001600160801b03166108778360801c90565b6001600160801b031661088a9190613111565b945050505f8986815181106108a1576108a161295c565b60200260200101515f01516001600160a01b03166353aad1d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090b9190612f1e565b905089868151811061091f5761091f61295c565b60200260200101516060015160020b61093d84836107659190612f39565b131561095c57604051631510fe5b60e31b815260040160405180910390fd5b5f805b8a88815181106109715761097161295c565b602002602001015151811015610af7575f8482815181106109945761099461295c565b60200260200101519050806001600160801b03165f036109c757604051632276762d60e11b815260040160405180910390fd5b5f8c8a815181106109da576109da61295c565b602002602001015183815181106109f3576109f361295c565b602002602001015190505f610a078261198f565b90505f5b81811015610a7357610a1d83826119c9565b60020b15610a6b575f5f610a3b89610a3687868a6119e0565b611a49565b9092509050610a4a8584611ac8565b5f03610a5d579b81019b9a8b019a610a68565b818d039c50808c039b505b50505b600101610a0b565b505f5f610a8284866001611ada565b91509150610a8d8190565b600f0b82600f0b610a9e9190613111565b610aa8908d613137565b9b50610ab48160801d90565b600f0b610ac18360801d90565b600f0b610ace9190613111565b610ad8908c613137565b9a50610ae4838861315e565b9650506001909401935061095f92505050565b508a8781518110610b0a57610b0a61295c565b60209081029190910101515160405163c79ee60d60e01b81526001600160a01b038a811660048301529091169063c79ee60d90602401602060405180830381865afa158015610b5b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b7f9190613171565b8114610b9e57604051632276762d60e11b815260040160405180910390fd5b5050505f6001600160a01b0316888581518110610bbd57610bbd61295c565b6020026020010151602001516001600160a01b031603610c195773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888581518110610bfe57610bfe61295c565b6020908102919091018101516001600160a01b039092169101525b5f808080805b8a51811015610dd5578c8981518110610c3a57610c3a61295c565b6020026020010151602001516001600160a01b03168b8281518110610c6157610c6161295c565b60200260200101516001600160a01b031603610c7c57600192505b8c8981518110610c8e57610c8e61295c565b6020026020010151604001516001600160a01b03168b8281518110610cb557610cb561295c565b60200260200101516001600160a01b031603610cd057600191505b5f6001600160a01b03168b8281518110610cec57610cec61295c565b60200260200101516001600160a01b031603610dcd5782610d58578c8981518110610d1957610d1961295c565b6020026020010151602001518b8281518110610d3757610d3761295c565b60200260200101906001600160a01b031690816001600160a01b0316815250505b81610dc8578c8981518110610d6f57610d6f61295c565b6020026020010151604001518b84610d88576001610d8a565b5f5b610d979060ff168461315e565b81518110610da757610da761295c565b60200260200101906001600160a01b031690816001600160a01b0316815250505b610dd5565b600101610c1f565b5081610ec25773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168c8981518110610e0b57610e0b61295c565b6020026020010151602001516001600160a01b031614610eb3578b8881518110610e3757610e3761295c565b60209081029190910181015101516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a0823190602401602060405180830381865afa158015610e8a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610eae9190613171565b610ebf565b886001600160a01b0316315b93505b80610f61578b8881518110610ed957610ed961295c565b6020026020010151604001516001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401610f1f91906001600160a01b0391909116815260200190565b602060405180830381865afa158015610f3a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f5e9190613171565b92505b5f8c8981518110610f7457610f7461295c565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fba573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fde9190612970565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa158015611024573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110489190613171565b90508c898151811061105c5761105c61295c565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110a2573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110c69190612970565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b81526004016110f391815260200190565b602060405180830381865afa15801561110e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111329190613171565b61113c9089613137565b97508c89815181106111505761115061295c565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa158015611196573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111ba9190612970565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa158015611200573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112249190613171565b90508c89815181106112385761123861295c565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a29190612970565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b81526004016112cf91815260200190565b602060405180830381865afa1580156112ea573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061130e9190613171565b6113189088613137565b96505050508e6001600160a01b03168a87815181106113395761133961295c565b6020026020010151602001516001600160a01b0316146114735773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168a87815181106113835761138361295c565b6020026020010151602001516001600160a01b03161480156113d657507f0000000000000000000000000bd7d308f8e1639fab988df18a8011f41eacad736001600160a01b03168f6001600160a01b0316145b611473578986815181106113ec576113ec61295c565b60200260200101516060015160020b6114278c88815181106114105761141061295c565b602002602001015160200151856107659190612f39565b131561144657604051631510fe5b60e31b815260040160405180910390fd5b5f61145084611b33565b905061145c8682611e4e565b955082156114715761146e8382611e4e565b92505b505b8e6001600160a01b03168a878151811061148f5761148f61295c565b6020026020010151604001516001600160a01b031614611542578986815181106114bb576114bb61295c565b60200260200101516060015160020b6114f68c88815181106114df576114df61295c565b602002602001015160400151856107659190612f39565b131561151557604051631510fe5b60e31b815260040160405180910390fd5b5f61151f84611b33565b905061152b8582611ed1565b945081156115405761153d8282611ed1565b91505b505b61155561154f8587613137565b5f611f3e565b61155f828461315e565b611569919061315e565b611573908d61315e565b9b50506001909401935061068f92505050565b505f611594888a018a612d21565b6001600160a01b0386165f90815260016020819052604090912091955090935091506115bd9050565b0154816040516020016115d09190613188565b604051602081830303815290604052805190602001201461160457604051637560978b60e11b815260040160405180910390fd5b5f5b81518110156117dd578a6001600160a01b031682828151811061162b5761162b61295c565b60200260200101516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561166e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116929190612970565b6001600160a01b0316146116b957604051635de194d760e01b815260040160405180910390fd5b5f8282815181106116cc576116cc61295c565b60209081029190910101516040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa15801561171c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117409190613171565b90508282815181106117545761175461295c565b60200260200101516001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161178991815260200190565b602060405180830381865afa1580156117a4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117c89190613171565b6117d2908a61315e565b985050600101611606565b505f9050805b835181101561182b578a6001600160a01b03168482815181106118085761180861295c565b60200260200101516001600160a01b03160361182357600191505b6001016117e3565b50806118a6576040516370a0823160e01b81526001600160a01b0383811660048301528b16906370a0823190602401602060405180830381865afa158015611875573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118999190613171565b6118a3908861315e565b96505b505050505050949350505050565b6118bc6118f6565b6001600160a01b0381166118ea57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6118f381611922565b50565b5f546001600160a01b031633146101c45760405163118cdaa760e01b81523360048201526024016118e1565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f821361198757611982826131c8565b611989565b815b92915050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b81106119c3578160010191506119ab565b50919050565b5f6110006064603084020184901c5b069392505050565b5f80806119ed8686611f53565b90925090505f6119fd8787611f8a565b611a10906001600160801b038716612f07565b9050611a1c8787611f9c565b5f03611a3757611a2d838383611fae565b9350505050611a42565b611a2d838383612057565b9392505050565b5f5f611a558360e81c90565b60020b8460020b1215611a7257611a6b8361208b565b9150611ac1565b611a7c8360d01c90565b60020b8460020b12611a9857611a91836120fd565b9050611ac1565b611aaa611aa58486612144565b61208b565b9150611abe611ab98486612164565b6120fd565b90505b9250929050565b5f60026048603084020184901c6119d8565b5f5f5f611ae68661198f565b90505f5b818114611b29575f5f611aff8989858a612182565b9092509050611b0e8683612228565b9550611b1a8582612228565b94508260010192505050611aea565b5050935093915050565b5f5f5f8360020b12611b48578260020b611b4f565b8260020b5f035b9050620d89e8811115611b75576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f03611b8a57600160801b611b9c565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611bd0576ffff97272373d413259a46990580e213a0260801c5b6004821615611bef576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611c0e576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611c2d576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611c4c576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611c6b576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611c8a576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611caa576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611cca576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611cea576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611d0a576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611d2a576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611d4a576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611d6a576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611d8a576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611dab576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611dcb576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611dea576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611e07576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315611e2657805f1981611e2257611e226131e2565b0490505b640100000000810615611e3a576001611e3c565b5f5b60ff16602082901c0192505050919050565b5f6001600160801b036001600160a01b0383161015611ea9575f611e8e611e89611e77866122ae565b6002866001600160a01b03160a6122be565b61231c565b90505f8412611e9d5780611ea1565b805f035b915050611989565b5f611e8e611e89611eb9866122ae565b611ecc6001600160a01b03871680612345565b6123a3565b5f6001600160801b036001600160a01b0383161015611f11575f611e8e611e89611efa866122ae565b600160c01b6002876001600160a01b03160a612401565b5f611e8e611e89611f21866122ae565b600160801b611f396001600160a01b03881680612345565b612401565b5f818313611f4c5781611a42565b5090919050565b5f80611f7f611f678585603002604c011c90565b611f7186866119c9565b603087901c61ffff166124ab565b909590945092505050565b5f60806041603084020184901c6119d8565b5f60026040603084020184901c6119d8565b5f5f611fb985611b33565b90505f611fc585611b33565b90505f611ff985611fe8846001600160a01b0316866001600160a01b03166124c9565b8585036001600160a01b0316612401565b90506001600160801b038111156120235760405163528073f560e11b815260040160405180910390fd5b6001600160801b03811660d087901b62ffffff60d01b1660e889901b6001600160e81b03191601015b979650505050505050565b5f5f61206285611b33565b90505f61206e85611b33565b90505f611ff985600160601b8585036001600160a01b0316612401565b5f5f61209f61209a8460e81c90565b611b33565b90505f6120af61209a8560d01c90565b90506001600160a01b0382166120e76060866001600160801b0316901b8484036001600160a01b0316846001600160a01b0316612401565b816120f4576120f46131e2565b04949350505050565b5f5f61210c61209a8460e81c90565b90505f61211c61209a8560d01c90565b905061213c846001600160801b03168383036001600160a01b03166124c9565b949350505050565b5f611a426001600160e81b0384168360e81b6001600160e81b0319160190565b5f611a4262ffffff60d01b1984168360d01b62ffffff60d01b160190565b5f5f5f61219187878787612527565b90505f61219e8887611ac8565b1590506121ab88876125fa565b5f036121ee5780156121db576121d46121c88361260c565b61260c565b6001600160801b031690565b925061221d565b6121e76121c88361260c565b935061221d565b801561220a576121d46122046121c38460801c90565b60801b90565b61221a6122046121c38460801c90565b93505b505094509492505050565b5f5f6122348360801d90565b600f0b6122418560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b14158061226d57508181600f0b14155b1561228b57604051633486405d60e21b815260040160405180910390fd5b608083901b6001600160801b03828701166001600160801b03198716010161204c565b5f5f821361198757815f03611989565b5f80805f19848609848602925082811083820303915050805f036122e7575060c01c9050611989565b80600160c01b116122f6575f5ffd5b5f600160c01b85870980840360c01c9310909103600160401b0291909117949350505050565b5f6001600160ff1b038211156119875760405163b668004560e01b815260040160405180910390fd5b5f80805f19848609848602925082811083820303915050805f0361236e575060401c9050611989565b80600160401b1161237d575f5ffd5b5f600160401b85870980840360401c9310909103600160c01b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f036123cc575060801c9050611989565b80600160801b116123db575f5ffd5b5f600160801b85870980840360801c9310909103600160801b0291909117949350505050565b5f80805f19858709858702925082811083820303915050805f03612435575f841161242a575f5ffd5b508290049050611a42565b808411612440575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f5f5f5f6124b98686612637565b9088039897019695505050505050565b5f80805f19848609848602925082811083820303915050805f036124f2575060601c9050611989565b80600160601b11612501575f5ffd5b5f600160601b85870980840360601c9310909103600160a01b0291909117949350505050565b5f80808061253588876119c9565b60020b1515905080612550576002606460308802011b880197505b5f61255c89888a6119e0565b90506125688988611ac8565b1580156125725750855b8061258e57506125828988611ac8565b1580159061258e575085155b80612597575081155b156125b7576125a581612679565b93506125b0816126da565b92506125ce565b6125c08161208b565b93506125cb816120fd565b92505b6125ed6001600160801b0385168460801b6001600160801b0319160190565b9998505050505050505050565b5f60026049603084020184901c6119d8565b805f600f82900b12156126325760405163b668004560e01b815260040160405180910390fd5b919050565b5f80600261264584866131f6565b61264f9190613215565b61266e61265c8587613259565b62ffffff166002808204910615150190565b915091509250929050565b5f5f61268861209a8460e81c90565b90505f61269861209a8560d01c90565b905061213c6126c96060866001600160801b0316901b8484036001600160a01b0316846001600160a01b0316612719565b6001846001600160a01b0316612719565b5f5f6126e961209a8460e81c90565b90505f6126f961209a8560d01c90565b905061213c846001600160801b03168383036001600160a01b0316612755565b5f612725848484612401565b90505f8280612736576127366131e2565b8486091115611a42575f19811061274b575f5ffd5b6001019392505050565b5f61276083836124c9565b90505f600160601b8385091115611989575f19811061277d575f5ffd5b60010192915050565b6001600160a01b03811681146118f3575f5ffd5b5f602082840312156127aa575f5ffd5b8135611a4281612786565b5f5f604083850312156127c6575f5ffd5b82356127d181612786565b946020939093013593505050565b5f5f83601f8401126127ef575f5ffd5b5081356001600160401b03811115612805575f5ffd5b6020830191508360208260051b8501011115611ac1575f5ffd5b5f5f5f5f5f60608688031215612833575f5ffd5b853561283e81612786565b945060208601356001600160401b03811115612858575f5ffd5b8601601f81018813612868575f5ffd5b80356001600160401b0381111561287d575f5ffd5b8860208260071b8401011115612891575f5ffd5b6020919091019450925060408601356001600160401b038111156128b3575f5ffd5b6128bf888289016127df565b969995985093965092949392505050565b5f5f5f5f606085870312156128e3575f5ffd5b84356128ee81612786565b935060208501356128fe81612786565b925060408501356001600160401b03811115612918575f5ffd5b8501601f81018713612928575f5ffd5b80356001600160401b0381111561293d575f5ffd5b87602082840101111561294e575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612980575f5ffd5b8151611a4281612786565b8060020b81146118f3575f5ffd5b602080825281018290525f8360408301825b85811015612a295782356129be81612786565b6001600160a01b0316825260208301356129d781612786565b6001600160a01b0316602083015260408301356129f381612786565b6001600160a01b031660408301526060830135612a0f8161298b565b60020b6060830152608092830192909101906001016129ab565b5095945050505050565b602080825281018290525f8360408301825b85811015612a29578235612a5881612786565b6001600160a01b0316825260209283019290910190600101612a45565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612aab57612aab612a75565b60405290565b604051606081016001600160401b0381118282101715612aab57612aab612a75565b604051601f8201601f191681016001600160401b0381118282101715612afb57612afb612a75565b604052919050565b5f6001600160401b03821115612b1b57612b1b612a75565b5060051b60200190565b5f82601f830112612b34575f5ffd5b8135612b47612b4282612b03565b612ad3565b8082825260208201915060208360071b860101925085831115612b68575f5ffd5b602085015b83811015612a295760808188031215612b84575f5ffd5b612b8c612a89565b8135612b9781612786565b81526020820135612ba781612786565b60208201526040820135612bba81612786565b60408201526060820135612bcd8161298b565b60608201528352602090920191608001612b6d565b5f82601f830112612bf1575f5ffd5b8135612bff612b4282612b03565b8082825260208201915060208360051b860101925085831115612c20575f5ffd5b602085015b83811015612a295780356001600160401b03811115612c42575f5ffd5b8601603f81018813612c52575f5ffd5b6020810135612c63612b4282612b03565b808282526020820191506020808460051b8601010192508a831115612c86575f5ffd5b6040840193505b82841015612ca8578335825260209384019390910190612c8d565b86525050602093840193919091019050612c25565b5f82601f830112612ccc575f5ffd5b8135612cda612b4282612b03565b8082825260208201915060208360051b860101925085831115612cfb575f5ffd5b602085015b83811015612a29578035612d1381612786565b835260209283019201612d00565b5f5f5f5f60808587031215612d34575f5ffd5b84356001600160401b03811115612d49575f5ffd5b8501601f81018713612d59575f5ffd5b8035612d67612b4282612b03565b80828252602082019150602060608402850101925089831115612d88575f5ffd5b6020840193505b82841015612df5576060848b031215612da6575f5ffd5b612dae612ab1565b8435612db98161298b565b81526020850135612dc98161298b565b60208201526040850135612ddc8161298b565b6040820152825260609390930192602090910190612d8f565b965050505060208501356001600160401b03811115612e12575f5ffd5b612e1e87828801612b25565b93505060408501356001600160401b03811115612e39575f5ffd5b612e4587828801612be2565b92505060608501356001600160401b03811115612e60575f5ffd5b612e6c87828801612cbd565b91505092959194509250565b602080825282518282018190525f918401906040840190835b81811015612ee857835180516001600160a01b0390811685526020808301518216818701526040808401519092169186019190915260609182015160020b9185019190915290930192608090920191600101612e91565b509095945050505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761198957611989612ef3565b5f60208284031215612f2e575f5ffd5b8151611a428161298b565b600282810b9082900b03627fffff198112627fffff8213171561198957611989612ef3565b6001600160a01b038416815282151560208083019190915260606040830181905283519083018190525f918401906080840190835b81811015612fb1578351835260209384019390920191600101612f93565b5090979650505050505050565b5f82601f830112612fcd575f5ffd5b8151612fdb612b4282612b03565b8082825260208201915060208360051b860101925085831115612ffc575f5ffd5b602085015b83811015612a29578051835260209283019201613001565b5f5f5f5f5f60a0868803121561302d575f5ffd5b85516020870151604088015191965094506001600160401b03811115613051575f5ffd5b8601601f81018813613061575f5ffd5b805161306f612b4282612b03565b8082825260208201915060208360051b85010192508a831115613090575f5ffd5b6020840193505b828410156130b2578351825260209384019390910190613097565b8096505050505060608601516001600160401b038111156130d1575f5ffd5b6130dd88828901612fbe565b92505060808601516001600160401b038111156130f8575f5ffd5b61310488828901612fbe565b9150509295509295909350565b8181035f83128015838313168383128216171561313057613130612ef3565b5092915050565b8082018281125f83128015821682158216171561315657613156612ef3565b505092915050565b8082018082111561198957611989612ef3565b5f60208284031215613181575f5ffd5b5051919050565b602080825282518282018190525f918401906040840190835b81811015612ee85783516001600160a01b03168352602093840193909201916001016131a1565b5f600160ff1b82016131dc576131dc612ef3565b505f0390565b634e487b7160e01b5f52601260045260245ffd5b5f8260020b8260020b028060020b915080821461313057613130612ef3565b5f8160020b8360020b8061323757634e487b7160e01b5f52601260045260245ffd5b627fffff1982145f198214161561325057613250612ef3565b90059392505050565b62ffffff818116838216029081169081811461313057613130612ef356";
|
|
31182
|
+
|
|
30967
31183
|
//#endregion
|
|
30968
31184
|
//#region src/hypoVault/staleOracleOverride.ts
|
|
30969
31185
|
const PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE = "0x608060405234801561000f575f5ffd5b5060043610610090575f3560e01c80638da5cb5b116100635780638da5cb5b14610135578063995cac6d14610145578063a519c19814610158578063d597b7361461016b578063f2fde38b1461017e575f5ffd5b8063016ff32e1461009457806328d6ae4a146100cb5780634f0e0ef3146100ec578063715018a61461012b575b5f5ffd5b6100b66100a236600461274b565b60026020525f908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100de6100d9366004612766565b610191565b6040519081526020016100c2565b6101137f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b0390911681526020016100c2565b6101336101b3565b005b5f546001600160a01b0316610113565b6101336101533660046127d0565b6101c6565b61013361016636600461274b565b610598565b6100de610179366004612881565b6105c3565b61013361018c36600461274b565b611865565b6001602052815f5260405f2081600281106101aa575f80fd5b01549150829050565b6101bb6118a7565b6101c45f6118d3565b565b6101ce6118a7565b6001600160a01b0385165f9081526002602052604090205460ff1615610207576040516372b89e9760e11b815260040160405180910390fd5b5f5b838110156102ac575f5b818110156102a35785858281811061022d5761022d61290d565b610243926020608090920201908101915061274b565b6001600160a01b031686868481811061025e5761025e61290d565b610274926020608090920201908101915061274b565b6001600160a01b03160361029b57604051635c1523a360e11b815260040160405180910390fd5b600101610213565b50600101610209565b505f5b8181101561050a575f5b81811015610347578383828181106102d3576102d361290d565b90506020020160208101906102e8919061274b565b6001600160a01b03168484848181106103035761030361290d565b9050602002016020810190610318919061274b565b6001600160a01b03160361033f57604051637542915f60e11b815260040160405180910390fd5b6001016102b9565b505f5b84811015610501578585828181106103645761036461290d565b61037a926020608090920201908101915061274b565b6001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa1580156103b5573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103d99190612921565b6001600160a01b03168484848181106103f4576103f461290d565b9050602002016020810190610409919061274b565b6001600160a01b031614806104db575085858281811061042b5761042b61290d565b610441926020608090920201908101915061274b565b6001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561047c573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104a09190612921565b6001600160a01b03168484848181106104bb576104bb61290d565b90506020020160208101906104d0919061274b565b6001600160a01b0316145b156104f957604051637542915f60e11b815260040160405180910390fd5b60010161034a565b506001016102af565b50838360405160200161051e92919061294a565b60408051808303601f1901815282825280516020918201206001600160a01b0389165f90815260018352929092209190915561055e9184918491016129e4565b60408051808303601f1901815291815281516020928301206001600160a01b03979097165f90815260019283905220019490945550505050565b6105a06118a7565b6001600160a01b03165f908152600260205260409020805460ff19166001179055565b5f8080806105d385870187612cd2565b506001600160a01b038b165f90815260016020526040812093965091945092500154826040516020016106069190612e29565b604051602081830303815290604052805190602001201461063a576040516395241ae360e01b815260040160405180910390fd5b5f825160026106499190612eb8565b6001600160401b0381111561066057610660612a26565b604051908082528060200260200182016040528015610689578160200160208202803683370190505b509050885f5b8451811015611537575f5f5f8784815181106106ad576106ad61290d565b60200260200101515f01516001600160a01b03166305ecd0036040518163ffffffff1660e01b8152600401602060405180830381865afa1580156106f3573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107179190612ecf565b905087848151811061072b5761072b61290d565b60200260200101516060015160020b61076d828b87815181106107505761075061290d565b60200260200101515f01516107659190612eea565b60020b611922565b131561078c57604051631510fe5b60e31b815260040160405180910390fd5b60605f5f8a87815181106107a2576107a261290d565b60200260200101515f01516001600160a01b031663011492288960018d8b815181106107d0576107d061290d565b60200260200101516040518463ffffffff1660e01b81526004016107f693929190612f0f565b5f60405180830381865afa158015610810573d5f5f3e3d5ffd5b505050506040513d5f823e601f3d908101601f191682016040526108379190810190612fca565b50909550919350915061085890506001600160801b038083169084166130c2565b95506108648160801c90565b6001600160801b03166108778360801c90565b6001600160801b031661088a91906130c2565b945050505f8986815181106108a1576108a161290d565b60200260200101515f01516001600160a01b03166353aad1d96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e7573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090b9190612ecf565b90505f805b8a88815181106109225761092261290d565b602002602001015151811015610aa8575f8482815181106109455761094561290d565b60200260200101519050806001600160801b03165f0361097857604051632276762d60e11b815260040160405180910390fd5b5f8c8a8151811061098b5761098b61290d565b602002602001015183815181106109a4576109a461290d565b602002602001015190505f6109b882611940565b90505f5b81811015610a24576109ce838261197a565b60020b15610a1c575f5f6109ec896109e787868a611991565b6119fa565b90925090506109fb8584611a79565b5f03610a0e579b81019b9a8b019a610a19565b818d039c50808c039b505b50505b6001016109bc565b505f5f610a3384866001611a8b565b91509150610a3e8190565b600f0b82600f0b610a4f91906130c2565b610a59908d6130e8565b9b50610a658160801d90565b600f0b610a728360801d90565b600f0b610a7f91906130c2565b610a89908c6130e8565b9a50610a95838861310f565b9650506001909401935061091092505050565b508a8781518110610abb57610abb61290d565b60209081029190910101515160405163c79ee60d60e01b81526001600160a01b038a811660048301529091169063c79ee60d90602401602060405180830381865afa158015610b0c573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b309190613122565b8114610b4f57604051632276762d60e11b815260040160405180910390fd5b5050505f6001600160a01b0316888581518110610b6e57610b6e61290d565b6020026020010151602001516001600160a01b031603610bca5773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee888581518110610baf57610baf61290d565b6020908102919091018101516001600160a01b039092169101525b5f808080805b8a51811015610d86578c8981518110610beb57610beb61290d565b6020026020010151602001516001600160a01b03168b8281518110610c1257610c1261290d565b60200260200101516001600160a01b031603610c2d57600192505b8c8981518110610c3f57610c3f61290d565b6020026020010151604001516001600160a01b03168b8281518110610c6657610c6661290d565b60200260200101516001600160a01b031603610c8157600191505b5f6001600160a01b03168b8281518110610c9d57610c9d61290d565b60200260200101516001600160a01b031603610d7e5782610d09578c8981518110610cca57610cca61290d565b6020026020010151602001518b8281518110610ce857610ce861290d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b81610d79578c8981518110610d2057610d2061290d565b6020026020010151604001518b84610d39576001610d3b565b5f5b610d489060ff168461310f565b81518110610d5857610d5861290d565b60200260200101906001600160a01b031690816001600160a01b0316815250505b610d86565b600101610bd0565b5081610e735773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168c8981518110610dbc57610dbc61290d565b6020026020010151602001516001600160a01b031614610e64578b8881518110610de857610de861290d565b60209081029190910181015101516040516370a0823160e01b81526001600160a01b038b81166004830152909116906370a0823190602401602060405180830381865afa158015610e3b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e5f9190613122565b610e70565b886001600160a01b0316315b93505b80610f12578b8881518110610e8a57610e8a61290d565b6020026020010151604001516001600160a01b03166370a082318a6040518263ffffffff1660e01b8152600401610ed091906001600160a01b0391909116815260200190565b602060405180830381865afa158015610eeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f0f9190613122565b92505b5f8c8981518110610f2557610f2561290d565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610f6b573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8f9190612921565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa158015610fd5573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ff99190613122565b90508c898151811061100d5761100d61290d565b60200260200101515f01516001600160a01b0316637594cdc36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611053573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110779190612921565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b81526004016110a491815260200190565b602060405180830381865afa1580156110bf573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110e39190613122565b6110ed90896130e8565b97508c89815181106111015761110161290d565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa158015611147573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061116b9190612921565b6040516370a0823160e01b81526001600160a01b038c8116600483015291909116906370a0823190602401602060405180830381865afa1580156111b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d59190613122565b90508c89815181106111e9576111e961290d565b60200260200101515f01516001600160a01b0316634d7b09006040518163ffffffff1660e01b8152600401602060405180830381865afa15801561122f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112539190612921565b6001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161128091815260200190565b602060405180830381865afa15801561129b573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bf9190613122565b6112c990886130e8565b96505050508e6001600160a01b03168a87815181106112ea576112ea61290d565b6020026020010151602001516001600160a01b0316146114245773eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b03168a87815181106113345761133461290d565b6020026020010151602001516001600160a01b031614801561138757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168f6001600160a01b0316145b6114245789868151811061139d5761139d61290d565b60200260200101516060015160020b6113d88c88815181106113c1576113c161290d565b602002602001015160200151856107659190612eea565b13156113f757604051631510fe5b60e31b815260040160405180910390fd5b5f61140184611ae4565b905061140d8682611dff565b955082156114225761141f8382611dff565b92505b505b8e6001600160a01b03168a87815181106114405761144061290d565b6020026020010151604001516001600160a01b0316146114f35789868151811061146c5761146c61290d565b60200260200101516060015160020b6114a78c88815181106114905761149061290d565b602002602001015160400151856107659190612eea565b13156114c657604051631510fe5b60e31b815260040160405180910390fd5b5f6114d084611ae4565b90506114dc8582611e82565b945081156114f1576114ee8282611e82565b91505b505b61150661150085876130e8565b5f611eef565b611510828461310f565b61151a919061310f565b611524908d61310f565b9b50506001909401935061068f92505050565b505f611545888a018a612cd2565b6001600160a01b0386165f908152600160208190526040909120919550909350915061156e9050565b0154816040516020016115819190613139565b60405160208183030381529060405280519060200120146115b557604051637560978b60e11b815260040160405180910390fd5b5f5b815181101561178e578a6001600160a01b03168282815181106115dc576115dc61290d565b60200260200101516001600160a01b03166338d52e0f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561161f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116439190612921565b6001600160a01b03161461166a57604051635de194d760e01b815260040160405180910390fd5b5f82828151811061167d5761167d61290d565b60209081029190910101516040516370a0823160e01b81526001600160a01b038681166004830152909116906370a0823190602401602060405180830381865afa1580156116cd573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f19190613122565b90508282815181106117055761170561290d565b60200260200101516001600160a01b0316634cdad506826040518263ffffffff1660e01b815260040161173a91815260200190565b602060405180830381865afa158015611755573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117799190613122565b611783908a61310f565b9850506001016115b7565b505f9050805b83518110156117dc578a6001600160a01b03168482815181106117b9576117b961290d565b60200260200101516001600160a01b0316036117d457600191505b600101611794565b5080611857576040516370a0823160e01b81526001600160a01b0383811660048301528b16906370a0823190602401602060405180830381865afa158015611826573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061184a9190613122565b611854908861310f565b96505b505050505050949350505050565b61186d6118a7565b6001600160a01b03811661189b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6118a4816118d3565b50565b5f546001600160a01b031633146101c45760405163118cdaa760e01b8152336004820152602401611892565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f5f82136119385761193382613179565b61193a565b815b92915050565b5f72fe0000000000fe0000000000fe0000000000fe604083901c165b6001603083021b81106119745781600101915061195c565b50919050565b5f6110006064603084020184901c5b069392505050565b5f808061199e8686611f04565b90925090505f6119ae8787611f3b565b6119c1906001600160801b038716612eb8565b90506119cd8787611f4d565b5f036119e8576119de838383611f5f565b93505050506119f3565b6119de838383612008565b9392505050565b5f5f611a068360e81c90565b60020b8460020b1215611a2357611a1c8361203c565b9150611a72565b611a2d8360d01c90565b60020b8460020b12611a4957611a42836120ae565b9050611a72565b611a5b611a5684866120f5565b61203c565b9150611a6f611a6a8486612115565b6120ae565b90505b9250929050565b5f60026048603084020184901c611989565b5f5f5f611a9786611940565b90505f5b818114611ada575f5f611ab08989858a612133565b9092509050611abf86836121d9565b9550611acb85826121d9565b94508260010192505050611a9b565b5050935093915050565b5f5f5f8360020b12611af9578260020b611b00565b8260020b5f035b9050620d89e8811115611b26576040516333a3bdff60e21b815260040160405180910390fd5b5f816001165f03611b3b57600160801b611b4d565b6ffffcb933bd6fad37aa2d162d1a5940015b70ffffffffffffffffffffffffffffffffff1690506002821615611b81576ffff97272373d413259a46990580e213a0260801c5b6004821615611ba0576ffff2e50f5f656932ef12357cf3c7fdcc0260801c5b6008821615611bbf576fffe5caca7e10e4e61c3624eaa0941cd00260801c5b6010821615611bde576fffcb9843d60f6159c9db58835c9266440260801c5b6020821615611bfd576fff973b41fa98c081472e6896dfb254c00260801c5b6040821615611c1c576fff2ea16466c96a3843ec78b326b528610260801c5b6080821615611c3b576ffe5dee046a99a2a811c461f1969c30530260801c5b610100821615611c5b576ffcbe86c7900a88aedcffc83b479aa3a40260801c5b610200821615611c7b576ff987a7253ac413176f2b074cf7815e540260801c5b610400821615611c9b576ff3392b0822b70005940c7a398e4b70f30260801c5b610800821615611cbb576fe7159475a2c29b7443b29c7fa6e889d90260801c5b611000821615611cdb576fd097f3bdfd2022b8845ad8f792aa58250260801c5b612000821615611cfb576fa9f746462d870fdf8a65dc1f90e061e50260801c5b614000821615611d1b576f70d869a156d2a1b890bb3df62baf32f70260801c5b618000821615611d3b576f31be135f97d08fd981231505542fcfa60260801c5b62010000821615611d5c576f09aa508b5b7a84e1c677de54f3e99bc90260801c5b62020000821615611d7c576e5d6af8dedb81196699c329225ee6040260801c5b62040000821615611d9b576d2216e584f5fa1ea926041bedfe980260801c5b62080000821615611db8576b048a170391f7dc42444e8fa20260801c5b5f8460020b1315611dd757805f1981611dd357611dd3613193565b0490505b640100000000810615611deb576001611ded565b5f5b60ff16602082901c0192505050919050565b5f6001600160801b036001600160a01b0383161015611e5a575f611e3f611e3a611e288661225f565b6002866001600160a01b03160a61226f565b6122cd565b90505f8412611e4e5780611e52565b805f035b91505061193a565b5f611e3f611e3a611e6a8661225f565b611e7d6001600160a01b038716806122f6565b612354565b5f6001600160801b036001600160a01b0383161015611ec2575f611e3f611e3a611eab8661225f565b600160c01b6002876001600160a01b03160a6123b2565b5f611e3f611e3a611ed28661225f565b600160801b611eea6001600160a01b038816806122f6565b6123b2565b5f818313611efd57816119f3565b5090919050565b5f80611f30611f188585603002604c011c90565b611f22868661197a565b603087901c61ffff1661245c565b909590945092505050565b5f60806041603084020184901c611989565b5f60026040603084020184901c611989565b5f5f611f6a85611ae4565b90505f611f7685611ae4565b90505f611faa85611f99846001600160a01b0316866001600160a01b031661247a565b8585036001600160a01b03166123b2565b90506001600160801b03811115611fd45760405163528073f560e11b815260040160405180910390fd5b6001600160801b03811660d087901b62ffffff60d01b1660e889901b6001600160e81b03191601015b979650505050505050565b5f5f61201385611ae4565b90505f61201f85611ae4565b90505f611faa85600160601b8585036001600160a01b03166123b2565b5f5f61205061204b8460e81c90565b611ae4565b90505f61206061204b8560d01c90565b90506001600160a01b0382166120986060866001600160801b0316901b8484036001600160a01b0316846001600160a01b03166123b2565b816120a5576120a5613193565b04949350505050565b5f5f6120bd61204b8460e81c90565b90505f6120cd61204b8560d01c90565b90506120ed846001600160801b03168383036001600160a01b031661247a565b949350505050565b5f6119f36001600160e81b0384168360e81b6001600160e81b0319160190565b5f6119f362ffffff60d01b1984168360d01b62ffffff60d01b160190565b5f5f5f612142878787876124d8565b90505f61214f8887611a79565b15905061215c88876125ab565b5f0361219f57801561218c57612185612179836125bd565b6125bd565b6001600160801b031690565b92506121ce565b612198612179836125bd565b93506121ce565b80156121bb576121856121b56121748460801c90565b60801b90565b6121cb6121b56121748460801c90565b93505b505094509492505050565b5f5f6121e58360801d90565b600f0b6121f28560801d90565b600f0b019050805f84600f0b86600f0b0190505f8190508383600f0b14158061221e57508181600f0b14155b1561223c57604051633486405d60e21b815260040160405180910390fd5b608083901b6001600160801b03828701166001600160801b031987160101611ffd565b5f5f821361193857815f0361193a565b5f80805f19848609848602925082811083820303915050805f03612298575060c01c905061193a565b80600160c01b116122a7575f5ffd5b5f600160c01b85870980840360c01c9310909103600160401b0291909117949350505050565b5f6001600160ff1b038211156119385760405163b668004560e01b815260040160405180910390fd5b5f80805f19848609848602925082811083820303915050805f0361231f575060401c905061193a565b80600160401b1161232e575f5ffd5b5f600160401b85870980840360401c9310909103600160c01b0291909117949350505050565b5f80805f19848609848602925082811083820303915050805f0361237d575060801c905061193a565b80600160801b1161238c575f5ffd5b5f600160801b85870980840360801c9310909103600160801b0291909117949350505050565b5f80805f19858709858702925082811083820303915050805f036123e6575f84116123db575f5ffd5b5082900490506119f3565b8084116123f1575f5ffd5b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b5f5f5f5f61246a86866125e8565b9088039897019695505050505050565b5f80805f19848609848602925082811083820303915050805f036124a3575060601c905061193a565b80600160601b116124b2575f5ffd5b5f600160601b85870980840360601c9310909103600160a01b0291909117949350505050565b5f8080806124e6888761197a565b60020b1515905080612501576002606460308802011b880197505b5f61250d89888a611991565b90506125198988611a79565b1580156125235750855b8061253f57506125338988611a79565b1580159061253f575085155b80612548575081155b15612568576125568161262a565b93506125618161268b565b925061257f565b6125718161203c565b935061257c816120ae565b92505b61259e6001600160801b0385168460801b6001600160801b0319160190565b9998505050505050505050565b5f60026049603084020184901c611989565b805f600f82900b12156125e35760405163b668004560e01b815260040160405180910390fd5b919050565b5f8060026125f684866131a7565b61260091906131c6565b61261f61260d858761320a565b62ffffff166002808204910615150190565b915091509250929050565b5f5f61263961204b8460e81c90565b90505f61264961204b8560d01c90565b90506120ed61267a6060866001600160801b0316901b8484036001600160a01b0316846001600160a01b03166126ca565b6001846001600160a01b03166126ca565b5f5f61269a61204b8460e81c90565b90505f6126aa61204b8560d01c90565b90506120ed846001600160801b03168383036001600160a01b0316612706565b5f6126d68484846123b2565b90505f82806126e7576126e7613193565b84860911156119f3575f1981106126fc575f5ffd5b6001019392505050565b5f612711838361247a565b90505f600160601b838509111561193a575f19811061272e575f5ffd5b60010192915050565b6001600160a01b03811681146118a4575f5ffd5b5f6020828403121561275b575f5ffd5b81356119f381612737565b5f5f60408385031215612777575f5ffd5b823561278281612737565b946020939093013593505050565b5f5f83601f8401126127a0575f5ffd5b5081356001600160401b038111156127b6575f5ffd5b6020830191508360208260051b8501011115611a72575f5ffd5b5f5f5f5f5f606086880312156127e4575f5ffd5b85356127ef81612737565b945060208601356001600160401b03811115612809575f5ffd5b8601601f81018813612819575f5ffd5b80356001600160401b0381111561282e575f5ffd5b8860208260071b8401011115612842575f5ffd5b6020919091019450925060408601356001600160401b03811115612864575f5ffd5b61287088828901612790565b969995985093965092949392505050565b5f5f5f5f60608587031215612894575f5ffd5b843561289f81612737565b935060208501356128af81612737565b925060408501356001600160401b038111156128c9575f5ffd5b8501601f810187136128d9575f5ffd5b80356001600160401b038111156128ee575f5ffd5b8760208284010111156128ff575f5ffd5b949793965060200194505050565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215612931575f5ffd5b81516119f381612737565b8060020b81146118a4575f5ffd5b602080825281018290525f8360408301825b858110156129da57823561296f81612737565b6001600160a01b03168252602083013561298881612737565b6001600160a01b0316602083015260408301356129a481612737565b6001600160a01b0316604083015260608301356129c08161293c565b60020b60608301526080928301929091019060010161295c565b5095945050505050565b602080825281018290525f8360408301825b858110156129da578235612a0981612737565b6001600160a01b03168252602092830192909101906001016129f6565b634e487b7160e01b5f52604160045260245ffd5b604051608081016001600160401b0381118282101715612a5c57612a5c612a26565b60405290565b604051606081016001600160401b0381118282101715612a5c57612a5c612a26565b604051601f8201601f191681016001600160401b0381118282101715612aac57612aac612a26565b604052919050565b5f6001600160401b03821115612acc57612acc612a26565b5060051b60200190565b5f82601f830112612ae5575f5ffd5b8135612af8612af382612ab4565b612a84565b8082825260208201915060208360071b860101925085831115612b19575f5ffd5b602085015b838110156129da5760808188031215612b35575f5ffd5b612b3d612a3a565b8135612b4881612737565b81526020820135612b5881612737565b60208201526040820135612b6b81612737565b60408201526060820135612b7e8161293c565b60608201528352602090920191608001612b1e565b5f82601f830112612ba2575f5ffd5b8135612bb0612af382612ab4565b8082825260208201915060208360051b860101925085831115612bd1575f5ffd5b602085015b838110156129da5780356001600160401b03811115612bf3575f5ffd5b8601603f81018813612c03575f5ffd5b6020810135612c14612af382612ab4565b808282526020820191506020808460051b8601010192508a831115612c37575f5ffd5b6040840193505b82841015612c59578335825260209384019390910190612c3e565b86525050602093840193919091019050612bd6565b5f82601f830112612c7d575f5ffd5b8135612c8b612af382612ab4565b8082825260208201915060208360051b860101925085831115612cac575f5ffd5b602085015b838110156129da578035612cc481612737565b835260209283019201612cb1565b5f5f5f5f60808587031215612ce5575f5ffd5b84356001600160401b03811115612cfa575f5ffd5b8501601f81018713612d0a575f5ffd5b8035612d18612af382612ab4565b80828252602082019150602060608402850101925089831115612d39575f5ffd5b6020840193505b82841015612da6576060848b031215612d57575f5ffd5b612d5f612a62565b8435612d6a8161293c565b81526020850135612d7a8161293c565b60208201526040850135612d8d8161293c565b6040820152825260609390930192602090910190612d40565b965050505060208501356001600160401b03811115612dc3575f5ffd5b612dcf87828801612ad6565b93505060408501356001600160401b03811115612dea575f5ffd5b612df687828801612b93565b92505060608501356001600160401b03811115612e11575f5ffd5b612e1d87828801612c6e565b91505092959194509250565b602080825282518282018190525f918401906040840190835b81811015612e9957835180516001600160a01b0390811685526020808301518216818701526040808401519092169186019190915260609182015160020b9185019190915290930192608090920191600101612e42565b509095945050505050565b634e487b7160e01b5f52601160045260245ffd5b808202811582820484141761193a5761193a612ea4565b5f60208284031215612edf575f5ffd5b81516119f38161293c565b600282810b9082900b03627fffff198112627fffff8213171561193a5761193a612ea4565b6001600160a01b038416815282151560208083019190915260606040830181905283519083018190525f918401906080840190835b81811015612f62578351835260209384019390920191600101612f44565b5090979650505050505050565b5f82601f830112612f7e575f5ffd5b8151612f8c612af382612ab4565b8082825260208201915060208360051b860101925085831115612fad575f5ffd5b602085015b838110156129da578051835260209283019201612fb2565b5f5f5f5f5f60a08688031215612fde575f5ffd5b85516020870151604088015191965094506001600160401b03811115613002575f5ffd5b8601601f81018813613012575f5ffd5b8051613020612af382612ab4565b8082825260208201915060208360051b85010192508a831115613041575f5ffd5b6020840193505b82841015613063578351825260209384019390910190613048565b8096505050505060608601516001600160401b03811115613082575f5ffd5b61308e88828901612f6f565b92505060808601516001600160401b038111156130a9575f5ffd5b6130b588828901612f6f565b9150509295509295909350565b8181035f8312801583831316838312821617156130e1576130e1612ea4565b5092915050565b8082018281125f83128015821682158216171561310757613107612ea4565b505092915050565b8082018082111561193a5761193a612ea4565b5f60208284031215613132575f5ffd5b5051919050565b602080825282518282018190525f918401906040840190835b81811015612e995783516001600160a01b0316835260209384019390920191600101613152565b5f600160ff1b820161318d5761318d612ea4565b505f0390565b634e487b7160e01b5f52601260045260245ffd5b5f8260020b8260020b028060020b91508082146130e1576130e1612ea4565b5f8160020b8360020b806131e857634e487b7160e01b5f52601260045260245ffd5b627fffff1982145f198214161561320157613201612ea4565b90059392505050565b62ffffff81811683821602908116908181146130e1576130e1612ea456";
|
|
30970
31186
|
const STALE_ORACLE_GUARD_PATTERN = /131561([0-9a-f]{4})57604051631510fe5b60e31b/g;
|
|
30971
|
-
const
|
|
31187
|
+
const LEGACY_STALE_ORACLE_GUARD_COUNT = 3;
|
|
31188
|
+
const ROBINHOOD_STALE_ORACLE_GUARD_COUNT = 4;
|
|
30972
31189
|
/**
|
|
30973
31190
|
* Builds a read-only accountant runtime that preserves NAV calculation and all
|
|
30974
31191
|
* structural checks while bypassing the three manager-price freshness guards.
|
|
30975
31192
|
* The stale manager prices are validation inputs only; NAV continues to use
|
|
30976
31193
|
* the pools' current TWAP/current tick values.
|
|
30977
31194
|
*/
|
|
30978
|
-
function bypassStaleOraclePriceGuards(bytecode) {
|
|
31195
|
+
function bypassStaleOraclePriceGuards(bytecode, expectedGuardCount) {
|
|
30979
31196
|
let replacements = 0;
|
|
30980
31197
|
const patchedBytecode = bytecode.replace(STALE_ORACLE_GUARD_PATTERN, (_match, jumpDestination) => {
|
|
30981
31198
|
replacements += 1;
|
|
30982
31199
|
return `135061${jumpDestination}56604051631510fe5b60e31b`;
|
|
30983
31200
|
});
|
|
30984
|
-
if (replacements !==
|
|
31201
|
+
if (replacements !== expectedGuardCount) throw new Error(`Unexpected PanopticVaultAccountant runtime: found ${replacements} stale-oracle guards.`);
|
|
30985
31202
|
return patchedBytecode;
|
|
30986
31203
|
}
|
|
30987
|
-
const READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE = bypassStaleOraclePriceGuards(PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE);
|
|
31204
|
+
const READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE = bypassStaleOraclePriceGuards(PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE, LEGACY_STALE_ORACLE_GUARD_COUNT);
|
|
31205
|
+
const READ_ONLY_ROBINHOOD_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE = bypassStaleOraclePriceGuards(ROBINHOOD_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE, ROBINHOOD_STALE_ORACLE_GUARD_COUNT);
|
|
30988
31206
|
const BASE_ACCOUNTANT_ADDRESS = "0x345cA3407942f9d175c9eA8B90e83A36F570f852";
|
|
30989
31207
|
const MAINNET_ACCOUNTANT_ADDRESS = "0x65aA902AE3135658587FFC36ED51B61c927114e1";
|
|
30990
31208
|
const LEGACY_MAINNET_ACCOUNTANT_ADDRESS = "0xCCAA8adC2776786Fd0A14Fb1f22D6089E0637a49";
|
|
30991
31209
|
const SEPOLIA_ACCOUNTANT_ADDRESS = "0x25BBef1DF262c24aa1AACD1F7eCeEcc1a7AD08ab";
|
|
30992
31210
|
const TEST_ACCOUNTANT_ADDRESS = "0x3fE074e8131bE6D8B94700860E1D9E8ece97AA54";
|
|
31211
|
+
const ROBINHOOD_ACCOUNTANT_ADDRESS = "0x9e345d862c41010F87D8E5A279e8D320D2831D36";
|
|
30993
31212
|
const BASE_WETH_ADDRESS = "0x4200000000000000000000000000000000000006";
|
|
30994
31213
|
const MAINNET_WETH_ADDRESS = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
|
|
30995
31214
|
const SEPOLIA_WETH_ADDRESS = "0xfff9976782d46cc05630d1f6ebab18b2324d6b14";
|
|
@@ -31032,7 +31251,8 @@ const STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT = {
|
|
|
31032
31251
|
[normalizeAddressLower(TEST_ACCOUNTANT_ADDRESS)]: hydrateWethImmutables({
|
|
31033
31252
|
bytecode: READ_ONLY_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE,
|
|
31034
31253
|
wethAddress: SEPOLIA_WETH_ADDRESS
|
|
31035
|
-
})
|
|
31254
|
+
}),
|
|
31255
|
+
[normalizeAddressLower(ROBINHOOD_ACCOUNTANT_ADDRESS)]: READ_ONLY_ROBINHOOD_PANOPTIC_VAULT_ACCOUNTANT_RUNTIME_BYTECODE
|
|
31036
31256
|
};
|
|
31037
31257
|
function getStaleOracleOverrideBytecodeForAccountant(accountantAddress) {
|
|
31038
31258
|
return STALE_ORACLE_OVERRIDE_BYTECODE_BY_ACCOUNTANT[normalizeAddressLower(accountantAddress)];
|
|
@@ -31528,12 +31748,15 @@ function medianBigInt(values) {
|
|
|
31528
31748
|
const lowerMiddle = sorted[upperMiddleIndex - 1];
|
|
31529
31749
|
return lowerMiddle === void 0 ? void 0 : (lowerMiddle + upperMiddle) / 2n;
|
|
31530
31750
|
}
|
|
31531
|
-
function
|
|
31532
|
-
|
|
31751
|
+
function getChainPriorityFeeFloor(chainId) {
|
|
31752
|
+
return chainId === ROBINHOOD_CHAIN_ID ? 0n : void 0;
|
|
31753
|
+
}
|
|
31754
|
+
function clampPriorityFee(priorityFee, minimumPriorityFeePerGas = MIN_VAULT_PRIORITY_FEE_PER_GAS) {
|
|
31755
|
+
if (priorityFee < minimumPriorityFeePerGas) return minimumPriorityFeePerGas;
|
|
31533
31756
|
if (priorityFee > MAX_VAULT_PRIORITY_FEE_PER_GAS) return MAX_VAULT_PRIORITY_FEE_PER_GAS;
|
|
31534
31757
|
return priorityFee;
|
|
31535
31758
|
}
|
|
31536
|
-
function resolveFeeHistoryQuote({ baseFeePerGas, reward }) {
|
|
31759
|
+
function resolveFeeHistoryQuote({ baseFeePerGas, reward, minimumPriorityFeePerGas }) {
|
|
31537
31760
|
const latestBaseFeeIndex = baseFeePerGas.length - 2;
|
|
31538
31761
|
if (latestBaseFeeIndex < 0 || reward === void 0 || reward.length === 0) return null;
|
|
31539
31762
|
const p90Rewards = reward.flatMap((blockRewards) => {
|
|
@@ -31542,16 +31765,18 @@ function resolveFeeHistoryQuote({ baseFeePerGas, reward }) {
|
|
|
31542
31765
|
});
|
|
31543
31766
|
const sampledPriorityFee = medianBigInt(p90Rewards);
|
|
31544
31767
|
if (sampledPriorityFee === void 0) return null;
|
|
31545
|
-
const
|
|
31768
|
+
const effectivePriorityFeeFloor = minimumPriorityFeePerGas ?? MIN_VAULT_PRIORITY_FEE_PER_GAS;
|
|
31769
|
+
const maxPriorityFeePerGas = clampPriorityFee(sampledPriorityFee, effectivePriorityFeeFloor);
|
|
31546
31770
|
const bufferedBaseFee = ceilMultiplyFraction(baseFeePerGas[latestBaseFeeIndex], BASE_FEE_BUFFER_NUMERATOR, BASE_FEE_BUFFER_DENOMINATOR);
|
|
31547
31771
|
return {
|
|
31548
31772
|
maxFeePerGas: bufferedBaseFee + maxPriorityFeePerGas,
|
|
31549
31773
|
maxPriorityFeePerGas,
|
|
31550
|
-
minimumMaxFeePerGas: bufferedBaseFee +
|
|
31774
|
+
minimumMaxFeePerGas: bufferedBaseFee + effectivePriorityFeeFloor,
|
|
31775
|
+
...minimumPriorityFeePerGas === void 0 ? {} : { minimumPriorityFeePerGas },
|
|
31551
31776
|
source: "fee_history"
|
|
31552
31777
|
};
|
|
31553
31778
|
}
|
|
31554
|
-
function resolveDeltaHedgeFeeHistoryQuote({ baseFeePerGas, reward }) {
|
|
31779
|
+
function resolveDeltaHedgeFeeHistoryQuote({ baseFeePerGas, reward, minimumPriorityFeePerGas }) {
|
|
31555
31780
|
const latestBaseFeeIndex = baseFeePerGas.length - 2;
|
|
31556
31781
|
if (latestBaseFeeIndex < 0 || reward === void 0 || reward.length === 0) return null;
|
|
31557
31782
|
const p25Rewards = reward.flatMap((blockRewards) => {
|
|
@@ -31560,22 +31785,25 @@ function resolveDeltaHedgeFeeHistoryQuote({ baseFeePerGas, reward }) {
|
|
|
31560
31785
|
});
|
|
31561
31786
|
const rawPriorityFeePerGas = medianBigInt(p25Rewards);
|
|
31562
31787
|
if (rawPriorityFeePerGas === void 0) return null;
|
|
31563
|
-
const
|
|
31788
|
+
const effectivePriorityFeeFloor = minimumPriorityFeePerGas ?? MIN_VAULT_PRIORITY_FEE_PER_GAS;
|
|
31789
|
+
const maxPriorityFeePerGas = clampPriorityFee(rawPriorityFeePerGas, effectivePriorityFeeFloor);
|
|
31564
31790
|
const bufferedBaseFee = ceilMultiplyFraction(baseFeePerGas[latestBaseFeeIndex], BASE_FEE_BUFFER_NUMERATOR, BASE_FEE_BUFFER_DENOMINATOR);
|
|
31565
31791
|
return {
|
|
31566
31792
|
maxFeePerGas: bufferedBaseFee + maxPriorityFeePerGas,
|
|
31567
31793
|
maxPriorityFeePerGas,
|
|
31568
|
-
minimumMaxFeePerGas: bufferedBaseFee +
|
|
31794
|
+
minimumMaxFeePerGas: bufferedBaseFee + effectivePriorityFeeFloor,
|
|
31795
|
+
...minimumPriorityFeePerGas === void 0 ? {} : { minimumPriorityFeePerGas },
|
|
31569
31796
|
rawPriorityFeePerGas,
|
|
31570
31797
|
source: "fee_history_p25"
|
|
31571
31798
|
};
|
|
31572
31799
|
}
|
|
31573
|
-
function resolveRpcPriorityFeeQuote({ baseFeePerGas, rawPriorityFeePerGas }) {
|
|
31800
|
+
function resolveRpcPriorityFeeQuote({ baseFeePerGas, rawPriorityFeePerGas, minimumPriorityFeePerGas }) {
|
|
31574
31801
|
const bufferedBaseFee = ceilMultiplyFraction(baseFeePerGas, BASE_FEE_BUFFER_NUMERATOR, BASE_FEE_BUFFER_DENOMINATOR);
|
|
31575
31802
|
return {
|
|
31576
31803
|
maxFeePerGas: bufferedBaseFee + rawPriorityFeePerGas,
|
|
31577
31804
|
maxPriorityFeePerGas: rawPriorityFeePerGas,
|
|
31578
|
-
minimumMaxFeePerGas: bufferedBaseFee + rawPriorityFeePerGas,
|
|
31805
|
+
minimumMaxFeePerGas: bufferedBaseFee + (minimumPriorityFeePerGas ?? rawPriorityFeePerGas),
|
|
31806
|
+
...minimumPriorityFeePerGas === void 0 ? {} : { minimumPriorityFeePerGas },
|
|
31579
31807
|
rawPriorityFeePerGas,
|
|
31580
31808
|
source: "rpc_priority_fee"
|
|
31581
31809
|
};
|
|
@@ -31596,7 +31824,7 @@ function getVaultTransactionReplacementFeeQuote({ originalQuote, historicalQuote
|
|
|
31596
31824
|
requiredMaxPriorityFeePerGas: requiredReplacementPriorityFee,
|
|
31597
31825
|
maximumAffordableFeePerGas: MAX_VAULT_TRANSACTION_GAS_COST / gasLimit
|
|
31598
31826
|
});
|
|
31599
|
-
const bufferedBaseFee = historicalQuote.minimumMaxFeePerGas - MIN_VAULT_PRIORITY_FEE_PER_GAS;
|
|
31827
|
+
const bufferedBaseFee = historicalQuote.minimumMaxFeePerGas - (historicalQuote.minimumPriorityFeePerGas ?? MIN_VAULT_PRIORITY_FEE_PER_GAS);
|
|
31600
31828
|
const currentMarketMaxFee = bufferedBaseFee + requiredMaxPriorityFeePerGas;
|
|
31601
31829
|
const desiredMaxFeePerGas = currentMarketMaxFee > bumpedMaxFee ? currentMarketMaxFee : bumpedMaxFee;
|
|
31602
31830
|
const maximumAffordableFeePerGas = MAX_VAULT_TRANSACTION_GAS_COST / gasLimit;
|
|
@@ -31614,13 +31842,15 @@ function getVaultTransactionReplacementFeeQuote({ originalQuote, historicalQuote
|
|
|
31614
31842
|
maxPriorityFeePerGas: requiredMaxPriorityFeePerGas
|
|
31615
31843
|
};
|
|
31616
31844
|
}
|
|
31617
|
-
function resolveFallbackQuote({ maxFeePerGas: estimatedMaxFeePerGas, maxPriorityFeePerGas: estimatedPriorityFeePerGas }) {
|
|
31618
|
-
const
|
|
31845
|
+
function resolveFallbackQuote({ maxFeePerGas: estimatedMaxFeePerGas, maxPriorityFeePerGas: estimatedPriorityFeePerGas, minimumPriorityFeePerGas }) {
|
|
31846
|
+
const effectivePriorityFeeFloor = minimumPriorityFeePerGas ?? MIN_VAULT_PRIORITY_FEE_PER_GAS;
|
|
31847
|
+
const maxPriorityFeePerGas = clampPriorityFee(estimatedPriorityFeePerGas, effectivePriorityFeeFloor);
|
|
31619
31848
|
const estimatedBaseFeeAllowance = estimatedMaxFeePerGas > estimatedPriorityFeePerGas ? estimatedMaxFeePerGas - estimatedPriorityFeePerGas : 0n;
|
|
31620
31849
|
return {
|
|
31621
31850
|
maxFeePerGas: estimatedBaseFeeAllowance + maxPriorityFeePerGas,
|
|
31622
31851
|
maxPriorityFeePerGas,
|
|
31623
|
-
minimumMaxFeePerGas: estimatedBaseFeeAllowance +
|
|
31852
|
+
minimumMaxFeePerGas: estimatedBaseFeeAllowance + effectivePriorityFeeFloor,
|
|
31853
|
+
...minimumPriorityFeePerGas === void 0 ? {} : { minimumPriorityFeePerGas },
|
|
31624
31854
|
source: "viem_fallback"
|
|
31625
31855
|
};
|
|
31626
31856
|
}
|
|
@@ -31633,7 +31863,7 @@ function applyVaultTransactionGasCostLimit(quote, gasLimit) {
|
|
|
31633
31863
|
minimumRequiredFeePerGas: quote.minimumMaxFeePerGas
|
|
31634
31864
|
});
|
|
31635
31865
|
if (quote.maxFeePerGas <= maximumAffordableFeePerGas) return quote;
|
|
31636
|
-
const bufferedBaseFee = quote.minimumMaxFeePerGas - MIN_VAULT_PRIORITY_FEE_PER_GAS;
|
|
31866
|
+
const bufferedBaseFee = quote.minimumMaxFeePerGas - (quote.minimumPriorityFeePerGas ?? MIN_VAULT_PRIORITY_FEE_PER_GAS);
|
|
31637
31867
|
const affordablePriorityFee = maximumAffordableFeePerGas - bufferedBaseFee;
|
|
31638
31868
|
return {
|
|
31639
31869
|
...quote,
|
|
@@ -31646,7 +31876,8 @@ function bufferVaultTransactionGasEstimate(gasEstimate) {
|
|
|
31646
31876
|
return ceilMultiplyFraction(gasEstimate, GAS_ESTIMATE_BUFFER_NUMERATOR, GAS_ESTIMATE_BUFFER_DENOMINATOR);
|
|
31647
31877
|
}
|
|
31648
31878
|
function validateVaultSignedTransactionFeeCaps(feeCaps, quote) {
|
|
31649
|
-
const { gasLimit, maxFeePerGas, maxPriorityFeePerGas } = feeCaps;
|
|
31879
|
+
const { chainId, gasLimit, maxFeePerGas, maxPriorityFeePerGas } = feeCaps;
|
|
31880
|
+
const minimumPriorityFeePerGas = quote?.minimumPriorityFeePerGas ?? getChainPriorityFeeFloor(chainId) ?? MIN_VAULT_PRIORITY_FEE_PER_GAS;
|
|
31650
31881
|
if (maxFeePerGas === null || maxPriorityFeePerGas === null) return {
|
|
31651
31882
|
valid: false,
|
|
31652
31883
|
code: "MissingEip1559Fees",
|
|
@@ -31657,10 +31888,10 @@ function validateVaultSignedTransactionFeeCaps(feeCaps, quote) {
|
|
|
31657
31888
|
code: "InvalidFeeCaps",
|
|
31658
31889
|
reason: `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) cannot exceed maxFeePerGas (${maxFeePerGas.toString()} wei).`
|
|
31659
31890
|
};
|
|
31660
|
-
if (maxPriorityFeePerGas <
|
|
31891
|
+
if (maxPriorityFeePerGas < minimumPriorityFeePerGas) return {
|
|
31661
31892
|
valid: false,
|
|
31662
31893
|
code: "PriorityFeeTooLow",
|
|
31663
|
-
reason: `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) must be at least ${
|
|
31894
|
+
reason: `Signed transaction maxPriorityFeePerGas (${maxPriorityFeePerGas.toString()} wei) must be at least ${minimumPriorityFeePerGas.toString()} wei.`
|
|
31664
31895
|
};
|
|
31665
31896
|
if (maxPriorityFeePerGas > MAX_VAULT_PRIORITY_FEE_PER_GAS) return {
|
|
31666
31897
|
valid: false,
|
|
@@ -31675,21 +31906,27 @@ function validateVaultSignedTransactionFeeCaps(feeCaps, quote) {
|
|
|
31675
31906
|
if (quote !== void 0 && maxFeePerGas < quote.minimumMaxFeePerGas) return {
|
|
31676
31907
|
valid: false,
|
|
31677
31908
|
code: "MaxFeeTooLow",
|
|
31678
|
-
reason: `Signed transaction maxFeePerGas (${maxFeePerGas.toString()} wei) must be at least ${quote.minimumMaxFeePerGas.toString()} wei for the buffered next-block base fee and
|
|
31909
|
+
reason: `Signed transaction maxFeePerGas (${maxFeePerGas.toString()} wei) must be at least ${quote.minimumMaxFeePerGas.toString()} wei for the buffered next-block base fee and configured minimum priority fee.`
|
|
31679
31910
|
};
|
|
31680
31911
|
return { valid: true };
|
|
31681
31912
|
}
|
|
31682
|
-
async function resolveVaultTransactionFeeQuote({ readFeeHistory, readFallbackEstimate }) {
|
|
31913
|
+
async function resolveVaultTransactionFeeQuote({ readFeeHistory, readFallbackEstimate, minimumPriorityFeePerGas }) {
|
|
31683
31914
|
let feeHistoryError;
|
|
31684
31915
|
try {
|
|
31685
|
-
const quote = resolveFeeHistoryQuote(
|
|
31916
|
+
const quote = resolveFeeHistoryQuote({
|
|
31917
|
+
...await readFeeHistory(),
|
|
31918
|
+
minimumPriorityFeePerGas
|
|
31919
|
+
});
|
|
31686
31920
|
if (quote !== null) return quote;
|
|
31687
31921
|
feeHistoryError = new Error("eth_feeHistory returned incomplete base fee or reward data");
|
|
31688
31922
|
} catch (error) {
|
|
31689
31923
|
feeHistoryError = error;
|
|
31690
31924
|
}
|
|
31691
31925
|
try {
|
|
31692
|
-
return resolveFallbackQuote(
|
|
31926
|
+
return resolveFallbackQuote({
|
|
31927
|
+
...await readFallbackEstimate(),
|
|
31928
|
+
minimumPriorityFeePerGas
|
|
31929
|
+
});
|
|
31693
31930
|
} catch (fallbackError) {
|
|
31694
31931
|
throw new VaultTransactionFeeEstimationError({
|
|
31695
31932
|
feeHistoryError,
|
|
@@ -31701,12 +31938,13 @@ async function resolveVaultTransactionFeeQuote({ readFeeHistory, readFallbackEst
|
|
|
31701
31938
|
* Resolve explicit EIP-1559 fees for operator-controlled vault transactions.
|
|
31702
31939
|
*
|
|
31703
31940
|
* The normal path follows the median p90 priority fee from the last 20 blocks,
|
|
31704
|
-
* with a 0.1 gwei floor
|
|
31705
|
-
*
|
|
31706
|
-
* base-fee allowance.
|
|
31941
|
+
* with a 3 gwei ceiling and a 0.1 gwei floor except on chains that do not use
|
|
31942
|
+
* tips for ordering. If fee history is unavailable, Viem's estimate is used
|
|
31943
|
+
* while preserving those bounds and its original base-fee allowance.
|
|
31707
31944
|
*/
|
|
31708
31945
|
async function getVaultTransactionFeeQuote(client) {
|
|
31709
31946
|
return resolveVaultTransactionFeeQuote({
|
|
31947
|
+
minimumPriorityFeePerGas: getChainPriorityFeeFloor(client.chain?.id),
|
|
31710
31948
|
readFeeHistory: () => getFeeHistory(client, {
|
|
31711
31949
|
blockCount: FEE_HISTORY_BLOCK_COUNT,
|
|
31712
31950
|
blockTag: "latest",
|
|
@@ -31721,13 +31959,19 @@ async function getVaultDeltaHedgeHistoricalFeeQuote(client) {
|
|
|
31721
31959
|
blockTag: "latest",
|
|
31722
31960
|
rewardPercentiles: DELTA_HEDGE_FEE_HISTORY_REWARD_PERCENTILES
|
|
31723
31961
|
});
|
|
31724
|
-
const quote = resolveDeltaHedgeFeeHistoryQuote(
|
|
31962
|
+
const quote = resolveDeltaHedgeFeeHistoryQuote({
|
|
31963
|
+
...feeHistory,
|
|
31964
|
+
minimumPriorityFeePerGas: getChainPriorityFeeFloor(client.chain?.id)
|
|
31965
|
+
});
|
|
31725
31966
|
if (quote === null) throw new Error("eth_feeHistory returned incomplete p25 base fee or reward data");
|
|
31726
31967
|
return quote;
|
|
31727
31968
|
}
|
|
31728
|
-
async function resolveVaultDeltaHedgeInitialFeeQuote({ readRpcQuote, readHistoricalQuote }) {
|
|
31969
|
+
async function resolveVaultDeltaHedgeInitialFeeQuote({ readRpcQuote, readHistoricalQuote, minimumPriorityFeePerGas }) {
|
|
31729
31970
|
try {
|
|
31730
|
-
return resolveRpcPriorityFeeQuote(
|
|
31971
|
+
return resolveRpcPriorityFeeQuote({
|
|
31972
|
+
...await readRpcQuote(),
|
|
31973
|
+
minimumPriorityFeePerGas
|
|
31974
|
+
});
|
|
31731
31975
|
} catch {
|
|
31732
31976
|
return readHistoricalQuote();
|
|
31733
31977
|
}
|
|
@@ -31739,6 +31983,7 @@ async function resolveVaultDeltaHedgeInitialFeeQuote({ readRpcQuote, readHistori
|
|
|
31739
31983
|
*/
|
|
31740
31984
|
async function getVaultDeltaHedgeInitialFeeQuote(client) {
|
|
31741
31985
|
return resolveVaultDeltaHedgeInitialFeeQuote({
|
|
31986
|
+
minimumPriorityFeePerGas: getChainPriorityFeeFloor(client.chain?.id),
|
|
31742
31987
|
readRpcQuote: async () => {
|
|
31743
31988
|
const [rawPriorityFee, latestBlock] = await Promise.all([client.request({ method: "eth_maxPriorityFeePerGas" }), getBlock(client, { blockTag: "latest" })]);
|
|
31744
31989
|
if (latestBlock.baseFeePerGas === null) throw new Error("Latest block does not include an EIP-1559 base fee");
|
|
@@ -31963,11 +32208,11 @@ function encodeWithdrawFunctionData({ assets, receiver, owner }) {
|
|
|
31963
32208
|
|
|
31964
32209
|
//#endregion
|
|
31965
32210
|
//#region src/token/erc20/approve.ts
|
|
31966
|
-
function encodeApproveFunctionData({ spender, amount }) {
|
|
32211
|
+
function encodeApproveFunctionData({ spender, amount: amount$1 }) {
|
|
31967
32212
|
return encodeFunctionData({
|
|
31968
32213
|
abi: Erc20Abi,
|
|
31969
32214
|
functionName: "approve",
|
|
31970
|
-
args: [spender, amount]
|
|
32215
|
+
args: [spender, amount$1]
|
|
31971
32216
|
});
|
|
31972
32217
|
}
|
|
31973
32218
|
|
|
@@ -32010,9 +32255,9 @@ function getAlchemyWsRpcUrl(chainId, alchemyApiKey) {
|
|
|
32010
32255
|
* formatTokenAmount(-500000000000000000n, 18n, 4n) // "-0.5000"
|
|
32011
32256
|
* ```
|
|
32012
32257
|
*/
|
|
32013
|
-
function formatTokenAmount(amount, decimals, precision) {
|
|
32014
|
-
const isNegative = amount < 0n;
|
|
32015
|
-
const absAmount = isNegative ? -amount : amount;
|
|
32258
|
+
function formatTokenAmount(amount$1, decimals, precision) {
|
|
32259
|
+
const isNegative = amount$1 < 0n;
|
|
32260
|
+
const absAmount = isNegative ? -amount$1 : amount$1;
|
|
32016
32261
|
const divisor = 10n ** decimals;
|
|
32017
32262
|
const integerPart = absAmount / divisor;
|
|
32018
32263
|
const fractionalPart = absAmount % divisor;
|
|
@@ -32241,5 +32486,5 @@ async function getIrmCurve(params) {
|
|
|
32241
32486
|
}
|
|
32242
32487
|
|
|
32243
32488
|
//#endregion
|
|
32244
|
-
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, BORROW_INDEX_BITS, BPS_SCALE, BaseUSDCPLPStrategistLeaves, BaseUSDCPLPVaultPoolInfos, BaseWETHPLPStrategistLeaves, BaseWETHPLPVaultPoolInfos, CHAIN_DEPLOYMENTS, CollateralTrackerAbi, CollateralTrackerV1_1Abi, Erc1155Abi, Erc20Abi, HypoVaultAbi, HypoVaultManagerConfigSchema, HypoVaultManagerWithMerkleVerificationAbi, MAINNET_CHAIN_ID, MAINNET_DEPLOYMENT, MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES, MAINNET_PANOPTIC_V2_ADDRESSES, MAINNET_RISK_ENGINES, MAINNET_USDC_PLP_COMPILED_POOL_POLICY, MAINNET_USDC_PLP_POOL_POLICY, MAINNET_V3_AUTHORIZATION_BLOCK, MAINNET_WETH_PLP_COMPILED_POOL_POLICY, MAINNET_WETH_PLP_POOL_POLICY, MARKET_EPOCH_BITS, MARKET_EPOCH_SHIFT, MAX_STALE_DELTA_HEDGE_PRIORITY_FEE_PER_GAS, MAX_VAULT_PRIORITY_FEE_PER_GAS, MAX_VAULT_TRANSACTION_GAS_COST, MIN_VAULT_PRIORITY_FEE_PER_GAS, MainnetLegacyUSDCPLPStrategistLeaves, MainnetLegacyWETHPLPStrategistLeaves, MainnetUSDCPLPLegacyVaultPoolInfos, MainnetUSDCPLPPreviousStrategistLeaves, MainnetUSDCPLPPreviousVaultPoolInfos, MainnetUSDCPLPStrategistLeaves, MainnetUSDCPLPV3AuthorizedStrategistLeaves, MainnetUSDCPLPV3AuthorizedVaultPoolInfos, MainnetUSDCPLPVaultPoolInfos, MainnetWETHPLPLegacyVaultPoolInfos, MainnetWETHPLPPreviousStrategistLeaves, MainnetWETHPLPPreviousVaultPoolInfos, MainnetWETHPLPStrategistLeaves, MainnetWETHPLPV3AuthorizedStrategistLeaves, MainnetWETHPLPV3AuthorizedVaultPoolInfos, MainnetWETHPLPVaultPoolInfos, Multicall3Abi, NonFungiblePositionManagerAbi, PanopticFactoryV3Abi, PanopticFactoryV4Abi, PanopticHelperAbi, PanopticPoolAbi, PanopticPoolV1_1Abi, PanopticQueryV1_1Abi, PanopticVaultAccountantAbi, PanopticVaultAccountantManagerInputAbi, PoolManagerAbi, RATE_AT_TARGET_BITS, ROBINHOOD_CHAIN_ID, ROBINHOOD_DEPLOYMENT, ROBINHOOD_HYPOVAULT_ADDRESSES, ROBINHOOD_HYPOVAULT_CORE_ADDRESSES, ROBINHOOD_HYPOVAULT_MANAGER_ADDRESSES, ROBINHOOD_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, ROBINHOOD_PANOPTIC_POOL_ADDRESSES, ROBINHOOD_PANOPTIC_V2_ADDRESSES, ROBINHOOD_RISK_ENGINES, ROBINHOOD_SPY_USDG_MARKET, ROBINHOOD_USDG_PLP_COMPILED_POOL_POLICY, ROBINHOOD_USDG_PLP_POOL_POLICY, RescueDistributorAbi, RobinhoodUSDGPLPStrategistLeaves, RobinhoodUSDGPLPVaultPoolInfos, SECONDS_PER_YEAR, 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, SemiFungiblePositionManagerAbi, SemiFungiblePositionManagerV1_1Abi, SepoliaUSDCPLPStrategistLeaves, SepoliaUSDCPLPVaultPoolInfos, SepoliaWETHPLPStrategistLeaves, SepoliaWETHPLPVaultPoolInfos, Simple7702AccountAbi, StateViewAbi, TRUSTED_VAULT_SHARE_PRICE_STATUSES, UNREALIZED_INTEREST_BITS, UniswapHelperAbi, UniswapHelperV1_1Abi, UniswapMigratorAbi, UniswapV3FactoryAbi, UniswapV3PoolAbi, UsdcPlpVaultBaseProdConfig, UsdcPlpVaultMainnetLegacyConfig, UsdcPlpVaultMainnetProdConfig, UsdcPlpVaultSepoliaDevConfig, UsdcPlpVaultSepoliaProdConfig, UsdgPlpVaultRobinhoodProdConfig, VAULT_DISPLAY_NAMES_PER_CHAIN, VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN, VaultApyPreInceptionBlockError, VaultTransactionFeeEstimationError, VaultTransactionGasCostLimitError, VaultTransactionReplacementLimitError, WAD, WETHAbi, WethPlpVaultBaseProdConfig, WethPlpVaultMainnetLegacyConfig, WethPlpVaultMainnetProdConfig, WethPlpVaultSepoliaDevConfig, WethPlpVaultSepoliaProdConfig, adjustUnderlyingIdleBalance, annualizePerSecondRateWad, applyVaultTransactionGasCostLimit, bufferVaultTransactionGasEstimate, buildClaimVaultShareCalldatas, buildExecuteDepositCalldatas, buildExecuteWithdrawalCalldatas, buildManageArgs, buildManagerInput, buildManagerInputAtBlock, buildRequestWithdrawalCalldatas, buildVaultManagerInput, buildVaultManagerInputAtBlock, builderFactoryAbi, builderWalletAbi, calculateAnnualizedApyPct, calculateAssetsFromShares, calculateAvailableShares, calculateClaimableAssetsFromQueuedWithdrawals, calculateClaimableSharesFromQueuedDeposits, calculateSharesFromAssets, calculateVaultNetLendingApyPctFromTrackerInputs, calculateVaultNetLendingYieldUnderlyingFromTrackerInputs, cancelDeposit, chainToHypoVaultGraphQlAPI, clearVaultApyStrategyOverride, collateralTrackerV2Abi as collateralTrackerAbi, collateralTrackerV2Abi, computeSharePriceFromNavSnapshot, convertJsonTreeToArray, createVaultSharePriceProcessor, deriveSupplyRatePerSecWad, deriveVaultApyTimeseriesFromSharePrices, encodeApproveFunctionData, encodeCancelDepositFunctionData, encodeDepositFunctionData, encodeExecuteDepositFunctionData, encodeExecuteWithdrawalFunctionData, encodeExecuteWithdrawalMulticallFunctionData, encodeFulfillDepositsFunctionData, encodeFulfillWithdrawalsFunctionData, encodeRequestDepositFunctionData, encodeRequestWithdrawalFunctionData, encodeRequestWithdrawalMulticallFunctionData, encodeWithdrawFunctionData, executeWithdrawal, executeWithdrawalMulticall, fetchFirstDepositTimestampByVaultId, fetchVaultLendingAllocation, fetchVaultNetLendingApyPct, fetchVaultNetLendingYieldUnderlying, fetchVaultSharePriceSnapshot, fetchVaultSharePriceSnapshotWithCandidateRecovery, findLeaf, findLeafForTarget, findLeafForTargetAndSignature, formatPerSecondRateWadAsAprPct, formatPerSecondRateWadAsApyPct, generateProof, getAlchemyRpcUrl, getAlchemyWsRpcUrl, getCancelDepositContractConfig, getChainDeployment, getEthUsdcMarket, getExecuteWithdrawalContractConfig, getExecuteWithdrawalMulticallContractConfig, getHypoVaultConfigForVault, getHypoVaultGraphQLClient, getIrmCurrent, getIrmCurve, getLendingAllocationRows, getMainnetV3AuthorizationArtifactsAtBlock, getMainnetV3AuthorizationGenerations, getMainnetVaultManagerRootAtBlock, getMainnetVaultManagerRootHistory, getMainnetVaultPoolConfigurationAtBlock, getMainnetVaultPoolConfigurationHistory, getMinQueuedDepositEpoch, getProofsFromDigests, getProofsUsingTree, getRequestDepositContractConfig, getRequestWithdrawalContractConfig, getRequestWithdrawalMulticallContractConfig, getSpyUsdgMarket, getStaleOracleOverrideBytecodeForAccountant, getStaleOracleStateOverrideForAccountant, getVaultApyErrorMessage, getVaultApyStrategy, getVaultCandidatePoolInfos, getVaultDeltaHedgeHistoricalFeeQuote, getVaultDeltaHedgeInitialFeeQuote, getVaultPoolInfos, getVaultTransactionFeeQuote, getVaultTransactionReplacementFeeQuote, isExpectedHistoricalReadMiss, isIncorrectPositionListReadError, isStaleOraclePriceError, isStaleOraclePriceReadError, isSupportedChain, isTrustedVaultSharePriceStatus, packMarketState, panopticFactoryV4Abi as panopticFactoryAbi, panopticFactoryV3Abi, panopticFactoryV4Abi, panopticLiquidatorAbi, panopticPoolV2Abi as panopticPoolAbi, panopticPoolV2Abi, panopticQueryAbi, parseCustomError, ratePerSecWadToAprPct, recoverVaultCandidateTokenIdsByPool, requestDeposit, requestWithdrawal, requestWithdrawalMulticall, requireChainDeployment, resolveMainnetV3AuthorizationArtifacts, resolvePositionScanFromBlock, resolveVaultDisplayName, resolveVaultHistoricalCandidatesByPool, resolveVaultPoolInfosAtBlock, resolveVaultTokenIdsByPool, riskEngineAbi, semiFungiblePositionManagerV4Abi as semiFungiblePositionManagerAbi, semiFungiblePositionManagerV3Abi, semiFungiblePositionManagerV4Abi, setVaultApyStrategyOverride, simulateCancelDeposit, simulateExecuteWithdrawal, simulateExecuteWithdrawalMulticall, simulateRequestDeposit, simulateRequestWithdrawal, simulateRequestWithdrawalMulticall, statusForVaultSharePriceSnapshot, useCancelDeposit, useClaimVaultShares, useExecuteWithdrawal, useRequestDeposit, useRequestWithdrawal, utilizationBpsToWad, utilizationPctToWad, validateVaultSignedTransactionFeeCaps, verifyVaultOpenTokenIdsAtBlock };
|
|
32489
|
+
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, BORROW_INDEX_BITS, BPS_SCALE, BaseUSDCPLPStrategistLeaves, BaseUSDCPLPVaultPoolInfos, BaseWETHPLPStrategistLeaves, BaseWETHPLPVaultPoolInfos, CHAIN_DEPLOYMENTS, CollateralTrackerAbi, CollateralTrackerV1_1Abi, Erc1155Abi, Erc20Abi, HypoVaultAbi, HypoVaultManagerConfigSchema, HypoVaultManagerWithMerkleVerificationAbi, MAINNET_CHAIN_ID, MAINNET_DEPLOYMENT, MAINNET_ETH_USDC_5BPS_V3_PANOPTIC_POOL_ADDRESSES, MAINNET_PANOPTIC_V2_ADDRESSES, MAINNET_RISK_ENGINES, MAINNET_USDC_PLP_COMPILED_POOL_POLICY, MAINNET_USDC_PLP_POOL_POLICY, MAINNET_V3_AUTHORIZATION_BLOCK, MAINNET_WETH_PLP_COMPILED_POOL_POLICY, MAINNET_WETH_PLP_POOL_POLICY, MARKET_EPOCH_BITS, MARKET_EPOCH_SHIFT, MAX_STALE_DELTA_HEDGE_PRIORITY_FEE_PER_GAS, MAX_VAULT_PRIORITY_FEE_PER_GAS, MAX_VAULT_TRANSACTION_GAS_COST, MIN_VAULT_PRIORITY_FEE_PER_GAS, MainnetLegacyUSDCPLPStrategistLeaves, MainnetLegacyWETHPLPStrategistLeaves, MainnetUSDCPLPLegacyVaultPoolInfos, MainnetUSDCPLPPreviousStrategistLeaves, MainnetUSDCPLPPreviousVaultPoolInfos, MainnetUSDCPLPStrategistLeaves, MainnetUSDCPLPV3AuthorizedStrategistLeaves, MainnetUSDCPLPV3AuthorizedVaultPoolInfos, MainnetUSDCPLPVaultPoolInfos, MainnetWETHPLPLegacyVaultPoolInfos, MainnetWETHPLPPreviousStrategistLeaves, MainnetWETHPLPPreviousVaultPoolInfos, MainnetWETHPLPStrategistLeaves, MainnetWETHPLPV3AuthorizedStrategistLeaves, MainnetWETHPLPV3AuthorizedVaultPoolInfos, MainnetWETHPLPVaultPoolInfos, Multicall3Abi, NonFungiblePositionManagerAbi, PanopticFactoryV3Abi, PanopticFactoryV4Abi, PanopticHelperAbi, PanopticPoolAbi, PanopticPoolV1_1Abi, PanopticQueryV1_1Abi, PanopticVaultAccountantAbi, PanopticVaultAccountantManagerInputAbi, PoolManagerAbi, RATE_AT_TARGET_BITS, ROBINHOOD_CHAIN_ID, ROBINHOOD_DEPLOYMENT, ROBINHOOD_HYPOVAULT_ADDRESSES, ROBINHOOD_HYPOVAULT_CORE_ADDRESSES, ROBINHOOD_HYPOVAULT_MANAGER_ADDRESSES, ROBINHOOD_HYPOVAULT_MANAGER_TURNKEY_SIGNERS, ROBINHOOD_PANOPTIC_POOL_ADDRESSES, ROBINHOOD_PANOPTIC_V2_ADDRESSES, ROBINHOOD_RISK_ENGINES, ROBINHOOD_SPY_USDG_MARKET, ROBINHOOD_USDG_PLP_COMPILED_POOL_POLICY, ROBINHOOD_USDG_PLP_POOL_POLICY, RescueDistributorAbi, RobinhoodUSDGPLPStrategistLeaves, RobinhoodUSDGPLPVaultPoolInfos, SECONDS_PER_YEAR, 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, SemiFungiblePositionManagerAbi, SemiFungiblePositionManagerV1_1Abi, SepoliaUSDCPLPStrategistLeaves, SepoliaUSDCPLPVaultPoolInfos, SepoliaWETHPLPStrategistLeaves, SepoliaWETHPLPVaultPoolInfos, Simple7702AccountAbi, StateViewAbi, TRUSTED_VAULT_SHARE_PRICE_STATUSES, UNREALIZED_INTEREST_BITS, UniswapHelperAbi, UniswapHelperV1_1Abi, UniswapMigratorAbi, UniswapV3FactoryAbi, UniswapV3PoolAbi, UsdcPlpVaultBaseProdConfig, UsdcPlpVaultMainnetLegacyConfig, UsdcPlpVaultMainnetProdConfig, UsdcPlpVaultSepoliaDevConfig, UsdcPlpVaultSepoliaProdConfig, UsdgPlpVaultRobinhoodProdConfig, VAULT_DISPLAY_NAMES_PER_CHAIN, VAULT_DISPLAY_NAME_RESOLVERS_PER_CHAIN, VaultApyPreInceptionBlockError, VaultTransactionFeeEstimationError, VaultTransactionGasCostLimitError, VaultTransactionReplacementLimitError, WAD, WETHAbi, WethPlpVaultBaseProdConfig, WethPlpVaultMainnetLegacyConfig, WethPlpVaultMainnetProdConfig, WethPlpVaultSepoliaDevConfig, WethPlpVaultSepoliaProdConfig, adjustUnderlyingIdleBalance, annualizePerSecondRateWad, applyVaultTransactionGasCostLimit, bufferVaultTransactionGasEstimate, buildClaimVaultShareCalldatas, buildExecuteDepositCalldatas, buildExecuteWithdrawalCalldatas, buildManageArgs, buildManagerInput, buildManagerInputAtBlock, buildRequestWithdrawalCalldatas, buildVaultManagerInput, buildVaultManagerInputAtBlock, builderFactoryAbi, builderWalletAbi, calculateAnnualizedApyPct, calculateAssetsFromShares, calculateAvailableShares, calculateClaimableAssetsFromQueuedWithdrawals, calculateClaimableSharesFromQueuedDeposits, calculateSharesFromAssets, calculateVaultNetLendingApyPctFromTrackerInputs, calculateVaultNetLendingYieldUnderlyingFromTrackerInputs, cancelDeposit, chainToHypoVaultGraphQlAPI, clearVaultApyStrategyOverride, collateralTrackerV2Abi as collateralTrackerAbi, collateralTrackerV2Abi, computeSharePriceFromNavSnapshot, convertJsonTreeToArray, createVaultSharePriceProcessor, deriveSupplyRatePerSecWad, deriveVaultApyTimeseriesFromSharePrices, encodeApproveFunctionData, encodeCancelDepositFunctionData, encodeDepositFunctionData, encodeExecuteDepositFunctionData, encodeExecuteWithdrawalFunctionData, encodeExecuteWithdrawalMulticallFunctionData, encodeFulfillDepositsFunctionData, encodeFulfillWithdrawalsFunctionData, encodeRequestDepositFunctionData, encodeRequestWithdrawalFunctionData, encodeRequestWithdrawalMulticallFunctionData, encodeWithdrawFunctionData, executeWithdrawal, executeWithdrawalMulticall, fetchFirstDepositTimestampByVaultId, fetchVaultLendingAllocation, fetchVaultNetLendingApyPct, fetchVaultNetLendingYieldUnderlying, fetchVaultSharePriceSnapshot, fetchVaultSharePriceSnapshotWithCandidateRecovery, findLeaf, findLeafForTarget, findLeafForTargetAndSignature, formatPerSecondRateWadAsAprPct, formatPerSecondRateWadAsApyPct, generateProof, getAaveHoldings, getAlchemyRpcUrl, getAlchemyWsRpcUrl, getCancelDepositContractConfig, getChainDeployment, getEthUsdcMarket, getExecuteWithdrawalContractConfig, getExecuteWithdrawalMulticallContractConfig, getHypoVaultConfigForVault, getHypoVaultGraphQLClient, getIrmCurrent, getIrmCurve, getLendingAllocationRows, getMainnetV3AuthorizationArtifactsAtBlock, getMainnetV3AuthorizationGenerations, getMainnetVaultManagerRootAtBlock, getMainnetVaultManagerRootHistory, getMainnetVaultPoolConfigurationAtBlock, getMainnetVaultPoolConfigurationHistory, getMinQueuedDepositEpoch, getMorphoHoldings, getProofsFromDigests, getProofsUsingTree, getRequestDepositContractConfig, getRequestWithdrawalContractConfig, getRequestWithdrawalMulticallContractConfig, getSpyUsdgMarket, getStaleOracleOverrideBytecodeForAccountant, getStaleOracleStateOverrideForAccountant, getVaultApyErrorMessage, getVaultApyStrategy, getVaultCandidatePoolInfos, getVaultDeltaHedgeHistoricalFeeQuote, getVaultDeltaHedgeInitialFeeQuote, getVaultPoolInfos, getVaultTransactionFeeQuote, getVaultTransactionReplacementFeeQuote, isExpectedHistoricalReadMiss, isIncorrectPositionListReadError, isStaleOraclePriceError, isStaleOraclePriceReadError, isSupportedChain, isTrustedVaultSharePriceStatus, packMarketState, panopticFactoryV4Abi as panopticFactoryAbi, panopticFactoryV3Abi, panopticFactoryV4Abi, panopticLiquidatorAbi, panopticPoolV2Abi as panopticPoolAbi, panopticPoolV2Abi, panopticQueryAbi, parseCustomError, ratePerSecWadToAprPct, recoverVaultCandidateTokenIdsByPool, requestDeposit, requestWithdrawal, requestWithdrawalMulticall, requireChainDeployment, resolveMainnetV3AuthorizationArtifacts, resolvePositionScanFromBlock, resolveVaultDisplayName, resolveVaultHistoricalCandidatesByPool, resolveVaultPoolInfosAtBlock, resolveVaultTokenIdsByPool, riskEngineAbi, semiFungiblePositionManagerV4Abi as semiFungiblePositionManagerAbi, semiFungiblePositionManagerV3Abi, semiFungiblePositionManagerV4Abi, setVaultApyStrategyOverride, simulateCancelDeposit, simulateExecuteWithdrawal, simulateExecuteWithdrawalMulticall, simulateRequestDeposit, simulateRequestWithdrawal, simulateRequestWithdrawalMulticall, statusForVaultSharePriceSnapshot, useCancelDeposit, useClaimVaultShares, useExecuteWithdrawal, useRequestDeposit, useRequestWithdrawal, utilizationBpsToWad, utilizationPctToWad, validateVaultSignedTransactionFeeCaps, verifyVaultOpenTokenIdsAtBlock };
|
|
32245
32490
|
//# sourceMappingURL=index.js.map
|