@steerprotocol/sdk 4.0.0-next.12 → 4.0.0-next.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -2273,6 +2273,12 @@ is an error, not a fabricated key. Pool browsing remains separate and requires a
2273
2273
  Base retains its existing indexed adapter by default. BNB combines indexed browsing with RPC key
2274
2274
  resolution; Robinhood uses RPC key resolution without indexed pool browsing.
2275
2275
 
2276
+ ### BSC SushiSwap and Uniswap V3 snapshots
2277
+
2278
+ The exact qualified `MultiPositionSushi` and `MultiPositionUniswapV3` implementations now support vault resolution, single/bulk snapshots and direct pool reads. They reuse the fixed-fee V3 reader with 15% aggregate fee rounding. Normal bulk snapshot pages use two pinned RPC requests and preserve per-member failures with `allowFailure: true`.
2279
+
2280
+ AMM-filtered Steer vault listing works. Underlying AMM pool browsing remains unqualified: both inherited subgraphs returned pool rows without the expected factory identity and the SDK rejects those responses. Deposit/withdrawal flows were not newly qualified by this snapshot work. Base Sushi is separately qualified after the 30-vault migration, using its exact upgraded FeeManager/helper implementation; see [Base Sushi qualification](src/vault/adapters/uniswap-v3/base-sushi-qualification.md). See [source and live qualification](src/vault/adapters/uniswap-v3/bsc-qualification.md).
2281
+
2276
2282
  ### BSC PancakeSwap V3 vault snapshots
2277
2283
 
2278
2284
  `MultiPositionPancake` vaults on BSC use the shared `UniswapV3Vault` implementation and
package/dist/index.cjs CHANGED
@@ -780,6 +780,9 @@ let AmmDeployment = /* @__PURE__ */ function(AmmDeployment) {
780
780
  AmmDeployment["AerodromeSlipstreamBase"] = "aerodrome-slipstream-base";
781
781
  AmmDeployment["AerodromeSlipstreamV2Base"] = "aerodrome-slipstream-v2-base";
782
782
  AmmDeployment["AerodromeSlipstreamV3Base"] = "aerodrome-slipstream-v3-base";
783
+ AmmDeployment["SushiSwapV3Base"] = "sushiswap-v3-base";
784
+ AmmDeployment["SushiSwapV3Bsc"] = "sushiswap-v3-bsc";
785
+ AmmDeployment["UniswapV3Bsc"] = "uniswap-v3-bsc";
783
786
  AmmDeployment["SushiSwapV3Polygon"] = "sushiswap-v3-polygon";
784
787
  AmmDeployment["RetroV3Polygon"] = "retro-v3-polygon";
785
788
  AmmDeployment["UniswapV3Polygon"] = "uniswap-v3-polygon";
@@ -19918,6 +19921,38 @@ const quickSwapIntegralPolygon = /* @__PURE__ */ new Deployment({
19918
19921
  }
19919
19922
  }, (context, definition) => new QuickSwapIntegral(context, definition, new AlgebraIntegralDataAdapter(definition.dataAdapter, definition.contracts.factory.address, context.indexerRequest)));
19920
19923
  //#endregion
