@gearbox-protocol/sdk 18.2.0-next.13 → 18.2.0-next.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (79) hide show
  1. package/dist/cjs/onchain/index.js +18 -0
  2. package/dist/cjs/onchain/market/adapters/abi/adapters/iTreehouseFastlaneAdapter.js +113 -0
  3. package/dist/cjs/onchain/market/adapters/abi/adapters/iTreehouseRedemptionGatewayAdapter.js +258 -0
  4. package/dist/cjs/onchain/market/adapters/abi/adapters/iTreehouseRouterAdapter.js +161 -0
  5. package/dist/cjs/onchain/market/adapters/abi/adapters/index.js +6 -0
  6. package/dist/cjs/onchain/market/adapters/abi/index.js +13 -0
  7. package/dist/cjs/onchain/market/adapters/abi/treehouse/iTreehouseFastlane.js +39 -0
  8. package/dist/cjs/onchain/market/adapters/abi/treehouse/iTreehouseRedemptionGateway.js +230 -0
  9. package/dist/cjs/onchain/market/adapters/abi/treehouse/iTreehouseRouter.js +29 -0
  10. package/dist/cjs/onchain/market/adapters/abi/treehouse/index.js +7 -0
  11. package/dist/cjs/onchain/market/adapters/contracts/TreehouseFastlaneAdapterContract.js +72 -0
  12. package/dist/cjs/onchain/market/adapters/contracts/TreehouseRedemptionGatewayAdapterContract.js +117 -0
  13. package/dist/cjs/onchain/market/adapters/contracts/TreehouseRouterAdapterContract.js +61 -0
  14. package/dist/cjs/onchain/market/adapters/contracts/index.js +6 -0
  15. package/dist/cjs/onchain/market/adapters/createAdapter.js +6 -0
  16. package/dist/cjs/onchain/market/adapters/index.js +18 -0
  17. package/dist/cjs/onchain/market/index.js +18 -0
  18. package/dist/cjs/permissionless/api/index.js +2 -1
  19. package/dist/cjs/permissionless/api/oracles/PermissionlessOracles.js +40 -5
  20. package/dist/cjs/permissionless/api/oracles/index.js +2 -1
  21. package/dist/cjs/permissionless/api/oracles/score/formula.js +19 -24
  22. package/dist/cjs/permissionless/api/oracles/score/index.js +1 -1
  23. package/dist/cjs/permissionless/api/oracles/score/run.js +186 -105
  24. package/dist/cjs/permissionless/api/oracles/stress/index.js +1 -0
  25. package/dist/cjs/permissionless/api/oracles/stress/run.js +63 -13
  26. package/dist/cjs/permissionless/index.js +2 -1
  27. package/dist/esm/onchain/index.js +10 -1
  28. package/dist/esm/onchain/market/adapters/abi/adapters/iTreehouseFastlaneAdapter.js +112 -0
  29. package/dist/esm/onchain/market/adapters/abi/adapters/iTreehouseRedemptionGatewayAdapter.js +257 -0
  30. package/dist/esm/onchain/market/adapters/abi/adapters/iTreehouseRouterAdapter.js +160 -0
  31. package/dist/esm/onchain/market/adapters/abi/adapters/index.js +4 -1
  32. package/dist/esm/onchain/market/adapters/abi/index.js +8 -1
  33. package/dist/esm/onchain/market/adapters/abi/treehouse/iTreehouseFastlane.js +38 -0
  34. package/dist/esm/onchain/market/adapters/abi/treehouse/iTreehouseRedemptionGateway.js +229 -0
  35. package/dist/esm/onchain/market/adapters/abi/treehouse/iTreehouseRouter.js +28 -0
  36. package/dist/esm/onchain/market/adapters/abi/treehouse/index.js +4 -0
  37. package/dist/esm/onchain/market/adapters/contracts/TreehouseFastlaneAdapterContract.js +71 -0
  38. package/dist/esm/onchain/market/adapters/contracts/TreehouseRedemptionGatewayAdapterContract.js +116 -0
  39. package/dist/esm/onchain/market/adapters/contracts/TreehouseRouterAdapterContract.js +60 -0
  40. package/dist/esm/onchain/market/adapters/contracts/index.js +4 -1
  41. package/dist/esm/onchain/market/adapters/createAdapter.js +6 -0
  42. package/dist/esm/onchain/market/adapters/index.js +10 -1
  43. package/dist/esm/onchain/market/index.js +10 -1
  44. package/dist/esm/permissionless/api/index.js +4 -4
  45. package/dist/esm/permissionless/api/oracles/PermissionlessOracles.js +41 -6
  46. package/dist/esm/permissionless/api/oracles/index.js +4 -4
  47. package/dist/esm/permissionless/api/oracles/score/formula.js +20 -24
  48. package/dist/esm/permissionless/api/oracles/score/index.js +3 -3
  49. package/dist/esm/permissionless/api/oracles/score/run.js +187 -107
  50. package/dist/esm/permissionless/api/oracles/stress/index.js +2 -2
  51. package/dist/esm/permissionless/api/oracles/stress/run.js +64 -15
  52. package/dist/esm/permissionless/index.js +4 -4
  53. package/dist/types/onchain/index.d.ts +10 -1
  54. package/dist/types/onchain/market/adapters/abi/adapters/iTreehouseFastlaneAdapter.d.ts +101 -0
  55. package/dist/types/onchain/market/adapters/abi/adapters/iTreehouseRedemptionGatewayAdapter.d.ts +237 -0
  56. package/dist/types/onchain/market/adapters/abi/adapters/iTreehouseRouterAdapter.d.ts +146 -0
  57. package/dist/types/onchain/market/adapters/abi/adapters/index.d.ts +4 -1
  58. package/dist/types/onchain/market/adapters/abi/index.d.ts +8 -1
  59. package/dist/types/onchain/market/adapters/abi/treehouse/iTreehouseFastlane.d.ts +33 -0
  60. package/dist/types/onchain/market/adapters/abi/treehouse/iTreehouseRedemptionGateway.d.ts +207 -0
  61. package/dist/types/onchain/market/adapters/abi/treehouse/iTreehouseRouter.d.ts +27 -0
  62. package/dist/types/onchain/market/adapters/abi/treehouse/index.d.ts +4 -0
  63. package/dist/types/onchain/market/adapters/contracts/TreehouseFastlaneAdapterContract.d.ts +156 -0
  64. package/dist/types/onchain/market/adapters/contracts/TreehouseRedemptionGatewayAdapterContract.d.ts +481 -0
  65. package/dist/types/onchain/market/adapters/contracts/TreehouseRouterAdapterContract.d.ts +193 -0
  66. package/dist/types/onchain/market/adapters/contracts/index.d.ts +4 -1
  67. package/dist/types/onchain/market/adapters/index.d.ts +10 -1
  68. package/dist/types/onchain/market/index.d.ts +10 -1
  69. package/dist/types/permissionless/api/index.d.ts +5 -5
  70. package/dist/types/permissionless/api/oracles/PermissionlessOracles.d.ts +30 -6
  71. package/dist/types/permissionless/api/oracles/index.d.ts +5 -5
  72. package/dist/types/permissionless/api/oracles/score/formula.d.ts +14 -17
  73. package/dist/types/permissionless/api/oracles/score/index.d.ts +4 -4
  74. package/dist/types/permissionless/api/oracles/score/run.d.ts +28 -10
  75. package/dist/types/permissionless/api/oracles/score/types.d.ts +33 -28
  76. package/dist/types/permissionless/api/oracles/stress/index.d.ts +2 -2
  77. package/dist/types/permissionless/api/oracles/stress/run.d.ts +11 -0
  78. package/dist/types/permissionless/index.d.ts +5 -5
  79. package/package.json +1 -1
