@steerprotocol/sdk 3.5.0 → 3.6.1
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/index.browser.mjs +159 -51
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.cjs +159 -51
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +6 -0
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +159 -51
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -9272,7 +9272,7 @@ const steerSubgraphConfig = {
|
|
|
9272
9272
|
[Chain.Saga]: offlineSubgraphUrl("saga"),
|
|
9273
9273
|
[Chain.Nibiru]: offlineSubgraphUrl("nibiru"),
|
|
9274
9274
|
[Chain.Hyperevm]: "https://api.subgraph.ormilabs.com/api/public/803c8c8c-be12-4188-8523-b9853e23051d/subgraphs/steer-protocol-hyperevm/prod/gn",
|
|
9275
|
-
[Chain.Bittensor]: "https://
|
|
9275
|
+
[Chain.Bittensor]: "https://subgraphs.steer.finance/subgraphs/name/steer-subgraph/graphql",
|
|
9276
9276
|
[Chain.Robinhood]: "https://api.goldsky.com/api/public/project_cm2k9xbkz4qg901vs51bm5uau/subgraphs/steer-protocol-robinhood/prod/gn"
|
|
9277
9277
|
};
|
|
9278
9278
|
/**
|
|
@@ -14918,7 +14918,7 @@ const nestVaultConfig = () => ({
|
|
|
14918
14918
|
//#region src/const/amm/configs/protocols/bittensor-univ3.ts
|
|
14919
14919
|
const bittensorUniV3Config = () => ({
|
|
14920
14920
|
beaconContract: MultiPositionManagers.MultiPositionBittensorUniV3,
|
|
14921
|
-
subgraph: { [Chain.Bittensor]: "https://
|
|
14921
|
+
subgraph: { [Chain.Bittensor]: "https://subgraphs.steer.finance/subgraphs/name/uniswap-v3-bittensor/graphql" },
|
|
14922
14922
|
factoryAddress: { [Chain.Bittensor]: "0xfB30AE7542a5E8A5BC134128c0c9dEb4646a2508" },
|
|
14923
14923
|
NFTManagerAddress: { [Chain.Bittensor]: "0x32aF22F550bB1E9dd1382BEaBb0E3e6bb12fA549" },
|
|
14924
14924
|
swapRouterAddress: { [Chain.Bittensor]: "0xa0a90ebB2A57083d06146D86d99a2eED3378359d" },
|
|
@@ -16377,6 +16377,47 @@ const FIND_ALL_VAULTS_BY_PROTOCOL = (batchSize = 1e3, timestamp, beaconNames) =>
|
|
|
16377
16377
|
}
|
|
16378
16378
|
}`;
|
|
16379
16379
|
};
|
|
16380
|
+
const FIND_VAULT_BY_ADDRESS = (vaultAddress) => `query {
|
|
16381
|
+
vaults(first: 1, where: { id: "${vaultAddress}" }) {
|
|
16382
|
+
id
|
|
16383
|
+
name
|
|
16384
|
+
token0
|
|
16385
|
+
token1
|
|
16386
|
+
pool
|
|
16387
|
+
weeklyFeeAPR
|
|
16388
|
+
token0Symbol
|
|
16389
|
+
token0Decimals
|
|
16390
|
+
token1Symbol
|
|
16391
|
+
token1Decimals
|
|
16392
|
+
totalValueLockedToken0
|
|
16393
|
+
totalValueLockedToken1
|
|
16394
|
+
token0Balance
|
|
16395
|
+
token1Balance
|
|
16396
|
+
totalLPTokensIssued
|
|
16397
|
+
createdAt
|
|
16398
|
+
feeTier
|
|
16399
|
+
strategyToken {
|
|
16400
|
+
id
|
|
16401
|
+
name
|
|
16402
|
+
creator {
|
|
16403
|
+
id
|
|
16404
|
+
}
|
|
16405
|
+
admin
|
|
16406
|
+
executionBundle
|
|
16407
|
+
}
|
|
16408
|
+
positions(first: 1, orderBy: timestamp, orderDirection: desc) {
|
|
16409
|
+
id
|
|
16410
|
+
upperTick
|
|
16411
|
+
lowerTick
|
|
16412
|
+
relativeWeight
|
|
16413
|
+
}
|
|
16414
|
+
fees0
|
|
16415
|
+
fees1
|
|
16416
|
+
beaconName
|
|
16417
|
+
payloadIpfs
|
|
16418
|
+
deployer
|
|
16419
|
+
}
|
|
16420
|
+
}`;
|
|
16380
16421
|
/**
|
|
16381
16422
|
* Utility class for fetching vault data from Steer subgraphs
|
|
16382
16423
|
*/
|
|
@@ -16507,6 +16548,29 @@ var SubgraphVaultClient = class {
|
|
|
16507
16548
|
};
|
|
16508
16549
|
}
|
|
16509
16550
|
/**
|
|
16551
|
+
* Fetches one vault by its address without enumerating the chain's vault set.
|
|
16552
|
+
*/
|
|
16553
|
+
async getVaultByAddress(options) {
|
|
16554
|
+
const { subgraphUrl, chainId, vaultAddress } = options;
|
|
16555
|
+
if (!vaultAddress) throw new Error("vaultAddress is required for an address lookup");
|
|
16556
|
+
const vault = (await (await fetch(subgraphUrl, {
|
|
16557
|
+
method: "POST",
|
|
16558
|
+
headers: {
|
|
16559
|
+
"Content-Type": "application/json",
|
|
16560
|
+
...subgraphUrl.includes("sentio") && this.SENTIO_API_KEY ? { "api-key": this.SENTIO_API_KEY } : {}
|
|
16561
|
+
},
|
|
16562
|
+
body: JSON.stringify({
|
|
16563
|
+
query: FIND_VAULT_BY_ADDRESS(vaultAddress.toLowerCase()),
|
|
16564
|
+
variables: {}
|
|
16565
|
+
})
|
|
16566
|
+
})).json())?.data?.vaults?.[0];
|
|
16567
|
+
if (!vault) return null;
|
|
16568
|
+
return this.transformSubgraphVaultToVaultNode({
|
|
16569
|
+
...vault,
|
|
16570
|
+
lpPriceData: this.createMockLpPriceData(vault)
|
|
16571
|
+
}, chainId, /* @__PURE__ */ new Map());
|
|
16572
|
+
}
|
|
16573
|
+
/**
|
|
16510
16574
|
* Fetch vault data from subgraph
|
|
16511
16575
|
*/
|
|
16512
16576
|
async getAllVaultsFromSubgraph(options) {
|
|
@@ -20490,6 +20554,45 @@ var VaultClient = class extends SubgraphClient {
|
|
|
20490
20554
|
}
|
|
20491
20555
|
return apiFilter;
|
|
20492
20556
|
}
|
|
20557
|
+
transformApiVaultNode(vault) {
|
|
20558
|
+
return {
|
|
20559
|
+
id: vault.id,
|
|
20560
|
+
chainId: vault.chainId,
|
|
20561
|
+
vaultAddress: vault.vaultAddress,
|
|
20562
|
+
protocol: vault.protocol,
|
|
20563
|
+
beaconName: vault.beaconName,
|
|
20564
|
+
protocolBaseType: vault.protocolBaseType,
|
|
20565
|
+
name: vault.name || "",
|
|
20566
|
+
feeApr: vault.feeApr || void 0,
|
|
20567
|
+
stakingApr: vault.stakingApr || void 0,
|
|
20568
|
+
merklApr: vault.merklApr || void 0,
|
|
20569
|
+
pool: {
|
|
20570
|
+
id: vault.pool?.id || "",
|
|
20571
|
+
poolAddress: vault.pool?.poolAddress || "",
|
|
20572
|
+
feeTier: vault.pool?.feeTier || "",
|
|
20573
|
+
tick: void 0,
|
|
20574
|
+
liquidity: void 0,
|
|
20575
|
+
volumeUSD: void 0,
|
|
20576
|
+
totalValueLockedUSD: void 0
|
|
20577
|
+
},
|
|
20578
|
+
token0: {
|
|
20579
|
+
id: vault.token0?.id || "",
|
|
20580
|
+
symbol: vault.token0?.symbol || "",
|
|
20581
|
+
name: vault.token0?.name || "",
|
|
20582
|
+
decimals: vault.token0?.decimals || 0,
|
|
20583
|
+
address: vault.token0?.address || "",
|
|
20584
|
+
chainId: vault.token0?.chainId || 0
|
|
20585
|
+
},
|
|
20586
|
+
token1: {
|
|
20587
|
+
id: vault.token1?.id || "",
|
|
20588
|
+
symbol: vault.token1?.symbol || "",
|
|
20589
|
+
name: vault.token1?.name || "",
|
|
20590
|
+
decimals: vault.token1?.decimals || 0,
|
|
20591
|
+
address: vault.token1?.address || "",
|
|
20592
|
+
chainId: vault.token1?.chainId || 0
|
|
20593
|
+
}
|
|
20594
|
+
};
|
|
20595
|
+
}
|
|
20493
20596
|
vaultMatchesProtocolFilter(vault, protocolFilter, resolvedProtocol) {
|
|
20494
20597
|
const normalizedFilter = this.normalizeProtocolValue(protocolFilter);
|
|
20495
20598
|
const normalizedBeaconName = this.normalizeProtocolValue(vault.beaconName);
|
|
@@ -20673,43 +20776,7 @@ var VaultClient = class extends SubgraphClient {
|
|
|
20673
20776
|
data: {
|
|
20674
20777
|
edges: response.data.vaults.edges.map((edge) => ({
|
|
20675
20778
|
cursor: edge.cursor,
|
|
20676
|
-
node:
|
|
20677
|
-
id: edge.node.id,
|
|
20678
|
-
chainId: edge.node.chainId,
|
|
20679
|
-
vaultAddress: edge.node.vaultAddress,
|
|
20680
|
-
protocol: edge.node.protocol,
|
|
20681
|
-
beaconName: edge.node.beaconName,
|
|
20682
|
-
protocolBaseType: edge.node.protocolBaseType,
|
|
20683
|
-
name: edge.node.name || "",
|
|
20684
|
-
feeApr: edge.node.feeApr || void 0,
|
|
20685
|
-
stakingApr: edge.node.stakingApr || void 0,
|
|
20686
|
-
merklApr: edge.node.merklApr || void 0,
|
|
20687
|
-
pool: {
|
|
20688
|
-
id: edge.node.pool?.id || "",
|
|
20689
|
-
poolAddress: edge.node.pool?.poolAddress || "",
|
|
20690
|
-
feeTier: edge.node.pool?.feeTier || "",
|
|
20691
|
-
tick: void 0,
|
|
20692
|
-
liquidity: void 0,
|
|
20693
|
-
volumeUSD: void 0,
|
|
20694
|
-
totalValueLockedUSD: void 0
|
|
20695
|
-
},
|
|
20696
|
-
token0: {
|
|
20697
|
-
id: edge.node.token0?.id || "",
|
|
20698
|
-
symbol: edge.node.token0?.symbol || "",
|
|
20699
|
-
name: edge.node.token0?.name || "",
|
|
20700
|
-
decimals: edge.node.token0?.decimals || 0,
|
|
20701
|
-
address: edge.node.token0?.address || "",
|
|
20702
|
-
chainId: edge.node.token0?.chainId || 0
|
|
20703
|
-
},
|
|
20704
|
-
token1: {
|
|
20705
|
-
id: edge.node.token1?.id || "",
|
|
20706
|
-
symbol: edge.node.token1?.symbol || "",
|
|
20707
|
-
name: edge.node.token1?.name || "",
|
|
20708
|
-
decimals: edge.node.token1?.decimals || 0,
|
|
20709
|
-
address: edge.node.token1?.address || "",
|
|
20710
|
-
chainId: edge.node.token1?.chainId || 0
|
|
20711
|
-
}
|
|
20712
|
-
}
|
|
20779
|
+
node: this.transformApiVaultNode(edge.node)
|
|
20713
20780
|
})),
|
|
20714
20781
|
pageInfo: {
|
|
20715
20782
|
hasNextPage: response.data.vaults.pageInfo.hasNextPage,
|
|
@@ -21246,21 +21313,62 @@ var VaultClient = class extends SubgraphClient {
|
|
|
21246
21313
|
};
|
|
21247
21314
|
}
|
|
21248
21315
|
async getVaultByAddress(vaultAddress, filter) {
|
|
21249
|
-
const
|
|
21250
|
-
|
|
21251
|
-
|
|
21252
|
-
});
|
|
21253
|
-
if (!response.success || !response.data) return {
|
|
21316
|
+
const chainId = filter?.chainId;
|
|
21317
|
+
const normalizedVaultAddress = this.normalizeAddress(vaultAddress);
|
|
21318
|
+
if (!chainId) return {
|
|
21254
21319
|
data: null,
|
|
21255
|
-
status:
|
|
21256
|
-
success:
|
|
21257
|
-
error:
|
|
21320
|
+
status: 400,
|
|
21321
|
+
success: false,
|
|
21322
|
+
error: "chainId is required for a direct vault address lookup"
|
|
21258
21323
|
};
|
|
21259
|
-
return {
|
|
21260
|
-
data:
|
|
21261
|
-
status:
|
|
21262
|
-
success:
|
|
21324
|
+
if (!normalizedVaultAddress || !(0, viem.isAddress)(vaultAddress)) return {
|
|
21325
|
+
data: null,
|
|
21326
|
+
status: 400,
|
|
21327
|
+
success: false,
|
|
21328
|
+
error: "vaultAddress must be a valid EVM address"
|
|
21263
21329
|
};
|
|
21330
|
+
try {
|
|
21331
|
+
const chain = chainIdToName(chainId);
|
|
21332
|
+
const subgraphUrl = chain ? steerSubgraphConfig[chain] : void 0;
|
|
21333
|
+
if (!subgraphUrl) throw new Error(`No subgraph configured for chainId: ${chainId}`);
|
|
21334
|
+
const node = await this.subgraphVaultClient.getVaultByAddress({
|
|
21335
|
+
subgraphUrl,
|
|
21336
|
+
chainId,
|
|
21337
|
+
vaultAddress: normalizedVaultAddress
|
|
21338
|
+
});
|
|
21339
|
+
return {
|
|
21340
|
+
data: node ? this.filterVaultNodes([node], {
|
|
21341
|
+
...filter,
|
|
21342
|
+
vaultAddress: normalizedVaultAddress
|
|
21343
|
+
})[0] || null : null,
|
|
21344
|
+
status: 200,
|
|
21345
|
+
success: true
|
|
21346
|
+
};
|
|
21347
|
+
} catch (error) {
|
|
21348
|
+
console.warn("Direct subgraph vault lookup failed, falling back to the API:", error);
|
|
21349
|
+
}
|
|
21350
|
+
try {
|
|
21351
|
+
const response = await this.apiClient.vault({
|
|
21352
|
+
id: normalizedVaultAddress,
|
|
21353
|
+
chainId
|
|
21354
|
+
});
|
|
21355
|
+
const vault = response.data?.vault;
|
|
21356
|
+
return {
|
|
21357
|
+
data: vault ? this.filterVaultNodes([this.transformApiVaultNode(vault)], {
|
|
21358
|
+
...filter,
|
|
21359
|
+
vaultAddress: normalizedVaultAddress
|
|
21360
|
+
})[0] || null : null,
|
|
21361
|
+
status: response.status,
|
|
21362
|
+
success: true
|
|
21363
|
+
};
|
|
21364
|
+
} catch (error) {
|
|
21365
|
+
return {
|
|
21366
|
+
data: null,
|
|
21367
|
+
status: 500,
|
|
21368
|
+
success: false,
|
|
21369
|
+
error: error instanceof Error ? error.message : "Direct vault lookup failed"
|
|
21370
|
+
};
|
|
21371
|
+
}
|
|
21264
21372
|
}
|
|
21265
21373
|
async getVaultsForPool(poolAddress, filter) {
|
|
21266
21374
|
return this.searchVaults({
|