19924
+ //#region src/amm/deployments/sushiswap-v3.ts
19925
+ /** Prior SDK endpoint metadata retained; vault reads verify factory registration independently. */
19926
+ const sushiswapV3Polygon = /* @__PURE__ */ new Deployment({
19927
+ id: "sushiswap-v3-polygon",
19928
+ chainId: 137,
19929
+ contracts: { factory: { address: "0x917933899c6a5F8E37F31E19f92CdBFF7e8FF0e2" } },
19930
+ dataAdapter: {
19931
+ kind: "subgraph",
19932
+ url: "https://gateway.thegraph.com/api/subgraphs/id/CqLnQY1d6DLcBYu7aZvGmt17LoNdTe4fDYnGbE2EgotR"
19933
+ }
19934
+ }, (context, definition) => new SushiSwapV3(context, definition, new UniswapV3DataAdapter(definition.dataAdapter, definition.contracts.factory.address, context.indexerRequest)));
19935
+ /** Prior SDK endpoint metadata retained; vault reads verify factory registration independently. */
19936
+ const sushiswapV3Bsc = /* @__PURE__ */ new Deployment({
19937
+ id: "sushiswap-v3-bsc",
19938
+ chainId: 56,
19939
+ contracts: { factory: { address: "0x126555dd55a39328F69400d6aE4F782Bd4C34ABb" } },
19940
+ dataAdapter: {
19941
+ kind: "subgraph",
19942
+ url: "https://gateway.thegraph.com/api/subgraphs/id/FiJDXMFCBv88GP17g2TtPh8BcA8jZozn5WRW7hCN7cUT"
19943
+ }
19944
+ }, (context, definition) => new SushiSwapV3(context, definition, new UniswapV3DataAdapter(definition.dataAdapter, definition.contracts.factory.address, context.indexerRequest)));
19945
+ /** Prior SDK endpoint metadata retained; vault reads verify factory registration independently. */
19946
+ const sushiswapV3Base = /* @__PURE__ */ new Deployment({
19947
+ id: "sushiswap-v3-base",
19948
+ chainId: 8453,
19949
+ contracts: { factory: { address: "0xc35DADB65012eC5796536bD9864eD8773aBc74C4" } },
19950
+ dataAdapter: {
19951
+ kind: "subgraph",
19952
+ url: "https://gateway.thegraph.com/api/subgraphs/id/Cz4Snpih41NNNPZcbj1gd3fYXPwFr5q92iWMoZjCarEb"
19953
+ }
19954
+ }, (context, definition) => new SushiSwapV3(context, definition, new UniswapV3DataAdapter(definition.dataAdapter, definition.contracts.factory.address, context.indexerRequest)));
19955
+ //#endregion
19921
19956
  //#region src/amm/deployments/uniswap-v3.ts
19922
19957
  /** Addresses: https://developers.uniswap.org/docs/protocols/v3/deployments/v3-base-deployments */