@@ -0,0 +1,60 @@
1
+ import { MissingSerializedParamsError } from "../../../base/errors.js";
2
+ import "../../../base/index.js";
3
+ import { iTreehouseRouterAdapterAbi } from "../abi/adapters/iTreehouseRouterAdapter.js";
4
+ import "../abi/adapters/index.js";
5
+ import { iTreehouseRouterAbi } from "../abi/treehouse/iTreehouseRouter.js";
6
+ import "../abi/treehouse/index.js";
7
+ import { AbstractAdapterContract } from "./AbstractAdapter.js";
8
+ import { decodeAbiParameters } from "viem";
9
+ //#region src/onchain/market/adapters/contracts/TreehouseRouterAdapterContract.ts
10
+ const abi = iTreehouseRouterAdapterAbi;
11
+ const protocolAbi = iTreehouseRouterAbi;
12
+ var TreehouseRouterAdapterContract = class extends AbstractAdapterContract {
13
+ #allowedAssets;
14
+ constructor(sdk, args) {
15
+ super(sdk, {
16
+ ...args,
17
+ abi,
18
+ protocolAbi
19
+ });
20
+ if (args.baseParams.serializedParams) {
21
+ const decoded = decodeAbiParameters([
22
+ {
23
+ type: "address",
24
+ name: "creditManager"
25
+ },
26
+ {
27
+ type: "address",
28
+ name: "targetContract"
29
+ },
30
+ {
31
+ type: "address[]",
32
+ name: "allowedAssets"
33
+ }
34
+ ], args.baseParams.serializedParams);
35
+ this.#allowedAssets = [...decoded[2]];
36
+ }
37
+ }
38
+ get allowedAssets() {
39
+ if (!this.#allowedAssets) throw new MissingSerializedParamsError("allowedAssets");
40
+ return this.#allowedAssets;
41
+ }
42
+ stateHuman(raw) {
43
+ return {
44
+ ...super.stateHuman(raw),
45
+ allowedAssets: this.#allowedAssets?.map((a) => this.labelAddress(a))
46
+ };
47
+ }
48
+ applyBalanceChanges(balances, decoded) {
49
+ switch (decoded.functionName) {
50
+ case "depositDiff": {
51
+ const [token, leftoverAmount] = decoded.args;
52
+ this.setLeftover(balances, token, leftoverAmount);
53
+ break;
54
+ }
55
+ default: super.applyBalanceChanges(balances, decoded);
56
+ }
57
+ }
58
+ };
59
+ //#endregion
60
+ export { TreehouseRouterAdapterContract };
@@ -31,10 +31,13 @@ import { SecuritizeOnRampAdapterContract } from "./SecuritizeOnRampAdapterContra
31
31
  import { SecuritizeRedemptionGatewayAdapterContract } from "./SecuritizeRedemptionGatewayAdapterContract.js";
32
32
  import { StakingRewardsAdapterContract } from "./StakingRewardsAdapterContract.js";
33
33
  import { TraderJoePoolVersion, TraderJoeRouterAdapterContract } from "./TraderJoeRouterAdapterContract.js";
34
+ import { TreehouseFastlaneAdapterContract } from "./TreehouseFastlaneAdapterContract.js";
35
+ import { TreehouseRedemptionGatewayAdapterContract } from "./TreehouseRedemptionGatewayAdapterContract.js";
36
+ import { TreehouseRouterAdapterContract } from "./TreehouseRouterAdapterContract.js";
34
37
  import { UniswapV2AdapterContract } from "./UniswapV2AdapterContract.js";
35
38
  import { UniswapV3AdapterContract } from "./UniswapV3AdapterContract.js";
36
39
  import { UniswapV4AdapterContract } from "./UniswapV4AdapterContract.js";
37
40
  import { UpshiftVaultAdapterContract } from "./UpshiftVaultAdapterContract.js";
38
41
  import { VelodromeV2RouterAdapterContract } from "./VelodromeV2AdapterContract.js";
39
42
  import { WstETHV1AdapterContract } from "./WstETHV1AdapterContract.js";
40
- export { AbstractAdapterContract, AccountMigratorAdapterContract, BalancerV3PoolStatus, BalancerV3RouterAdapterContract, BalancerV3WrapperAdapterContract, CamelotV3AdapterContract, ConvexV1BaseRewardPoolAdapterContract, ConvexV1BoosterAdapterContract, Curve2AssetsAdapterContract, Curve3AssetsAdapterContract, Curve4AssetsAdapterContract, CurveV1AdapterStETHContract, CurveV1StableNGAdapterContract, DaiUsdsAdapterContract, ERC4626AdapterContract, ERC4626ReferralAdapterContract, FluidDexAdapterContract, InfinifiGatewayAdapterContract, InfinifiUnwindingGatewayAdapterContract, KelpLRTDepositPoolAdapterContract, KelpLRTWithdrawalManagerAdapterContract, LidoV1AdapterContract, MellowClaimerAdapterContract, MellowDVVAdapterContract, MellowERC4626VaultAdapterContract, MellowWrapperAdapterContract, MidasGatewayAdapterContract, MidasIssuanceVaultAdapterContract, MidasRedemptionVaultAdapterContract, PendlePairStatus, PendleRouterAdapterContract, PendleTokenType, SecuritizeOnRampAdapterContract, SecuritizeRedemptionGatewayAdapterContract, StakingRewardsAdapterContract, TraderJoePoolVersion, TraderJoeRouterAdapterContract, UniswapV2AdapterContract, UniswapV3AdapterContract, UniswapV4AdapterContract, UpshiftVaultAdapterContract, VelodromeV2RouterAdapterContract, WstETHV1AdapterContract };
43
+ export { AbstractAdapterContract, AccountMigratorAdapterContract, BalancerV3PoolStatus, BalancerV3RouterAdapterContract, BalancerV3WrapperAdapterContract, CamelotV3AdapterContract, ConvexV1BaseRewardPoolAdapterContract, ConvexV1BoosterAdapterContract, Curve2AssetsAdapterContract, Curve3AssetsAdapterContract, Curve4AssetsAdapterContract, CurveV1AdapterStETHContract, CurveV1StableNGAdapterContract, DaiUsdsAdapterContract, ERC4626AdapterContract, ERC4626ReferralAdapterContract, FluidDexAdapterContract, InfinifiGatewayAdapterContract, InfinifiUnwindingGatewayAdapterContract, KelpLRTDepositPoolAdapterContract, KelpLRTWithdrawalManagerAdapterContract, LidoV1AdapterContract, MellowClaimerAdapterContract, MellowDVVAdapterContract, MellowERC4626VaultAdapterContract, MellowWrapperAdapterContract, MidasGatewayAdapterContract, MidasIssuanceVaultAdapterContract, MidasRedemptionVaultAdapterContract, PendlePairStatus, PendleRouterAdapterContract, PendleTokenType, SecuritizeOnRampAdapterContract, SecuritizeRedemptionGatewayAdapterContract, StakingRewardsAdapterContract, TraderJoePoolVersion, TraderJoeRouterAdapterContract, TreehouseFastlaneAdapterContract, TreehouseRedemptionGatewayAdapterContract, TreehouseRouterAdapterContract, UniswapV2AdapterContract, UniswapV3AdapterContract, UniswapV4AdapterContract, UpshiftVaultAdapterContract, VelodromeV2RouterAdapterContract, WstETHV1AdapterContract };
@@ -33,6 +33,9 @@ import { SecuritizeOnRampAdapterContract } from "./contracts/SecuritizeOnRampAda
33
33
  import { SecuritizeRedemptionGatewayAdapterContract } from "./contracts/SecuritizeRedemptionGatewayAdapterContract.js";
34
34
  import { StakingRewardsAdapterContract } from "./contracts/StakingRewardsAdapterContract.js";
35
35
  import { TraderJoeRouterAdapterContract } from "./contracts/TraderJoeRouterAdapterContract.js";
36
+ import { TreehouseFastlaneAdapterContract } from "./contracts/TreehouseFastlaneAdapterContract.js";
37
+ import { TreehouseRedemptionGatewayAdapterContract } from "./contracts/TreehouseRedemptionGatewayAdapterContract.js";
38
+ import { TreehouseRouterAdapterContract } from "./contracts/TreehouseRouterAdapterContract.js";
36
39
  import { UniswapV2AdapterContract } from "./contracts/UniswapV2AdapterContract.js";
37
40
  import { UniswapV3AdapterContract } from "./contracts/UniswapV3AdapterContract.js";
38
41
  import { UniswapV4AdapterContract } from "./contracts/UniswapV4AdapterContract.js";
@@ -80,6 +83,9 @@ function createAdapter(sdk, data, strict) {
80
83
  case "ADAPTER::SECURITIZE_REDEMPTION": return new SecuritizeRedemptionGatewayAdapterContract(sdk, data);
81
84
  case "ADAPTER::STAKING_REWARDS": return new StakingRewardsAdapterContract(sdk, data);
82
85
  case "ADAPTER::TRADERJOE_ROUTER": return new TraderJoeRouterAdapterContract(sdk, data);
86
+ case "ADAPTER::TREEHOUSE_FASTLANE": return new TreehouseFastlaneAdapterContract(sdk, data);
87
+ case "ADAPTER::TREEHOUSE_GATEWAY": return new TreehouseRedemptionGatewayAdapterContract(sdk, data);
88
+ case "ADAPTER::TREEHOUSE_ROUTER": return new TreehouseRouterAdapterContract(sdk, data);
83
89
  case "ADAPTER::UNISWAP_V2_ROUTER": return new UniswapV2AdapterContract(sdk, data);
84
90
  case "ADAPTER::UNISWAP_V3_ROUTER": return new UniswapV3AdapterContract(sdk, data);
85
91
  case "ADAPTER::UNISWAP_V4_GATEWAY": return new UniswapV4AdapterContract(sdk, data);
@@ -28,6 +28,9 @@ import { iSecuritizeOnRampAdapterV310Abi } from "./abi/adapters/iSecuritizeOnRam
28
28
  import { iSecuritizeRedemptionGatewayAdapterV311Abi } from "./abi/adapters/iSecuritizeRedemptionGatewayAdapterV311.js";
29
29
  import { iStakingRewardsAdapterAbi } from "./abi/adapters/iStakingRewardsAdapter.js";
30
30
  import { iTraderJoeRouterAdapterAbi } from "./abi/adapters/iTraderJoeRouterAdapter.js";
31
+ import { iTreehouseFastlaneAdapterAbi } from "./abi/adapters/iTreehouseFastlaneAdapter.js";
32
+ import { iTreehouseRedemptionGatewayAdapterAbi } from "./abi/adapters/iTreehouseRedemptionGatewayAdapter.js";
33
+ import { iTreehouseRouterAdapterAbi } from "./abi/adapters/iTreehouseRouterAdapter.js";
31
34
  import { iUniswapV2AdapterAbi } from "./abi/adapters/iUniswapV2Adapter.js";
32
35
  import { iUniswapV3AdapterAbi } from "./abi/adapters/iUniswapV3Adapter.js";
33
36
  import { iUniswapV4AdapterAbi, iUniswapV4GatewayAbi } from "./abi/adapters/iUniswapV4Adapter.js";
@@ -41,6 +44,9 @@ import { iBaseOnRampAbi } from "./abi/securitize/iBaseOnRamp.js";
41
44
  import { iSecuritizeOnRampAbi } from "./abi/securitize/iSecuritizeOnRamp.js";
42
45
  import { iSecuritizeRedemptionGatewayV311Abi } from "./abi/securitize/iSecuritizeRedemptionGatewayV311.js";
43
46
  import { iBalancerV3RouterAbi, iBalancerV3WrapperAbi, iBaseRewardPoolAbi, iBoosterAbi, iCamelotV3RouterAbi, iCurvePoolAbi, iCurvePoolStableNGAbi, iCurvePool_2Abi, iCurvePool_3Abi, iCurvePool_4Abi, iDaiUsdsAbi, iERC4626Abi, iERC4626ReferralAbi, iFluidDexAbi, iInfinifiGatewayAbi, iKelpLRTDepositPoolGatewayAbi, iKelpLRTWithdrawalManagerGatewayAbi, iMellowClaimerAbi, iMellowWrapperAbi, iMidasIssuanceVaultV310Abi, iPendleRouterAbi, iStakingRewardsAbi, iTraderJoeRouterAbi, iUniswapV2Router02Abi, iUniswapV3Abi, iVelodromeV2RouterAbi, iwstETHAbi, lidoV1_WETHGatewayAbi } from "./abi/targetContractAbi.js";
47
+ import { iTreehouseFastlaneAbi } from "./abi/treehouse/iTreehouseFastlane.js";
48
+ import { iTreehouseRedemptionGatewayAbi } from "./abi/treehouse/iTreehouseRedemptionGateway.js";
49
+ import { iTreehouseRouterAbi } from "./abi/treehouse/iTreehouseRouter.js";
44
50
  import { getAdapterActionAbi, getAdapterDeployParamsAbi, getAdapterType, hasAdapterDeployParamsAbi, parseAdapterAction, parseAdapterDeployParams } from "./abi/utils.js";
45
51
  import "./abi/index.js";
46
52
  import { allTransfersAsTokenAmounts, classifyCurveOperation, curveAddLiquidityFromTransfers, curveRemoveLiquidityFromTransfers, fnSigToName, parsePosNegAmount, rewardsFromTransfers, swapFromTransfers, toNetTransfers } from "./transferHelpers.js";
@@ -77,6 +83,9 @@ import { SecuritizeOnRampAdapterContract } from "./contracts/SecuritizeOnRampAda
77
83
  import { SecuritizeRedemptionGatewayAdapterContract } from "./contracts/SecuritizeRedemptionGatewayAdapterContract.js";
78
84
  import { StakingRewardsAdapterContract } from "./contracts/StakingRewardsAdapterContract.js";
79
85
  import { TraderJoePoolVersion, TraderJoeRouterAdapterContract } from "./contracts/TraderJoeRouterAdapterContract.js";
86
+ import { TreehouseFastlaneAdapterContract } from "./contracts/TreehouseFastlaneAdapterContract.js";
87
+ import { TreehouseRedemptionGatewayAdapterContract } from "./contracts/TreehouseRedemptionGatewayAdapterContract.js";
88
+ import { TreehouseRouterAdapterContract } from "./contracts/TreehouseRouterAdapterContract.js";
80
89
  import { UniswapV2AdapterContract } from "./contracts/UniswapV2AdapterContract.js";
81
90
  import { UniswapV3AdapterContract } from "./contracts/UniswapV3AdapterContract.js";
82
91
  import { UniswapV4AdapterContract } from "./contracts/UniswapV4AdapterContract.js";
@@ -87,4 +96,4 @@ import "./contracts/index.js";
87
96
  import { createAdapter } from "./createAdapter.js";
88
97
  import "./legacyAdapterOperations.js";
89
98
  import "./transfers.js";
90
- export { AbstractAdapterContract, AccountMigratorAdapterContract, AdapterType, BalancerV3PoolStatus, BalancerV3RouterAdapterContract, BalancerV3WrapperAdapterContract, CamelotV3AdapterContract, ConvexV1BaseRewardPoolAdapterContract, ConvexV1BoosterAdapterContract, Curve2AssetsAdapterContract, Curve3AssetsAdapterContract, Curve4AssetsAdapterContract, CurveV1AdapterStETHContract, CurveV1StableNGAdapterContract, DaiUsdsAdapterContract, ERC4626AdapterContract, ERC4626ReferralAdapterContract, FluidDexAdapterContract, InfinifiGatewayAdapterContract, InfinifiUnwindingGatewayAdapterContract, KelpLRTDepositPoolAdapterContract, KelpLRTWithdrawalManagerAdapterContract, LidoV1AdapterContract, MellowClaimerAdapterContract, MellowDVVAdapterContract, MellowERC4626VaultAdapterContract, MellowWrapperAdapterContract, MidasGatewayAdapterContract, MidasIssuanceVaultAdapterContract, MidasRedemptionVaultAdapterContract, PendlePairStatus, PendleRouterAdapterContract, PendleTokenType, SecuritizeOnRampAdapterContract, SecuritizeRedemptionGatewayAdapterContract, StakingRewardsAdapterContract, TraderJoePoolVersion, TraderJoeRouterAdapterContract, UniswapV2AdapterContract, UniswapV3AdapterContract, UniswapV4AdapterContract, UpshiftVaultAdapterContract, VelodromeV2RouterAdapterContract, WstETHV1AdapterContract, adapterActionAbi, adapterActionSelectors, adapterActionSignatures, adapterConstructorAbi, allTransfersAsTokenAmounts, classifyCurveOperation, createAdapter, curveAddLiquidityFromTransfers, curveRemoveLiquidityFromTransfers, erc4626ReferralAdapterAbi, fnSigToName, getAdapterActionAbi, getAdapterDeployParamsAbi, getAdapterType, hasAdapterDeployParamsAbi, iBalancerV3RouterAbi, iBalancerV3RouterAdapterAbi, iBalancerV3WrapperAbi, iBalancerV3WrapperAdapterAbi, iBaseOnRampAbi, iBaseRewardPoolAbi, iBoosterAbi, iCamelotV3AdapterAbi, iCamelotV3RouterAbi, iConvexV1BaseRewardPoolAdapterAbi, iConvexV1BoosterAdapterAbi, iCurvePoolAbi, iCurvePoolStableNGAbi, iCurvePool_2Abi, iCurvePool_3Abi, iCurvePool_4Abi, iCurveV1StableNgAdapterAbi, iCurveV1_2AssetsAdapterAbi, iCurveV1_3AssetsAdapterAbi, iCurveV1_4AssetsAdapterAbi, iDaiUsdsAbi, iDaiUsdsAdapterAbi, iERC4626Abi, iERC4626ReferralAbi, iFluidDexAbi, iFluidDexAdapterAbi, iInfinifiGatewayAbi, iInfinifiGatewayAdapterAbi, iInfinifiUnwindingGatewayAbi, iInfinifiUnwindingGatewayAdapterAbi, iKelpLRTDepositPoolGatewayAbi, iKelpLRTWithdrawalManagerGatewayAbi, iKelpLrtDepositPoolAdapterAbi, iKelpLrtDepositPoolGatewayAbi, iKelpLrtWithdrawalManagerAdapterAbi, iKelpLrtWithdrawalManagerGatewayAbi, iLidoV1AdapterAbi, iMellow4626VaultAdapterAbi, iMellowClaimerAbi, iMellowClaimerAdapterAbi, iMellowWrapperAbi, iMellowWrapperAdapterAbi, iMidasGatewayAdapterV311Abi, iMidasGatewayV311Abi, iMidasIssuanceVaultAdapterV310Abi, iMidasIssuanceVaultV310Abi, iMidasRedemptionVaultAdapterV310Abi, iMidasRedemptionVaultGatewayV310Abi, iPendleRouterAbi, iPendleRouterAdapterAbi, iSecuritizeOnRampAbi, iSecuritizeOnRampAdapterV310Abi, iSecuritizeRedemptionGatewayAdapterV311Abi, iSecuritizeRedemptionGatewayV311Abi, iStakingRewardsAbi, iStakingRewardsAdapterAbi, iTraderJoeRouterAbi, iTraderJoeRouterAdapterAbi, iUniswapV2AdapterAbi, iUniswapV2Router02Abi, iUniswapV3Abi, iUniswapV3AdapterAbi, iUniswapV4AdapterAbi, iUniswapV4GatewayAbi, iUpshiftVaultAdapterAbi, iUpshiftVaultGatewayAbi, iVelodromeV2RouterAbi, iVelodromeV2RouterAdapterAbi, iwstETHAbi, iwstEthv1AdapterAbi, lidoV1_WETHGatewayAbi, mellowDvvAdapterAbi, parseAdapterAction, parseAdapterDeployParams, parsePosNegAmount, rewardsFromTransfers, swapFromTransfers, toNetTransfers };
99
+ export { AbstractAdapterContract, AccountMigratorAdapterContract, AdapterType, BalancerV3PoolStatus, BalancerV3RouterAdapterContract, BalancerV3WrapperAdapterContract, CamelotV3AdapterContract, ConvexV1BaseRewardPoolAdapterContract, ConvexV1BoosterAdapterContract, Curve2AssetsAdapterContract, Curve3AssetsAdapterContract, Curve4AssetsAdapterContract, CurveV1AdapterStETHContract, CurveV1StableNGAdapterContract, DaiUsdsAdapterContract, ERC4626AdapterContract, ERC4626ReferralAdapterContract, FluidDexAdapterContract, InfinifiGatewayAdapterContract, InfinifiUnwindingGatewayAdapterContract, KelpLRTDepositPoolAdapterContract, KelpLRTWithdrawalManagerAdapterContract, LidoV1AdapterContract, MellowClaimerAdapterContract, MellowDVVAdapterContract, MellowERC4626VaultAdapterContract, MellowWrapperAdapterContract, MidasGatewayAdapterContract, MidasIssuanceVaultAdapterContract, MidasRedemptionVaultAdapterContract, PendlePairStatus, PendleRouterAdapterContract, PendleTokenType, SecuritizeOnRampAdapterContract, SecuritizeRedemptionGatewayAdapterContract, StakingRewardsAdapterContract, TraderJoePoolVersion, TraderJoeRouterAdapterContract, TreehouseFastlaneAdapterContract, TreehouseRedemptionGatewayAdapterContract, TreehouseRouterAdapterContract, UniswapV2AdapterContract, UniswapV3AdapterContract, UniswapV4AdapterContract, UpshiftVaultAdapterContract, VelodromeV2RouterAdapterContract, WstETHV1AdapterContract, adapterActionAbi, adapterActionSelectors, adapterActionSignatures, adapterConstructorAbi, allTransfersAsTokenAmounts, classifyCurveOperation, createAdapter, curveAddLiquidityFromTransfers, curveRemoveLiquidityFromTransfers, erc4626ReferralAdapterAbi, fnSigToName, getAdapterActionAbi, getAdapterDeployParamsAbi, getAdapterType, hasAdapterDeployParamsAbi, iBalancerV3RouterAbi, iBalancerV3RouterAdapterAbi, iBalancerV3WrapperAbi, iBalancerV3WrapperAdapterAbi, iBaseOnRampAbi, iBaseRewardPoolAbi, iBoosterAbi, iCamelotV3AdapterAbi, iCamelotV3RouterAbi, iConvexV1BaseRewardPoolAdapterAbi, iConvexV1BoosterAdapterAbi, iCurvePoolAbi, iCurvePoolStableNGAbi, iCurvePool_2Abi, iCurvePool_3Abi, iCurvePool_4Abi, iCurveV1StableNgAdapterAbi, iCurveV1_2AssetsAdapterAbi, iCurveV1_3AssetsAdapterAbi, iCurveV1_4AssetsAdapterAbi, iDaiUsdsAbi, iDaiUsdsAdapterAbi, iERC4626Abi, iERC4626ReferralAbi, iFluidDexAbi, iFluidDexAdapterAbi, iInfinifiGatewayAbi, iInfinifiGatewayAdapterAbi, iInfinifiUnwindingGatewayAbi, iInfinifiUnwindingGatewayAdapterAbi, iKelpLRTDepositPoolGatewayAbi, iKelpLRTWithdrawalManagerGatewayAbi, iKelpLrtDepositPoolAdapterAbi, iKelpLrtDepositPoolGatewayAbi, iKelpLrtWithdrawalManagerAdapterAbi, iKelpLrtWithdrawalManagerGatewayAbi, iLidoV1AdapterAbi, iMellow4626VaultAdapterAbi, iMellowClaimerAbi, iMellowClaimerAdapterAbi, iMellowWrapperAbi, iMellowWrapperAdapterAbi, iMidasGatewayAdapterV311Abi, iMidasGatewayV311Abi, iMidasIssuanceVaultAdapterV310Abi, iMidasIssuanceVaultV310Abi, iMidasRedemptionVaultAdapterV310Abi, iMidasRedemptionVaultGatewayV310Abi, iPendleRouterAbi, iPendleRouterAdapterAbi, iSecuritizeOnRampAbi, iSecuritizeOnRampAdapterV310Abi, iSecuritizeRedemptionGatewayAdapterV311Abi, iSecuritizeRedemptionGatewayV311Abi, iStakingRewardsAbi, iStakingRewardsAdapterAbi, iTraderJoeRouterAbi, iTraderJoeRouterAdapterAbi, iTreehouseFastlaneAbi, iTreehouseFastlaneAdapterAbi, iTreehouseRedemptionGatewayAbi, iTreehouseRedemptionGatewayAdapterAbi, iTreehouseRouterAbi, iTreehouseRouterAdapterAbi, iUniswapV2AdapterAbi, iUniswapV2Router02Abi, iUniswapV3Abi, iUniswapV3AdapterAbi, iUniswapV4AdapterAbi, iUniswapV4GatewayAbi, iUpshiftVaultAdapterAbi, iUpshiftVaultGatewayAbi, iVelodromeV2RouterAbi, iVelodromeV2RouterAdapterAbi, iwstETHAbi, iwstEthv1AdapterAbi, lidoV1_WETHGatewayAbi, mellowDvvAdapterAbi, parseAdapterAction, parseAdapterDeployParams, parsePosNegAmount, rewardsFromTransfers, swapFromTransfers, toNetTransfers };
@@ -28,6 +28,9 @@ import { iSecuritizeOnRampAdapterV310Abi } from "./adapters/abi/adapters/iSecuri
28
28
  import { iSecuritizeRedemptionGatewayAdapterV311Abi } from "./adapters/abi/adapters/iSecuritizeRedemptionGatewayAdapterV311.js";
29
29
  import { iStakingRewardsAdapterAbi } from "./adapters/abi/adapters/iStakingRewardsAdapter.js";
30
30
  import { iTraderJoeRouterAdapterAbi } from "./adapters/abi/adapters/iTraderJoeRouterAdapter.js";
31
+ import { iTreehouseFastlaneAdapterAbi } from "./adapters/abi/adapters/iTreehouseFastlaneAdapter.js";
32
+ import { iTreehouseRedemptionGatewayAdapterAbi } from "./adapters/abi/adapters/iTreehouseRedemptionGatewayAdapter.js";
33
+ import { iTreehouseRouterAdapterAbi } from "./adapters/abi/adapters/iTreehouseRouterAdapter.js";
31
34
  import { iUniswapV2AdapterAbi } from "./adapters/abi/adapters/iUniswapV2Adapter.js";
32
35
  import { iUniswapV3AdapterAbi } from "./adapters/abi/adapters/iUniswapV3Adapter.js";
33
36
  import { iUniswapV4AdapterAbi, iUniswapV4GatewayAbi } from "./adapters/abi/adapters/iUniswapV4Adapter.js";
@@ -41,6 +44,9 @@ import { iBaseOnRampAbi } from "./adapters/abi/securitize/iBaseOnRamp.js";
41
44
  import { iSecuritizeOnRampAbi } from "./adapters/abi/securitize/iSecuritizeOnRamp.js";
42
45
  import { iSecuritizeRedemptionGatewayV311Abi } from "./adapters/abi/securitize/iSecuritizeRedemptionGatewayV311.js";
43
46
  import { iBalancerV3RouterAbi, iBalancerV3WrapperAbi, iBaseRewardPoolAbi, iBoosterAbi, iCamelotV3RouterAbi, iCurvePoolAbi, iCurvePoolStableNGAbi, iCurvePool_2Abi, iCurvePool_3Abi, iCurvePool_4Abi, iDaiUsdsAbi, iERC4626Abi, iERC4626ReferralAbi, iFluidDexAbi, iInfinifiGatewayAbi, iKelpLRTDepositPoolGatewayAbi, iKelpLRTWithdrawalManagerGatewayAbi, iMellowClaimerAbi, iMellowWrapperAbi, iMidasIssuanceVaultV310Abi, iPendleRouterAbi, iStakingRewardsAbi, iTraderJoeRouterAbi, iUniswapV2Router02Abi, iUniswapV3Abi, iVelodromeV2RouterAbi, iwstETHAbi, lidoV1_WETHGatewayAbi } from "./adapters/abi/targetContractAbi.js";
47
+ import { iTreehouseFastlaneAbi } from "./adapters/abi/treehouse/iTreehouseFastlane.js";
48
+ import { iTreehouseRedemptionGatewayAbi } from "./adapters/abi/treehouse/iTreehouseRedemptionGateway.js";
49
+ import { iTreehouseRouterAbi } from "./adapters/abi/treehouse/iTreehouseRouter.js";
44
50
  import { getAdapterActionAbi, getAdapterDeployParamsAbi, getAdapterType, hasAdapterDeployParamsAbi, parseAdapterAction, parseAdapterDeployParams } from "./adapters/abi/utils.js";
45
51
  import { allTransfersAsTokenAmounts, classifyCurveOperation, curveAddLiquidityFromTransfers, curveRemoveLiquidityFromTransfers, fnSigToName, parsePosNegAmount, rewardsFromTransfers, swapFromTransfers, toNetTransfers } from "./adapters/transferHelpers.js";
46
52
  import { AbstractAdapterContract } from "./adapters/contracts/AbstractAdapter.js";
@@ -76,6 +82,9 @@ import { SecuritizeOnRampAdapterContract } from "./adapters/contracts/Securitize
76
82
  import { SecuritizeRedemptionGatewayAdapterContract } from "./adapters/contracts/SecuritizeRedemptionGatewayAdapterContract.js";
77
83
  import { StakingRewardsAdapterContract } from "./adapters/contracts/StakingRewardsAdapterContract.js";
78
84
  import { TraderJoePoolVersion, TraderJoeRouterAdapterContract } from "./adapters/contracts/TraderJoeRouterAdapterContract.js";
85
+ import { TreehouseFastlaneAdapterContract } from "./adapters/contracts/TreehouseFastlaneAdapterContract.js";
86
+ import { TreehouseRedemptionGatewayAdapterContract } from "./adapters/contracts/TreehouseRedemptionGatewayAdapterContract.js";
87
+ import { TreehouseRouterAdapterContract } from "./adapters/contracts/TreehouseRouterAdapterContract.js";
79
88
  import { UniswapV2AdapterContract } from "./adapters/contracts/UniswapV2AdapterContract.js";
80
89
  import { UniswapV3AdapterContract } from "./adapters/contracts/UniswapV3AdapterContract.js";
81
90
  import { UniswapV4AdapterContract } from "./adapters/contracts/UniswapV4AdapterContract.js";
@@ -149,4 +158,4 @@ import { RWARegistry, RWA_COMPRESSOR_ADDRESS } from "./rwa/RWARegistry.js";
149
158
  import { isRWAFactory } from "./rwa/types.js";
150
159
  import "./rwa/index.js";
151
160
  import "./types.js";
152
- export { AbstractAdapterContract, AbstractLPPriceFeedContract, AbstractPriceFeedContract, AccountMigratorAdapterContract, AdapterType, BalancerStablePriceFeedContract, BalancerV3PoolStatus, BalancerV3RouterAdapterContract, BalancerV3WrapperAdapterContract, BalancerWeightedPriceFeedContract, BoundedPriceFeedContract, CamelotV3AdapterContract, CompositePriceFeedContract, ConstantPriceFeedContract, ConvexV1BaseRewardPoolAdapterContract, ConvexV1BoosterAdapterContract, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CreditSuiteStrategy, Curve2AssetsAdapterContract, Curve3AssetsAdapterContract, Curve4AssetsAdapterContract, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, CurveV1AdapterStETHContract, CurveV1StableNGAdapterContract, DEFAULT_QUOTA_BUFFER_BPS, DEGEN_NFT_MIDAS, DEGEN_NFT_SECURITIZE, DaiUsdsAdapterContract, ERC4626AdapterContract, ERC4626ReferralAdapterContract, Erc4626PriceFeedContract, ExternalPriceFeedContract, FluidDexAdapterContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, InfinifiGatewayAdapterContract, InfinifiUnwindingGatewayAdapterContract, KelpLRTDepositPoolAdapterContract, KelpLRTWithdrawalManagerAdapterContract, LidoV1AdapterContract, LinearInterestRateModelContract, MAX_LEVERAGE_BUFFER_BPS, MarketRegister, MarketSuite, MellowClaimerAdapterContract, MellowDVVAdapterContract, MellowERC4626VaultAdapterContract, MellowLRTPriceFeedContract, MellowWrapperAdapterContract, MidasDegenNFT, MidasGatewayAdapterContract, MidasIssuanceVaultAdapterContract, MidasLiquidatorContract, MidasRedemptionVaultAdapterContract, PARTIAL_LIQUIDATION_BUFFER_BPS, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PartialPriceFeedInitError, PendlePairStatus, PendleRouterAdapterContract, PendleTWAPPTPriceFeed, PendleTokenType, PoolSuite, PoolV310Contract, PriceFeedRef, PriceFeedRegistry, PriceOracleV310Contract, PriceUpdatesCache, PythPriceFeed, RWARegistry, RWA_COMPRESSOR_ADDRESS, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RedstonePriceFeedContract, SecuritizeDegenNFT, SecuritizeLiquidatorContract, SecuritizeOnRampAdapterContract, SecuritizeRWAFactory, SecuritizeRedemptionGatewayAdapterContract, StakingRewardsAdapterContract, TraderJoePoolVersion, TraderJoeRouterAdapterContract, UniswapV2AdapterContract, UniswapV3AdapterContract, UniswapV4AdapterContract, UpdatablePriceFeedRegistry, UpshiftVaultAdapterContract, VelodromeV2RouterAdapterContract, WstETHPriceFeedContract, WstETHV1AdapterContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, adapterActionAbi, adapterActionSelectors, adapterActionSignatures, adapterConstructorAbi, allTransfersAsTokenAmounts, bpsToRay, calcBorrowApy, calcEffectiveBorrowApy, calcMaxLeverage, calcNetStrategyApy, calcPositionLeverage, calcQuotaRate, calcUtilization, calcUtilizationRaw, classifyCurveOperation, collateralPriceInUnderlying, createAdapter, createPriceOracle, createZapper, abi as creditFacadeV310Abi, curveAddLiquidityFromTransfers, curveRemoveLiquidityFromTransfers, dominantCollateral, erc4626ReferralAdapterAbi, expectedBalanceDeltas, fnSigToName, getAdapterActionAbi, getAdapterDeployParamsAbi, getAdapterType, getRawPriceUpdates, hasAdapterDeployParamsAbi, healthFactorBps, iBalancerV3RouterAbi, iBalancerV3RouterAdapterAbi, iBalancerV3WrapperAbi, iBalancerV3WrapperAdapterAbi, iBaseOnRampAbi, iBaseRewardPoolAbi, iBoosterAbi, iCamelotV3AdapterAbi, iCamelotV3RouterAbi, iConvexV1BaseRewardPoolAdapterAbi, iConvexV1BoosterAdapterAbi, iCurvePoolAbi, iCurvePoolStableNGAbi, iCurvePool_2Abi, iCurvePool_3Abi, iCurvePool_4Abi, iCurveV1StableNgAdapterAbi, iCurveV1_2AssetsAdapterAbi, iCurveV1_3AssetsAdapterAbi, iCurveV1_4AssetsAdapterAbi, iDaiUsdsAbi, iDaiUsdsAdapterAbi, iERC4626Abi, iERC4626ReferralAbi, iFluidDexAbi, iFluidDexAdapterAbi, iInfinifiGatewayAbi, iInfinifiGatewayAdapterAbi, iInfinifiUnwindingGatewayAbi, iInfinifiUnwindingGatewayAdapterAbi, iKelpLRTDepositPoolGatewayAbi, iKelpLRTWithdrawalManagerGatewayAbi, iKelpLrtDepositPoolAdapterAbi, iKelpLrtDepositPoolGatewayAbi, iKelpLrtWithdrawalManagerAdapterAbi, iKelpLrtWithdrawalManagerGatewayAbi, iLidoV1AdapterAbi, iMellow4626VaultAdapterAbi, iMellowClaimerAbi, iMellowClaimerAdapterAbi, iMellowWrapperAbi, iMellowWrapperAdapterAbi, iMidasGatewayAdapterV311Abi, iMidasGatewayV311Abi, iMidasIssuanceVaultAdapterV310Abi, iMidasIssuanceVaultV310Abi, iMidasRedemptionVaultAdapterV310Abi, iMidasRedemptionVaultGatewayV310Abi, iPendleRouterAbi, iPendleRouterAdapterAbi, iSecuritizeOnRampAbi, iSecuritizeOnRampAdapterV310Abi, iSecuritizeRedemptionGatewayAdapterV311Abi, iSecuritizeRedemptionGatewayV311Abi, iStakingRewardsAbi, iStakingRewardsAdapterAbi, iTraderJoeRouterAbi, iTraderJoeRouterAdapterAbi, iUniswapV2AdapterAbi, iUniswapV2Router02Abi, iUniswapV3Abi, iUniswapV3AdapterAbi, iUniswapV4AdapterAbi, iUniswapV4GatewayAbi, iUpshiftVaultAdapterAbi, iUpshiftVaultGatewayAbi, iVelodromeV2RouterAbi, iVelodromeV2RouterAdapterAbi, isLPPriceFeed, isRWAFactory, isStrategyCollateral, isUpdatablePriceFeed, iwstETHAbi, iwstEthv1AdapterAbi, lidoV1_WETHGatewayAbi, mellowDvvAdapterAbi, minSeizedAmount, optimalHFForPartialLiquidation, optimalPartialLiquidationAmounts, parseAdapterAction, parseAdapterDeployParams, parsePosNegAmount, pickStrategyTargetCollateral, rayToBps, rewardsFromTransfers, strategyName, swapFromTransfers, toNetTransfers, updatableDependencies, usdToNumber };
161
+ export { AbstractAdapterContract, AbstractLPPriceFeedContract, AbstractPriceFeedContract, AccountMigratorAdapterContract, AdapterType, BalancerStablePriceFeedContract, BalancerV3PoolStatus, BalancerV3RouterAdapterContract, BalancerV3WrapperAdapterContract, BalancerWeightedPriceFeedContract, BoundedPriceFeedContract, CamelotV3AdapterContract, CompositePriceFeedContract, ConstantPriceFeedContract, ConvexV1BaseRewardPoolAdapterContract, ConvexV1BoosterAdapterContract, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CreditSuiteStrategy, Curve2AssetsAdapterContract, Curve3AssetsAdapterContract, Curve4AssetsAdapterContract, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, CurveV1AdapterStETHContract, CurveV1StableNGAdapterContract, DEFAULT_QUOTA_BUFFER_BPS, DEGEN_NFT_MIDAS, DEGEN_NFT_SECURITIZE, DaiUsdsAdapterContract, ERC4626AdapterContract, ERC4626ReferralAdapterContract, Erc4626PriceFeedContract, ExternalPriceFeedContract, FluidDexAdapterContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, InfinifiGatewayAdapterContract, InfinifiUnwindingGatewayAdapterContract, KelpLRTDepositPoolAdapterContract, KelpLRTWithdrawalManagerAdapterContract, LidoV1AdapterContract, LinearInterestRateModelContract, MAX_LEVERAGE_BUFFER_BPS, MarketRegister, MarketSuite, MellowClaimerAdapterContract, MellowDVVAdapterContract, MellowERC4626VaultAdapterContract, MellowLRTPriceFeedContract, MellowWrapperAdapterContract, MidasDegenNFT, MidasGatewayAdapterContract, MidasIssuanceVaultAdapterContract, MidasLiquidatorContract, MidasRedemptionVaultAdapterContract, PARTIAL_LIQUIDATION_BUFFER_BPS, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PartialPriceFeedInitError, PendlePairStatus, PendleRouterAdapterContract, PendleTWAPPTPriceFeed, PendleTokenType, PoolSuite, PoolV310Contract, PriceFeedRef, PriceFeedRegistry, PriceOracleV310Contract, PriceUpdatesCache, PythPriceFeed, RWARegistry, RWA_COMPRESSOR_ADDRESS, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RedstonePriceFeedContract, SecuritizeDegenNFT, SecuritizeLiquidatorContract, SecuritizeOnRampAdapterContract, SecuritizeRWAFactory, SecuritizeRedemptionGatewayAdapterContract, StakingRewardsAdapterContract, TraderJoePoolVersion, TraderJoeRouterAdapterContract, TreehouseFastlaneAdapterContract, TreehouseRedemptionGatewayAdapterContract, TreehouseRouterAdapterContract, UniswapV2AdapterContract, UniswapV3AdapterContract, UniswapV4AdapterContract, UpdatablePriceFeedRegistry, UpshiftVaultAdapterContract, VelodromeV2RouterAdapterContract, WstETHPriceFeedContract, WstETHV1AdapterContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, adapterActionAbi, adapterActionSelectors, adapterActionSignatures, adapterConstructorAbi, allTransfersAsTokenAmounts, bpsToRay, calcBorrowApy, calcEffectiveBorrowApy, calcMaxLeverage, calcNetStrategyApy, calcPositionLeverage, calcQuotaRate, calcUtilization, calcUtilizationRaw, classifyCurveOperation, collateralPriceInUnderlying, createAdapter, createPriceOracle, createZapper, abi as creditFacadeV310Abi, curveAddLiquidityFromTransfers, curveRemoveLiquidityFromTransfers, dominantCollateral, erc4626ReferralAdapterAbi, expectedBalanceDeltas, fnSigToName, getAdapterActionAbi, getAdapterDeployParamsAbi, getAdapterType, getRawPriceUpdates, hasAdapterDeployParamsAbi, healthFactorBps, iBalancerV3RouterAbi, iBalancerV3RouterAdapterAbi, iBalancerV3WrapperAbi, iBalancerV3WrapperAdapterAbi, iBaseOnRampAbi, iBaseRewardPoolAbi, iBoosterAbi, iCamelotV3AdapterAbi, iCamelotV3RouterAbi, iConvexV1BaseRewardPoolAdapterAbi, iConvexV1BoosterAdapterAbi, iCurvePoolAbi, iCurvePoolStableNGAbi, iCurvePool_2Abi, iCurvePool_3Abi, iCurvePool_4Abi, iCurveV1StableNgAdapterAbi, iCurveV1_2AssetsAdapterAbi, iCurveV1_3AssetsAdapterAbi, iCurveV1_4AssetsAdapterAbi, iDaiUsdsAbi, iDaiUsdsAdapterAbi, iERC4626Abi, iERC4626ReferralAbi, iFluidDexAbi, iFluidDexAdapterAbi, iInfinifiGatewayAbi, iInfinifiGatewayAdapterAbi, iInfinifiUnwindingGatewayAbi, iInfinifiUnwindingGatewayAdapterAbi, iKelpLRTDepositPoolGatewayAbi, iKelpLRTWithdrawalManagerGatewayAbi, iKelpLrtDepositPoolAdapterAbi, iKelpLrtDepositPoolGatewayAbi, iKelpLrtWithdrawalManagerAdapterAbi, iKelpLrtWithdrawalManagerGatewayAbi, iLidoV1AdapterAbi, iMellow4626VaultAdapterAbi, iMellowClaimerAbi, iMellowClaimerAdapterAbi, iMellowWrapperAbi, iMellowWrapperAdapterAbi, iMidasGatewayAdapterV311Abi, iMidasGatewayV311Abi, iMidasIssuanceVaultAdapterV310Abi, iMidasIssuanceVaultV310Abi, iMidasRedemptionVaultAdapterV310Abi, iMidasRedemptionVaultGatewayV310Abi, iPendleRouterAbi, iPendleRouterAdapterAbi, iSecuritizeOnRampAbi, iSecuritizeOnRampAdapterV310Abi, iSecuritizeRedemptionGatewayAdapterV311Abi, iSecuritizeRedemptionGatewayV311Abi, iStakingRewardsAbi, iStakingRewardsAdapterAbi, iTraderJoeRouterAbi, iTraderJoeRouterAdapterAbi, iTreehouseFastlaneAbi, iTreehouseFastlaneAdapterAbi, iTreehouseRedemptionGatewayAbi, iTreehouseRedemptionGatewayAdapterAbi, iTreehouseRouterAbi, iTreehouseRouterAdapterAbi, iUniswapV2AdapterAbi, iUniswapV2Router02Abi, iUniswapV3Abi, iUniswapV3AdapterAbi, iUniswapV4AdapterAbi, iUniswapV4GatewayAbi, iUpshiftVaultAdapterAbi, iUpshiftVaultGatewayAbi, iVelodromeV2RouterAbi, iVelodromeV2RouterAdapterAbi, isLPPriceFeed, isRWAFactory, isStrategyCollateral, isUpdatablePriceFeed, iwstETHAbi, iwstEthv1AdapterAbi, lidoV1_WETHGatewayAbi, mellowDvvAdapterAbi, minSeizedAmount, optimalHFForPartialLiquidation, optimalPartialLiquidationAmounts, parseAdapterAction, parseAdapterDeployParams, parsePosNegAmount, pickStrategyTargetCollateral, rayToBps, rewardsFromTransfers, strategyName, swapFromTransfers, toNetTransfers, updatableDependencies, usdToNumber };
@@ -9,13 +9,13 @@ import "./deploy/index.js";
9
9
  import { classifySources, sourcesByFeed } from "./oracles/stress/classify.js";
10
10
  import { UNBOUNDED_DOWN, UNBOUNDED_UP, groupOverride, perturb, rateStub, roundDataStub } from "./oracles/stress/override.js";
11
11
  import { scoreGroup, slotHarm, verdictOf } from "./oracles/stress/score.js";
12
- import { DEFAULT_SCENARIOS, RATE_FEED_TYPE, readForest, readRateTargets, readUnder, runStressTest } from "./oracles/stress/run.js";
13
- import { REVERT_SCORE, SCORE_MULTIPLIER, factorOf, finalPrice, scoreOfFactor, worstOf } from "./oracles/score/formula.js";
14
- import { runAssetScores } from "./oracles/score/run.js";
12
+ import { DEFAULT_SCENARIOS, RATE_FEED_TYPE, readFeedTrees, readForest, readRateTargets, readUnder, runStressTest } from "./oracles/stress/run.js";
13
+ import { SCORE_MULTIPLIER, factorOf, finalPrice, scoreOfFactor, worstOf } from "./oracles/score/formula.js";
14
+ import { runAssetScores, runFeedPairScore } from "./oracles/score/run.js";
15
15
  import { GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, PermissionlessOracles } from "./oracles/PermissionlessOracles.js";
16
16
  import { InstanceOwnerTransactions } from "./transactions/InstanceOwnerTransactions.js";
17
17
  import { GearboxPermissionless } from "./GearboxPermissionless.js";
18
18
  import "./oracles/index.js";
19
19
  import "./transactions/index.js";
20
20
  import "./types.js";
21
- export { ChainsNamespace, DEFAULT_DEPLOY_SALT, DEFAULT_SCENARIOS, GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, GearboxPermissionless, InstanceOwnerTransactions, PermissionlessAnalytics, PermissionlessChainUnreachableError, PermissionlessDeploy, PermissionlessNotAttachedError, PermissionlessOracles, PriceFeedNotInStoreError, PriceFeedSaltMissingError, PriceFeedStalenessUnknownError, RATE_FEED_TYPE, REVERT_SCORE, SCORE_MULTIPLIER, UNBOUNDED_DOWN, UNBOUNDED_UP, classifySources, deriveEffectiveStalenessPeriod, factorOf, finalPrice, groupOverride, perturb, priceFeedSalt, rateStub, readForest, readRateTargets, readUnder, roundDataStub, runAssetScores, runStressTest, scoreGroup, scoreOfFactor, slotHarm, sourcesByFeed, verdictOf, worstOf };
21
+ export { ChainsNamespace, DEFAULT_DEPLOY_SALT, DEFAULT_SCENARIOS, GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, GearboxPermissionless, InstanceOwnerTransactions, PermissionlessAnalytics, PermissionlessChainUnreachableError, PermissionlessDeploy, PermissionlessNotAttachedError, PermissionlessOracles, PriceFeedNotInStoreError, PriceFeedSaltMissingError, PriceFeedStalenessUnknownError, RATE_FEED_TYPE, SCORE_MULTIPLIER, UNBOUNDED_DOWN, UNBOUNDED_UP, classifySources, deriveEffectiveStalenessPeriod, factorOf, finalPrice, groupOverride, perturb, priceFeedSalt, rateStub, readFeedTrees, readForest, readRateTargets, readUnder, roundDataStub, runAssetScores, runFeedPairScore, runStressTest, scoreGroup, scoreOfFactor, slotHarm, sourcesByFeed, verdictOf, worstOf };
@@ -10,7 +10,7 @@ import { getFeedDecimals, getLatestPrices, getPrices } from "../../utils/price-u
10
10
  import { byCentrality, feedKey, pricesByFeed, toCap, totalQuotas } from "./enrich.js";
11
11
  import { assetDetailsSchema, assetSummariesSchema, marketSlotsSchema, priceFeedDetailsSchema, priceFeedStoresSchema } from "./schemas.js";
12
12
  import { runStressTest } from "./stress/run.js";
13
- import { runAssetScores } from "./score/run.js";
13
+ import { runAssetScores, runFeedPairScore } from "./score/run.js";
14
14
  import { erc20Abi } from "viem";
15
15
  //#region src/permissionless/api/oracles/PermissionlessOracles.ts
16
16
  const GET_PRICES_GAS_LIMIT_BY_CHAIN_ID = { 143: 100000000n };
@@ -359,14 +359,16 @@ var PermissionlessOracles = class extends AbstractOffchainNamespace {
359
359
  * three leaves anything to simulate.
360
360
  **/
361
361
  /**
362
- * Every asset's score out of 10 for how its markets guard its price.
362
+ * Every asset's manipulation resistance: how far, from 1 to 10 times, a
363
+ * lying source can push the price its markets hold for it.
363
364
  *
364
365
  * Each source group behind an asset's feeds — Chainlink, Redstone, Lido and
365
- * so on — is made in turn to answer five times what it answers now, and a
366
+ * so on — is made in turn to answer ten times what it answers now, and a
366
367
  * market scores by how far that moves its final price, `min(main,
367
- * reserve)`: 10 for not at all, 0 for the full five times, on a log scale.
368
- * A price that stops answering scores 5. An asset scores its worst running
369
- * market that takes it as collateral.
368
+ * reserve)`, as a multiple either way: 1 for not at all, 1.04 for 4%, 10
369
+ * for the whole lie. A group under which the price stops answering moves
370
+ * nothing and is listed rather than scored. An asset scores its worst
371
+ * running market, underlying or collateral.
370
372
  *
371
373
  * Simulated on the chain as it stands, through state overrides in
372
374
  * `eth_call`: one call per source group per chain, so the node behind the
@@ -408,6 +410,39 @@ var PermissionlessOracles = class extends AbstractOffchainNamespace {
408
410
  }
409
411
  }))).flat();
410
412
  }
413
+ /**
414
+ * The manipulation resistance of any main feed and reserve on a chain,
415
+ * scored the way {@link assetScores} scores a market holding them — for
416
+ * trying a pair before any market does.
417
+ *
418
+ * ```ts
419
+ * const pair = await permissionless.oracles.feedPairScore({
420
+ * chainId: 1,
421
+ * main: "0x…",
422
+ * reserve: "0x…",
423
+ * });
424
+ * ```
425
+ *
426
+ * Reads the chain directly, through state overrides in `eth_call`, so the
427
+ * client has to have attached and the node behind it has to accept them.
428
+ *
429
+ * @throws When the client has not attached, when the chain has no client or
430
+ * no PriceFeedCompressor, or when there is nothing to score: a feed the
431
+ * compressor cannot read, a `ZeroPriceFeed` main, or a final price that does
432
+ * not answer.
433
+ **/
434
+ async feedPairScore({ chainId, main, reserve }) {
435
+ const client = this.#chains.client(chainId);
436
+ const compressor = await new AddressProviderContract("0xF7f0a609BfAb9a0A98786951ef10e5FE26cC1E38", client).getLatestVersionAddress(AP_PRICE_FEED_COMPRESSOR);
437
+ return runFeedPairScore({
438
+ client,
439
+ chainId,
440
+ compressor,
441
+ main,
442
+ reserve,
443
+ logger: this.logger ?? void 0
444
+ });
445
+ }
411
446
  async stressTest({ chainId, ...options }) {
412
447
  const client = this.#chains.client(chainId);
413
448
  const compressor = await new AddressProviderContract("0xF7f0a609BfAb9a0A98786951ef10e5FE26cC1E38", client).getLatestVersionAddress(AP_PRICE_FEED_COMPRESSOR);
@@ -1,11 +1,11 @@
1
1
  import { classifySources, sourcesByFeed } from "./stress/classify.js";
2
2
  import { UNBOUNDED_DOWN, UNBOUNDED_UP, groupOverride, perturb, rateStub, roundDataStub } from "./stress/override.js";
3
3
  import { scoreGroup, slotHarm, verdictOf } from "./stress/score.js";
4
- import { DEFAULT_SCENARIOS, RATE_FEED_TYPE, readForest, readRateTargets, readUnder, runStressTest } from "./stress/run.js";
5
- import { REVERT_SCORE, SCORE_MULTIPLIER, factorOf, finalPrice, scoreOfFactor, worstOf } from "./score/formula.js";
6
- import { runAssetScores } from "./score/run.js";
4
+ import { DEFAULT_SCENARIOS, RATE_FEED_TYPE, readFeedTrees, readForest, readRateTargets, readUnder, runStressTest } from "./stress/run.js";
5
+ import { SCORE_MULTIPLIER, factorOf, finalPrice, scoreOfFactor, worstOf } from "./score/formula.js";
6
+ import { runAssetScores, runFeedPairScore } from "./score/run.js";
7
7
  import { GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, PermissionlessOracles } from "./PermissionlessOracles.js";
8
8
  import "./score/index.js";
9
9
  import "./stress/index.js";
10
10
  import "./types.js";
11
- export { DEFAULT_SCENARIOS, GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, PermissionlessOracles, RATE_FEED_TYPE, REVERT_SCORE, SCORE_MULTIPLIER, UNBOUNDED_DOWN, UNBOUNDED_UP, classifySources, factorOf, finalPrice, groupOverride, perturb, rateStub, readForest, readRateTargets, readUnder, roundDataStub, runAssetScores, runStressTest, scoreGroup, scoreOfFactor, slotHarm, sourcesByFeed, verdictOf, worstOf };
11
+ export { DEFAULT_SCENARIOS, GET_PRICES_CHUNK_SIZE, GET_PRICES_GAS_LIMIT_BY_CHAIN_ID, PermissionlessOracles, RATE_FEED_TYPE, SCORE_MULTIPLIER, UNBOUNDED_DOWN, UNBOUNDED_UP, classifySources, factorOf, finalPrice, groupOverride, perturb, rateStub, readFeedTrees, readForest, readRateTargets, readUnder, roundDataStub, runAssetScores, runFeedPairScore, runStressTest, scoreGroup, scoreOfFactor, slotHarm, sourcesByFeed, verdictOf, worstOf };
@@ -1,25 +1,19 @@
1
1
  //#region src/permissionless/api/oracles/score/formula.ts
2
2
  /** What every source of a group is made to answer, as a multiple of now. */
3
- const SCORE_MULTIPLIER = 5;
3
+ const SCORE_MULTIPLIER = 10;
4
4
  /**
5
- * The score of a price that stops answering under the lie.
5
+ * How far the final price moved, as a multiple of where it was, either way:
6
+ * 1 for a price that did not move, 1.04 for one 4% off, and
7
+ * {@link SCORE_MULTIPLIER} for one that took the whole lie — the most it can
8
+ * take from one leg, and where a price over two legs of one group, moved
9
+ * further, is held too.
6
10
  *
7
- * Half marks: nobody can borrow against a wrong number, but nobody can be
8
- * liquidated either until the feed is replaced.
9
- */
10
- const REVERT_SCORE = 5;
11
- /**
12
- * 0 to 10 by how far the final price moved, on a log scale against the lie
13
- * itself: 10 for a price that did not move, 0 for one that moved by the full
14
- * {@link SCORE_MULTIPLIER} or more, either way. Rounded to a half point.
15
- *
16
- * A bound holding a price within a few percent keeps a 10; a price that let
17
- * half the lie through, ×√5, scores 5.
11
+ * `null` for a price that stopped answering, which is not a move.
18
12
  */
19
13
  function scoreOfFactor(factor) {
20
- if (factor === null || !Number.isFinite(factor) || factor <= 0) return 5;
21
- const moved = Math.abs(Math.log(factor)) / Math.log(5);
22
- return Math.round(10 * Math.max(0, 1 - moved) * 2) / 2;
14
+ if (factor === null || !Number.isFinite(factor) || factor <= 0) return null;
15
+ const move = factor >= 1 ? factor : 1 / factor;
16
+ return Math.min(10, move);
23
17
  }
24
18
  /**
25
19
  * The price a market settles on: the lower of main and reserve, or the main
@@ -37,19 +31,21 @@ function factorOf(base, stressed) {
37
31
  return Number(stressed) / Number(base);
38
32
  }
39
33
  /**
40
- * The market's score and the group it comes from: the lowest of its groups,
41
- * ties going to the group that moved the price further. 10 where no source
42
- * feeds the price at all, since nothing can be made to lie about it.
34
+ * The market's score and the group it comes from: the furthest any group
35
+ * moved its price. 1 where nothing moved it — no group did, or no source
36
+ * feeds the price at all.
37
+ *
38
+ * A group under which the price stops answering moves nothing and does not
39
+ * set the score; it is listed after those that do, for a reader to see.
43
40
  */
44
41
  function worstOf(impacts) {
45
- const distance = (impact) => impact.factor === null ? Infinity : Math.abs(Math.log(impact.factor));
46
- const sorted = [...impacts].sort((a, b) => a.score - b.score || distance(b) - distance(a));
47
- const worst = sorted[0] ?? null;
42
+ const sorted = [...impacts].sort((a, b) => (b.score ?? 0) - (a.score ?? 0));
43
+ const worst = sorted.find((impact) => impact.score !== null) ?? null;
48
44
  return {
49
- score: worst?.score ?? 10,
45
+ score: worst?.score ?? 1,
50
46
  impacts: sorted,
51
47
  worst
52
48
  };
53
49
  }
54
50
  //#endregion
55
- export { REVERT_SCORE, SCORE_MULTIPLIER, factorOf, finalPrice, scoreOfFactor, worstOf };
51
+ export { SCORE_MULTIPLIER, factorOf, finalPrice, scoreOfFactor, worstOf };
@@ -1,4 +1,4 @@
1
- import { REVERT_SCORE, SCORE_MULTIPLIER, factorOf, finalPrice, scoreOfFactor, worstOf } from "./formula.js";
2
- import { runAssetScores } from "./run.js";
1
+ import { SCORE_MULTIPLIER, factorOf, finalPrice, scoreOfFactor, worstOf } from "./formula.js";
2
+ import { runAssetScores, runFeedPairScore } from "./run.js";
3
3
  import "./types.js";
4
- export { REVERT_SCORE, SCORE_MULTIPLIER, factorOf, finalPrice, runAssetScores, scoreOfFactor, worstOf };
4
+ export { SCORE_MULTIPLIER, factorOf, finalPrice, runAssetScores, runFeedPairScore, scoreOfFactor, worstOf };