19923
19958
  const uniswapV3Base = /* @__PURE__ */ new Deployment({
@@ -19947,6 +19982,20 @@ const uniswapV3Polygon = /* @__PURE__ */ new Deployment({
19947
19982
  url: "https://gateway.thegraph.com/api/subgraphs/id/EsLGwxyeMMeJuhqWvuLmJEiDKXJ4Z6YsoJreUnyeozco"
19948
19983
  }
19949
19984
  }, (context, definition) => new UniswapV3(context, definition, new UniswapV3DataAdapter(definition.dataAdapter, definition.contracts.factory.address, context.indexerRequest)));
19985
+ /** Addresses: https://developers.uniswap.org/docs/protocols/v3/deployments/bsc-deployments */
19986
+ const uniswapV3Bsc = /* @__PURE__ */ new Deployment({
19987
+ id: "uniswap-v3-bsc",
19988
+ chainId: 56,
19989
+ contracts: {
19990
+ factory: { address: "0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7" },
19991
+ positionManager: { address: "0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613" },
19992
+ quoter: { address: "0x78D78E420Da98ad378D7799bE8f4AF69033EB077" }
19993
+ },
19994
+ dataAdapter: {
19995
+ kind: "subgraph",
19996
+ url: "https://gateway.thegraph.com/api/subgraphs/id/G5MUbSBM7Nsrm9tH2tGQUiAF4SZDGf2qeo1xPLYjKr7K"
19997
+ }
19998
+ }, (context, definition) => new UniswapV3(context, definition, new UniswapV3DataAdapter(definition.dataAdapter, definition.contracts.factory.address, context.indexerRequest)));
19950
19999
  //#endregion
19951
20000
  //#region src/amm/adapters/uniswap-v4/key-lookup.ts
19952
20001
  const abi = /* @__PURE__ */ (0, viem.parseAbi)([
@@ -22946,18 +22995,6 @@ const retroV3Polygon = /* @__PURE__ */ new Deployment({
22946
22995
  }
22947
22996
  }, (context, definition) => new RetroV3(context, definition, new UniswapV3DataAdapter(definition.dataAdapter, definition.contracts.factory.address, context.indexerRequest)));
22948
22997
  //#endregion
22949
- //#region src/amm/deployments/sushiswap-v3.ts
22950
- /** Prior SDK endpoint metadata retained; vault reads verify factory registration independently. */
22951
- const sushiswapV3Polygon = /* @__PURE__ */ new Deployment({
22952
- id: "sushiswap-v3-polygon",
22953
- chainId: 137,
22954
- contracts: { factory: { address: "0x917933899c6a5F8E37F31E19f92CdBFF7e8FF0e2" } },
22955
- dataAdapter: {
22956
- kind: "subgraph",
22957
- url: "https://gateway.thegraph.com/api/subgraphs/id/CqLnQY1d6DLcBYu7aZvGmt17LoNdTe4fDYnGbE2EgotR"
22958
- }
22959
- }, (context, definition) => new SushiSwapV3(context, definition, new UniswapV3DataAdapter(definition.dataAdapter, definition.contracts.factory.address, context.indexerRequest)));
22960
- //#endregion
22961
22998
  //#region src/vault/adapters/uniswap-v3/identity.ts
22962
22999
  const baseV3VaultIdentity = /* @__PURE__ */ (() => Object.freeze({
22963
23000
  beacon: "0xDf0b9Ef4d7C4E294A74efB4407129bd66e4f82f0",
@@ -22966,6 +23003,14 @@ const baseV3VaultIdentity = /* @__PURE__ */ (() => Object.freeze({
22966
23003
  implementationCodeHash: "0x9fff8189bb2dd53465e6cb2bee210b941b7b37dee5ca30ee6eac3463ce871ff7",
22967
23004
  helperCodeHash: "0x8d178d093d945e3d89a5ac57aa9f14a56d4446508557da168a5713496de77937"
22968
23005
  }))();
23006
+ /** Migrated Base Sushi uses the qualified FeeManager/helper layout. */
23007
+ const baseSushiVaultIdentity = /* @__PURE__ */ (() => Object.freeze({
23008
+ ...baseV3VaultIdentity,
23009
+ beacon: "0xb4f89b74aee9b9f1340835470fe4a6ed54e7fc11",
23010
+ implementation: "0x6270905CAb3fC7f9bAf13803Fa2F1111D14B8005",
23011
+ implementationCodeHash: "0xce1144e291dec2375eedebc3fd1032f41b107761031bcec1fcef02641c0bdaab",
23012
+ proxyCodeHashes: Object.freeze([baseV3VaultIdentity.proxyCodeHash, "0x925993ab444b9b69993f1a22416897ccc0eadff0f3681fee18ec0617efbc2f4f"])
23013
+ }))();
22969
23014
  const beaconSlot = "0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50";
22970
23015
  const polygonV3VaultIdentity = /* @__PURE__ */ (() => Object.freeze({
22971
23016
  feePolicy: "fixed",
@@ -22996,11 +23041,29 @@ const bscPancakeVaultIdentity = /* @__PURE__ */ (() => Object.freeze({
22996
23041
  implementation: "0x588B34D2a9598497f481A9d31B4eD372C6135f32",
22997
23042
  implementationCodeHash: "0xf5709c6a1fcfeb4488663da7f8182975d3adc7a07f0ed0f04b98d9488cae6a83"
22998
23043
  }))();
23044
+ const bscSushiVaultIdentity = /* @__PURE__ */ (() => Object.freeze({
23045
+ ...polygonV3VaultIdentity,
23046
+ feeRounding: "aggregate",
23047
+ beacon: "0x33553c0914e1dc95de011f26f438a599df56f268",
23048
+ implementation: "0xE11709193e7b2E0a0F2a4591022cFf4f01E75050",
23049
+ implementationCodeHash: "0x10d00977df1a122495edb85c60972f2ffb92240f14a3770461cd32372e6b4570"
23050
+ }))();
23051
+ const bscV3VaultIdentity = /* @__PURE__ */ (() => Object.freeze({
23052
+ ...polygonV3VaultIdentity,
23053
+ feeRounding: "aggregate",
23054
+ beacon: "0x05ac33a55366a61fed4b0720946691c9faebcbb0",
23055
+ implementation: "0x16BA7102271dC83Fff2f709691c2B601DAD7668e",
23056
+ implementationCodeHash: "0x6cc14caa5a81aea294c4913dfcf437aa9d6528084ca4835ac87f036e424b2da0"
23057
+ }))();
22999
23058
  const qualifiedVaults = /* @__PURE__ */ (() => Object.freeze([
23000
23059
  {
23001
23060
  amm: uniswapV3Base,
23002
23061
  identity: baseV3VaultIdentity
23003
23062
  },
23063
+ {
23064
+ amm: sushiswapV3Base,
23065
+ identity: baseSushiVaultIdentity
23066
+ },
23004
23067
  {
23005
23068
  amm: uniswapV3Polygon,
23006
23069
  identity: polygonV3VaultIdentity
@@ -23016,10 +23079,17 @@ const qualifiedVaults = /* @__PURE__ */ (() => Object.freeze([
23016
23079
  {
23017
23080
  amm: pancakeSwapV3Bsc,
23018
23081
  identity: bscPancakeVaultIdentity
23082
+ },
23083
+ {
23084
+ amm: sushiswapV3Bsc,
23085
+ identity: bscSushiVaultIdentity
23086
+ },
23087
+ {
23088
+ amm: uniswapV3Bsc,
23089
+ identity: bscV3VaultIdentity
23019
23090
  }
23020
23091
  ]))();
23021
23092
  function v3VaultIdentity(chainId, factory) {
23022
- if (chainId === 8453) return baseV3VaultIdentity;
23023
23093
  const qualified = qualifiedVaults.find(({ amm }) => amm.definition.chainId === chainId && sameAddress(factory, amm.definition.contracts.factory.address));
23024
23094
  if (qualified) return qualified.identity;
23025
23095
  throw new Error("V3 vault identity is not configured for this chain/factory");
@@ -24234,8 +24304,19 @@ async function executeV3VaultReader(context, args, mode) {
24234
24304
  }
24235
24305
  async function readV3VaultSnapshot(context, rpc, pool, factory) {
24236
24306
  const storage = await readVaultStorage(context);
24307
+ const identity = v3VaultIdentity(rpc.chainId, factory);
24308
+ let proxyCodeHash = identity.proxyCodeHash;
24309
+ if (identity.feePolicy !== "fixed" && identity.proxyCodeHashes) {
24310
+ const code = await vaultRpc(context).getCode({
24311
+ address: context.address,
24312
+ blockNumber: context.blockNumber
24313
+ });
24314
+ if (!code || !identity.proxyCodeHashes.includes((0, viem.keccak256)(code))) identityMismatch("Unsupported vault contract code");
24315
+ proxyCodeHash = (0, viem.keccak256)(code);
24316
+ }
24237
24317
  const expected = {
24238
- ...v3VaultIdentity(rpc.chainId, factory),
24318
+ ...identity,
24319
+ proxyCodeHash,
24239
24320
  factory,
24240
24321
  pool
24241
24322
  };
@@ -24654,6 +24735,66 @@ const bscPancakeVaultProtocol = /* @__PURE__ */ (() => Object.freeze({
24654
24735
  protocolAddress: pancakeSwapV3Bsc.definition.contracts.factory.address,
24655
24736
  deployment: pancakeSwapV3Bsc
24656
24737
  }))();
24738
+ const bscSushiVaultDiscovery = /* @__PURE__ */ (() => Object.freeze({
24739
+ amm: sushiswapV3Bsc,
24740
+ beaconNames: Object.freeze(["MultiPositionSushi"])
24741
+ }))();
24742
+ const bscSushiVaultBinding = /* @__PURE__ */ (() => Object.freeze({
24743
+ readUnderlying: (context) => readUnderlyingForFactory(context, sushiswapV3Bsc.definition.contracts.factory.address),
24744
+ beaconNames: bscSushiVaultDiscovery.beaconNames,
24745
+ kind: "liquidity",
24746
+ readSnapshot: readV3VaultAccounting,
24747
+ createVault: (context) => new UniswapV3Vault(context),
24748
+ beaconAddress: bscSushiVaultIdentity.beacon,
24749
+ implementationAddress: bscSushiVaultIdentity.implementation,
24750
+ implementationCodeHash: bscSushiVaultIdentity.implementationCodeHash
24751
+ }))();
24752
+ const bscSushiVaultProtocol = /* @__PURE__ */ (() => Object.freeze({
24753
+ kind: "liquidity",
24754
+ role: "amm-factory",
24755
+ protocolAddress: sushiswapV3Bsc.definition.contracts.factory.address,
24756
+ deployment: sushiswapV3Bsc
24757
+ }))();
24758
+ const bscV3VaultDiscovery = /* @__PURE__ */ (() => Object.freeze({
24759
+ amm: uniswapV3Bsc,
24760
+ beaconNames: Object.freeze(["MultiPositionUniswapV3"])
24761
+ }))();
24762
+ const bscV3VaultBinding = /* @__PURE__ */ (() => Object.freeze({
24763
+ readUnderlying: (context) => readUnderlyingForFactory(context, uniswapV3Bsc.definition.contracts.factory.address),
24764
+ beaconNames: bscV3VaultDiscovery.beaconNames,
24765
+ kind: "liquidity",
24766
+ readSnapshot: readV3VaultAccounting,
24767
+ createVault: (context) => new UniswapV3Vault(context),
24768
+ beaconAddress: bscV3VaultIdentity.beacon,
24769
+ implementationAddress: bscV3VaultIdentity.implementation,
24770
+ implementationCodeHash: bscV3VaultIdentity.implementationCodeHash
24771
+ }))();
24772
+ const bscV3VaultProtocol = /* @__PURE__ */ (() => Object.freeze({
24773
+ kind: "liquidity",
24774
+ role: "amm-factory",
24775
+ protocolAddress: uniswapV3Bsc.definition.contracts.factory.address,
24776
+ deployment: uniswapV3Bsc
24777
+ }))();
24778
+ const baseSushiVaultDiscovery = /* @__PURE__ */ (() => Object.freeze({
24779
+ amm: sushiswapV3Base,
24780
+ beaconNames: Object.freeze(["MultiPositionSushi"])
24781
+ }))();
24782
+ const baseSushiVaultBinding = /* @__PURE__ */ (() => Object.freeze({
24783
+ readUnderlying: (context) => readUnderlyingForFactory(context, sushiswapV3Base.definition.contracts.factory.address),
24784
+ beaconNames: baseSushiVaultDiscovery.beaconNames,
24785
+ kind: "liquidity",
24786
+ readSnapshot: readV3VaultAccounting,
24787
+ createVault: (context) => new UniswapV3Vault(context),
24788
+ beaconAddress: baseSushiVaultIdentity.beacon,
24789
+ implementationAddress: baseSushiVaultIdentity.implementation,
24790
+ implementationCodeHash: baseSushiVaultIdentity.implementationCodeHash
24791
+ }))();
24792
+ const baseSushiVaultProtocol = /* @__PURE__ */ (() => Object.freeze({
24793
+ kind: "liquidity",
24794
+ role: "amm-factory",
24795
+ protocolAddress: sushiswapV3Base.definition.contracts.factory.address,
24796
+ deployment: sushiswapV3Base
24797
+ }))();
24657
24798
  //#endregion
24658
24799
  //#region src/vault/deployments/base.ts
24659
24800
  function createBaseVaultResolver() {
@@ -24678,7 +24819,16 @@ function createBaseVaultResolver() {
24678
24819
  snapshotRuntime: integralVaultBatchReaderRuntime,
24679
24820
  readSnapshot: readIntegralBulkSnapshot
24680
24821
  },
24681
- ...baseAerodromeVaultMappings
24822
+ ...baseAerodromeVaultMappings,
24823
+ {
24824
+ identity: baseSushiVaultIdentity,
24825
+ factory: sushiswapV3Base.definition.contracts.factory.address,
24826
+ runtime: v3VaultResolutionReaderRuntime,
24827
+ binding: baseSushiVaultBinding,
24828
+ snapshotRuntime: v3VaultBatchReaderRuntime,
24829
+ helperCodeHash: baseSushiVaultIdentity.helperCodeHash,
24830
+ readSnapshot: readV3BulkSnapshot
24831
+ }
24682
24832
  ];
24683
24833
  return Object.freeze({
24684
24834
  reader: {
@@ -24701,12 +24851,14 @@ function createBaseVaultResolver() {
24701
24851
  implementations: Object.freeze([
24702
24852
  ...baseV3VaultResolver.implementations,
24703
24853
  ...baseAerodromeVaultMappings.map((mapping) => mapping.binding),
24704
- baseIntegralVaultBinding
24854
+ baseIntegralVaultBinding,
24855
+ baseSushiVaultBinding
24705
24856
  ]),
24706
24857
  protocols: Object.freeze([
24707
24858
  ...baseV3VaultResolver.protocols,
24708
24859
  baseIntegralVaultProtocol,
24709
- ...baseAerodromeVaultProtocols
24860
+ ...baseAerodromeVaultProtocols,
24861
+ baseSushiVaultProtocol
24710
24862
  ])
24711
24863
  });
24712
24864
  }
@@ -24723,6 +24875,7 @@ var base_default = /* @__PURE__ */ defineSteerNetwork({
24723
24875
  }
24724
24876
  }, baseContracts, "https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-base/beta/gn", [
24725
24877
  uniswapV3Base,
24878
+ sushiswapV3Base,
24726
24879
  uniswapV4Base,
24727
24880
  quickSwapIntegralBase,
24728
24881
  aerodromeSlipstreamBase,
@@ -24731,6 +24884,7 @@ var base_default = /* @__PURE__ */ defineSteerNetwork({
24731
24884
  ], /* @__PURE__ */ createBaseVaultResolver(), /* @__PURE__ */ (() => Object.freeze([
24732
24885
  ...baseAerodromeVaultDiscovery,
24733
24886
  baseV3VaultDiscovery,
24887
+ baseSushiVaultDiscovery,
24734
24888
  baseIntegralVaultDiscovery
24735
24889
  ]))());
24736
24890
  //#endregion
@@ -25950,14 +26104,33 @@ async function readV4BulkSnapshot(vault, data, rpc) {
25950
26104
  }
25951
26105
  //#endregion
25952
26106
  //#region src/vault/deployments/bsc.ts
25953
- const mappings = /* @__PURE__ */ (() => Object.freeze([{
25954
- identity: bscPancakeVaultIdentity,
25955
- factory: pancakeSwapV3Bsc.definition.contracts.factory.address,
25956
- runtime: v3VaultResolutionReaderRuntime,
25957
- snapshotRuntime: fixedFeeV3VaultBatchReaderRuntime,
25958
- binding: bscPancakeVaultBinding,
25959
- readSnapshot: readV3BulkSnapshot
25960
- }, v4BulkMapping(bscV4VaultIdentity, bscV4VaultBinding, uniswapV4Bsc.definition.contracts)]))();
26107
+ const mappings = /* @__PURE__ */ (() => Object.freeze([
26108
+ {
26109
+ identity: bscPancakeVaultIdentity,
26110
+ factory: pancakeSwapV3Bsc.definition.contracts.factory.address,
26111
+ runtime: v3VaultResolutionReaderRuntime,
26112
+ snapshotRuntime: fixedFeeV3VaultBatchReaderRuntime,
26113
+ binding: bscPancakeVaultBinding,
26114
+ readSnapshot: readV3BulkSnapshot
26115
+ },
26116
+ ...[{
26117
+ identity: bscSushiVaultIdentity,
26118
+ binding: bscSushiVaultBinding,
26119
+ amm: sushiswapV3Bsc
26120
+ }, {
26121
+ identity: bscV3VaultIdentity,
26122
+ binding: bscV3VaultBinding,
26123
+ amm: uniswapV3Bsc
26124
+ }].map(({ identity, binding, amm }) => ({
26125
+ identity,
26126
+ binding,
26127
+ factory: amm.definition.contracts.factory.address,
26128
+ runtime: v3VaultResolutionReaderRuntime,
26129
+ snapshotRuntime: fixedFeeV3VaultBatchReaderRuntime,
26130
+ readSnapshot: readV3BulkSnapshot
26131
+ })),
26132
+ v4BulkMapping(bscV4VaultIdentity, bscV4VaultBinding, uniswapV4Bsc.definition.contracts)
26133
+ ]))();
25961
26134
  //#endregion
25962
26135
  //#region src/catalog/bsc.ts
25963
26136
  var bsc_default = /* @__PURE__ */ defineSteerNetwork({
@@ -25971,7 +26144,9 @@ var bsc_default = /* @__PURE__ */ defineSteerNetwork({
25971
26144
  }, bscContracts, "https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-bsc-beta/prod/gn", [
25972
26145
  pancakeSwapV3Bsc,
25973
26146
  pancakeSwapInfinityCLBsc,
25974
- uniswapV4Bsc
26147
+ uniswapV4Bsc,
26148
+ sushiswapV3Bsc,
26149
+ uniswapV3Bsc
25975
26150
  ], /* @__PURE__ */ (() => Object.freeze({
25976
26151
  reader: {
25977
26152
  readMany: (contexts, allowFailure) => readBulkVaults(contexts, mappings, allowFailure),
@@ -25983,14 +26158,29 @@ var bsc_default = /* @__PURE__ */ defineSteerNetwork({
25983
26158
  await readContext(context.steer.context, { blockNumber: context.blockNumber });
25984
26159
  const identity = await readRegisteredVaultIdentity(context);
25985
26160
  if (!identity) return null;
25986
- if (sameAddress(identity.beaconAddress, bscPancakeVaultIdentity.beacon) && sameAddress(identity.implementationAddress, bscPancakeVaultIdentity.implementation)) await verifyV3Identity(context, identity);
26161
+ if (findV3VaultIdentity(context.steer.context.chainId, identity.beaconAddress, identity.implementationAddress)) await verifyV3Identity(context, identity);
25987
26162
  else await verifyV4VaultIdentity(context, identity);
25988
26163
  return identity;
25989
26164
  }
25990
26165
  },
25991
- implementations: Object.freeze([bscPancakeVaultBinding, bscV4VaultBinding]),
25992
- protocols: Object.freeze([bscPancakeVaultProtocol, bscV4VaultProtocol])
25993
- }))(), /* @__PURE__ */ Object.freeze([bscPancakeVaultDiscovery, bscV4VaultDiscovery]));
26166
+ implementations: Object.freeze([
26167
+ bscPancakeVaultBinding,
26168
+ bscSushiVaultBinding,
26169
+ bscV3VaultBinding,
26170
+ bscV4VaultBinding
26171
+ ]),
26172
+ protocols: Object.freeze([
26173
+ bscPancakeVaultProtocol,
26174
+ bscSushiVaultProtocol,
26175
+ bscV3VaultProtocol,
26176
+ bscV4VaultProtocol
26177
+ ])
26178
+ }))(), /* @__PURE__ */ Object.freeze([
26179
+ bscPancakeVaultDiscovery,
26180
+ bscSushiVaultDiscovery,
26181
+ bscV3VaultDiscovery,
26182
+ bscV4VaultDiscovery
26183
+ ]));
25994
26184
  //#endregion
25995
26185
  //#region src/catalog/celo.ts
25996
26186
  var celo_default = /* @__PURE__ */ defineSteerNetwork({