@sentio/sdk 2.7.1-rc.1 → 2.7.1-rc.2
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.
@@ -19,3 +19,4 @@ export declare class AptosDex<T> {
|
|
19
19
|
syncPools(resources: MoveResource[], ctx: AptosResourceContext, poolsHandler?: (pools: TypedMoveResource<T>[]) => Promise<void> | void): Promise<void>;
|
20
20
|
}
|
21
21
|
export declare function getPair(coinx: string, coiny: string): Promise<string>;
|
22
|
+
export declare function getPairValue(ctx: AptosContext, coinx: string, coiny: string, coinXAmount: bigint, coinYAmount: bigint): Promise<BigDecimal>;
|
@@ -153,4 +153,29 @@ export async function getPair(coinx, coiny) {
|
|
153
153
|
}
|
154
154
|
return `${coinXInfo.symbol}-${coinYInfo.symbol}`;
|
155
155
|
}
|
156
|
+
export async function getPairValue(ctx, coinx, coiny, coinXAmount, coinYAmount) {
|
157
|
+
const whitelistx = whiteListed(coinx);
|
158
|
+
const whitelisty = whiteListed(coiny);
|
159
|
+
const coinXInfo = await getCoinInfo(coinx);
|
160
|
+
const coinYInfo = await getCoinInfo(coiny);
|
161
|
+
const timestamp = ctx.transaction.timestamp;
|
162
|
+
let result = BigDecimal(0.0);
|
163
|
+
if (!whitelistx || !whitelisty) {
|
164
|
+
return result;
|
165
|
+
}
|
166
|
+
if (whitelistx) {
|
167
|
+
const value = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp);
|
168
|
+
result = value;
|
169
|
+
if (!whitelisty) {
|
170
|
+
result = result.plus(value);
|
171
|
+
}
|
172
|
+
}
|
173
|
+
if (whitelisty) {
|
174
|
+
const value = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp);
|
175
|
+
if (!whitelistx) {
|
176
|
+
result = result.plus(value);
|
177
|
+
}
|
178
|
+
}
|
179
|
+
return result;
|
180
|
+
}
|
156
181
|
//# sourceMappingURL=aptos-dex.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"aptos-dex.js","sourceRoot":"","sources":["../../../src/aptos/ext/aptos-dex.ts"],"names":[],"mappings":"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","sourcesContent":["import { Gauge } from '@sentio/sdk'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { calculateValueInUsd, getCoinInfo, whitelistCoins, whiteListed } from './coin.js'\nimport {\n AptosResourceContext,\n TypedMoveResource,\n MoveResource,\n defaultMoveCoder,\n AptosContext,\n} from '@sentio/sdk/aptos'\n\nexport interface PoolAdaptor<T> {\n getXReserve(pool: T): bigint\n getYReserve(pool: T): bigint\n getExtraPoolTags(pool: TypedMoveResource<T>): any\n poolTypeName: string\n}\n\nexport class AptosDex<T> {\n poolAdaptor: PoolAdaptor<T>\n volume: Gauge\n volumeSingle: Gauge\n tvlAll: Gauge\n tvlByPool: Gauge\n tvlByCoin: Gauge\n\n constructor(\n volume: Gauge,\n volumeSingle: Gauge,\n tvlAll: Gauge,\n tvlByCoin: Gauge,\n tvlByPool: Gauge,\n poolAdaptor: PoolAdaptor<T>\n ) {\n this.volume = volume\n this.volumeSingle = volumeSingle\n this.tvlAll = tvlAll\n this.tvlByPool = tvlByPool\n this.tvlByCoin = tvlByCoin\n this.poolAdaptor = poolAdaptor\n }\n\n async recordTradingVolume(\n ctx: AptosContext,\n coinx: string,\n coiny: string,\n coinXAmount: bigint,\n coinYAmount: bigint,\n extraLabels?: any\n ): Promise<BigDecimal> {\n const whitelistx = whiteListed(coinx)\n const whitelisty = whiteListed(coiny)\n const coinXInfo = await getCoinInfo(coinx)\n const coinYInfo = await getCoinInfo(coiny)\n const timestamp = ctx.transaction.timestamp\n let result = new BigDecimal(0.0)\n const pair = await getPair(coinx, coiny)\n const baseLabels: Record<string, string> = extraLabels ? { ...extraLabels, pair } : { pair }\n if (!whitelistx || !whitelisty) {\n if (whitelistx) {\n result = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n this.volumeSingle.record(ctx, result, {\n ...baseLabels,\n coin: coinXInfo.symbol,\n type: coinXInfo.token_type.type,\n })\n }\n if (whitelisty) {\n result = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n this.volumeSingle.record(ctx, result, {\n ...baseLabels,\n coin: coinYInfo.symbol,\n type: coinYInfo.token_type.type,\n })\n }\n return result\n }\n\n // Both x and y are whitelisted\n let value = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n this.volume.record(ctx, value, {\n ...baseLabels,\n coin: coinXInfo.symbol,\n bridge: coinXInfo.bridge,\n type: coinXInfo.token_type.type,\n })\n value = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n this.volume.record(ctx, value, {\n ...baseLabels,\n coin: coinYInfo.symbol,\n bridge: coinYInfo.bridge,\n type: coinYInfo.token_type.type,\n })\n this.volumeSingle.record(ctx, value, { ...baseLabels, coin: coinYInfo.symbol, type: coinYInfo.token_type.type })\n return value\n }\n\n async syncPools(\n resources: MoveResource[],\n ctx: AptosResourceContext,\n poolsHandler?: (pools: TypedMoveResource<T>[]) => Promise<void> | void\n ) {\n const pools: TypedMoveResource<T>[] = defaultMoveCoder().filterAndDecodeResources(\n this.poolAdaptor.poolTypeName,\n resources\n )\n\n const volumeByCoin = new Map<string, BigDecimal>()\n const timestamp = ctx.timestampInMicros\n\n console.log('num of pools: ', pools.length, ctx.version.toString())\n\n let tvlAllValue = BigDecimal(0)\n for (const pool of pools) {\n // savePool(ctx.version, pool.type_arguments)\n const coinx = pool.type_arguments[0]\n const coiny = pool.type_arguments[1]\n const whitelistx = whiteListed(coinx)\n const whitelisty = whiteListed(coiny)\n if (!whitelistx && !whitelisty) {\n continue\n }\n\n const pair = await getPair(coinx, coiny)\n const extraLabels = this.poolAdaptor.getExtraPoolTags(pool)\n const baseLabels: Record<string, string> = { ...extraLabels, pair }\n\n const coinXInfo = await getCoinInfo(coinx)\n const coinYInfo = await getCoinInfo(coiny)\n\n const coinx_amount = this.poolAdaptor.getXReserve(pool.data_decoded)\n const coiny_amount = this.poolAdaptor.getYReserve(pool.data_decoded)\n\n let poolValue = BigDecimal(0)\n\n if (whitelistx) {\n const value = await calculateValueInUsd(coinx_amount, coinXInfo, timestamp)\n poolValue = poolValue.plus(value)\n // tvlTotal.record(ctx, value, { pool: poolName, type: coinXInfo.token_type.type })\n\n let coinXTotal = volumeByCoin.get(coinXInfo.token_type.type)\n if (!coinXTotal) {\n coinXTotal = value\n } else {\n coinXTotal = coinXTotal.plus(value)\n }\n volumeByCoin.set(coinXInfo.token_type.type, coinXTotal)\n\n if (!whitelisty) {\n poolValue = poolValue.plus(value)\n // tvlTotal.record(ctx, value, { pool: poolName, type: coinYInfo.token_type.type})\n }\n }\n if (whitelisty) {\n const value = await calculateValueInUsd(coiny_amount, coinYInfo, timestamp)\n poolValue = poolValue.plus(value)\n // tvlTotal.record(ctx, value, { pool: poolName, type: coinYInfo.token_type.type })\n\n let coinYTotal = volumeByCoin.get(coinYInfo.token_type.type)\n if (!coinYTotal) {\n coinYTotal = value\n } else {\n coinYTotal = coinYTotal.plus(value)\n }\n volumeByCoin.set(coinYInfo.token_type.type, coinYTotal)\n\n if (!whitelistx) {\n tvlAllValue = tvlAllValue.plus(value)\n // tvlTotal.record(ctx, value, { pool: poolName, type: coinXInfo.token_type.type })\n }\n }\n\n if (poolValue.isGreaterThan(0)) {\n this.tvlByPool.record(ctx, poolValue, baseLabels)\n }\n tvlAllValue = tvlAllValue.plus(poolValue)\n }\n this.tvlAll.record(ctx, tvlAllValue)\n\n if (poolsHandler) {\n poolsHandler(pools)\n }\n\n for (const [k, v] of volumeByCoin) {\n const coinInfo = whitelistCoins().get(k)\n if (!coinInfo) {\n throw Error('unexpected coin ' + k)\n }\n // const price = await getPrice(coinInfo, timestamp)\n // priceGauge.record(ctx, price, { coin: coinInfo.symbol })\n if (v.isGreaterThan(0)) {\n this.tvlByCoin.record(ctx, v, {\n coin: coinInfo.symbol,\n bridge: coinInfo.bridge,\n type: coinInfo.token_type.type,\n })\n }\n }\n }\n}\n\nexport async function getPair(coinx: string, coiny: string): Promise<string> {\n const coinXInfo = await getCoinInfo(coinx)\n const coinYInfo = await getCoinInfo(coiny)\n if (coinXInfo.symbol.localeCompare(coinYInfo.symbol) > 0) {\n return `${coinYInfo.symbol}-${coinXInfo.symbol}`\n }\n return `${coinXInfo.symbol}-${coinYInfo.symbol}`\n}\n"]}
|
1
|
+
{"version":3,"file":"aptos-dex.js","sourceRoot":"","sources":["../../../src/aptos/ext/aptos-dex.ts"],"names":[],"mappings":"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","sourcesContent":["import { Gauge } from '@sentio/sdk'\nimport { BigDecimal } from '@sentio/bigdecimal'\nimport { calculateValueInUsd, getCoinInfo, whitelistCoins, whiteListed } from './coin.js'\nimport {\n AptosResourceContext,\n TypedMoveResource,\n MoveResource,\n defaultMoveCoder,\n AptosContext,\n} from '@sentio/sdk/aptos'\n\nexport interface PoolAdaptor<T> {\n getXReserve(pool: T): bigint\n getYReserve(pool: T): bigint\n getExtraPoolTags(pool: TypedMoveResource<T>): any\n poolTypeName: string\n}\n\nexport class AptosDex<T> {\n poolAdaptor: PoolAdaptor<T>\n volume: Gauge\n volumeSingle: Gauge\n tvlAll: Gauge\n tvlByPool: Gauge\n tvlByCoin: Gauge\n\n constructor(\n volume: Gauge,\n volumeSingle: Gauge,\n tvlAll: Gauge,\n tvlByCoin: Gauge,\n tvlByPool: Gauge,\n poolAdaptor: PoolAdaptor<T>\n ) {\n this.volume = volume\n this.volumeSingle = volumeSingle\n this.tvlAll = tvlAll\n this.tvlByPool = tvlByPool\n this.tvlByCoin = tvlByCoin\n this.poolAdaptor = poolAdaptor\n }\n\n async recordTradingVolume(\n ctx: AptosContext,\n coinx: string,\n coiny: string,\n coinXAmount: bigint,\n coinYAmount: bigint,\n extraLabels?: any\n ): Promise<BigDecimal> {\n const whitelistx = whiteListed(coinx)\n const whitelisty = whiteListed(coiny)\n const coinXInfo = await getCoinInfo(coinx)\n const coinYInfo = await getCoinInfo(coiny)\n const timestamp = ctx.transaction.timestamp\n let result = new BigDecimal(0.0)\n const pair = await getPair(coinx, coiny)\n const baseLabels: Record<string, string> = extraLabels ? { ...extraLabels, pair } : { pair }\n if (!whitelistx || !whitelisty) {\n if (whitelistx) {\n result = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n this.volumeSingle.record(ctx, result, {\n ...baseLabels,\n coin: coinXInfo.symbol,\n type: coinXInfo.token_type.type,\n })\n }\n if (whitelisty) {\n result = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n this.volumeSingle.record(ctx, result, {\n ...baseLabels,\n coin: coinYInfo.symbol,\n type: coinYInfo.token_type.type,\n })\n }\n return result\n }\n\n // Both x and y are whitelisted\n let value = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n this.volume.record(ctx, value, {\n ...baseLabels,\n coin: coinXInfo.symbol,\n bridge: coinXInfo.bridge,\n type: coinXInfo.token_type.type,\n })\n value = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n this.volume.record(ctx, value, {\n ...baseLabels,\n coin: coinYInfo.symbol,\n bridge: coinYInfo.bridge,\n type: coinYInfo.token_type.type,\n })\n this.volumeSingle.record(ctx, value, { ...baseLabels, coin: coinYInfo.symbol, type: coinYInfo.token_type.type })\n return value\n }\n\n async syncPools(\n resources: MoveResource[],\n ctx: AptosResourceContext,\n poolsHandler?: (pools: TypedMoveResource<T>[]) => Promise<void> | void\n ) {\n const pools: TypedMoveResource<T>[] = defaultMoveCoder().filterAndDecodeResources(\n this.poolAdaptor.poolTypeName,\n resources\n )\n\n const volumeByCoin = new Map<string, BigDecimal>()\n const timestamp = ctx.timestampInMicros\n\n console.log('num of pools: ', pools.length, ctx.version.toString())\n\n let tvlAllValue = BigDecimal(0)\n for (const pool of pools) {\n // savePool(ctx.version, pool.type_arguments)\n const coinx = pool.type_arguments[0]\n const coiny = pool.type_arguments[1]\n const whitelistx = whiteListed(coinx)\n const whitelisty = whiteListed(coiny)\n if (!whitelistx && !whitelisty) {\n continue\n }\n\n const pair = await getPair(coinx, coiny)\n const extraLabels = this.poolAdaptor.getExtraPoolTags(pool)\n const baseLabels: Record<string, string> = { ...extraLabels, pair }\n\n const coinXInfo = await getCoinInfo(coinx)\n const coinYInfo = await getCoinInfo(coiny)\n\n const coinx_amount = this.poolAdaptor.getXReserve(pool.data_decoded)\n const coiny_amount = this.poolAdaptor.getYReserve(pool.data_decoded)\n\n let poolValue = BigDecimal(0)\n\n if (whitelistx) {\n const value = await calculateValueInUsd(coinx_amount, coinXInfo, timestamp)\n poolValue = poolValue.plus(value)\n // tvlTotal.record(ctx, value, { pool: poolName, type: coinXInfo.token_type.type })\n\n let coinXTotal = volumeByCoin.get(coinXInfo.token_type.type)\n if (!coinXTotal) {\n coinXTotal = value\n } else {\n coinXTotal = coinXTotal.plus(value)\n }\n volumeByCoin.set(coinXInfo.token_type.type, coinXTotal)\n\n if (!whitelisty) {\n poolValue = poolValue.plus(value)\n // tvlTotal.record(ctx, value, { pool: poolName, type: coinYInfo.token_type.type})\n }\n }\n if (whitelisty) {\n const value = await calculateValueInUsd(coiny_amount, coinYInfo, timestamp)\n poolValue = poolValue.plus(value)\n // tvlTotal.record(ctx, value, { pool: poolName, type: coinYInfo.token_type.type })\n\n let coinYTotal = volumeByCoin.get(coinYInfo.token_type.type)\n if (!coinYTotal) {\n coinYTotal = value\n } else {\n coinYTotal = coinYTotal.plus(value)\n }\n volumeByCoin.set(coinYInfo.token_type.type, coinYTotal)\n\n if (!whitelistx) {\n tvlAllValue = tvlAllValue.plus(value)\n // tvlTotal.record(ctx, value, { pool: poolName, type: coinXInfo.token_type.type })\n }\n }\n\n if (poolValue.isGreaterThan(0)) {\n this.tvlByPool.record(ctx, poolValue, baseLabels)\n }\n tvlAllValue = tvlAllValue.plus(poolValue)\n }\n this.tvlAll.record(ctx, tvlAllValue)\n\n if (poolsHandler) {\n poolsHandler(pools)\n }\n\n for (const [k, v] of volumeByCoin) {\n const coinInfo = whitelistCoins().get(k)\n if (!coinInfo) {\n throw Error('unexpected coin ' + k)\n }\n // const price = await getPrice(coinInfo, timestamp)\n // priceGauge.record(ctx, price, { coin: coinInfo.symbol })\n if (v.isGreaterThan(0)) {\n this.tvlByCoin.record(ctx, v, {\n coin: coinInfo.symbol,\n bridge: coinInfo.bridge,\n type: coinInfo.token_type.type,\n })\n }\n }\n }\n}\n\nexport async function getPair(coinx: string, coiny: string): Promise<string> {\n const coinXInfo = await getCoinInfo(coinx)\n const coinYInfo = await getCoinInfo(coiny)\n if (coinXInfo.symbol.localeCompare(coinYInfo.symbol) > 0) {\n return `${coinYInfo.symbol}-${coinXInfo.symbol}`\n }\n return `${coinXInfo.symbol}-${coinYInfo.symbol}`\n}\n\nexport async function getPairValue(\n ctx: AptosContext,\n coinx: string,\n coiny: string,\n coinXAmount: bigint,\n coinYAmount: bigint\n): Promise<BigDecimal> {\n const whitelistx = whiteListed(coinx)\n const whitelisty = whiteListed(coiny)\n const coinXInfo = await getCoinInfo(coinx)\n const coinYInfo = await getCoinInfo(coiny)\n const timestamp = ctx.transaction.timestamp\n let result = BigDecimal(0.0)\n\n if (!whitelistx || !whitelisty) {\n return result\n }\n\n if (whitelistx) {\n const value = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)\n result = value\n\n if (!whitelisty) {\n result = result.plus(value)\n }\n }\n if (whitelisty) {\n const value = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)\n\n if (!whitelistx) {\n result = result.plus(value)\n }\n }\n\n return result\n}\n"]}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sentio/sdk",
|
3
3
|
"license": "Apache-2.0",
|
4
|
-
"version": "2.7.1-rc.
|
4
|
+
"version": "2.7.1-rc.2",
|
5
5
|
"type": "module",
|
6
6
|
"scripts": {
|
7
7
|
"compile": "tsc && cp src/utils/*.csv lib/utils && cp src/tsup.config.ts lib",
|
@@ -23,8 +23,8 @@
|
|
23
23
|
"@project-serum/anchor": "^0.26.0",
|
24
24
|
"@sentio/bigdecimal": "^9.1.1-patch.3",
|
25
25
|
"@sentio/ethers-v6": "^1.0.25",
|
26
|
-
"@sentio/protos": "^2.7.1-rc.
|
27
|
-
"@sentio/runtime": "^2.7.1-rc.
|
26
|
+
"@sentio/protos": "^2.7.1-rc.2",
|
27
|
+
"@sentio/runtime": "^2.7.1-rc.2",
|
28
28
|
"@solana/web3.js": "^1.73.2",
|
29
29
|
"@types/prettier": "^2.7.2",
|
30
30
|
"aptos-sdk": "npm:aptos@^1.7.1",
|
@@ -80,5 +80,5 @@
|
|
80
80
|
"engines": {
|
81
81
|
"node": ">=16"
|
82
82
|
},
|
83
|
-
"gitHead": "
|
83
|
+
"gitHead": "b5ac7f2109b50d84448bf4f07aaa153104583623"
|
84
84
|
}
|
@@ -207,3 +207,40 @@ export async function getPair(coinx: string, coiny: string): Promise<string> {
|
|
207
207
|
}
|
208
208
|
return `${coinXInfo.symbol}-${coinYInfo.symbol}`
|
209
209
|
}
|
210
|
+
|
211
|
+
export async function getPairValue(
|
212
|
+
ctx: AptosContext,
|
213
|
+
coinx: string,
|
214
|
+
coiny: string,
|
215
|
+
coinXAmount: bigint,
|
216
|
+
coinYAmount: bigint
|
217
|
+
): Promise<BigDecimal> {
|
218
|
+
const whitelistx = whiteListed(coinx)
|
219
|
+
const whitelisty = whiteListed(coiny)
|
220
|
+
const coinXInfo = await getCoinInfo(coinx)
|
221
|
+
const coinYInfo = await getCoinInfo(coiny)
|
222
|
+
const timestamp = ctx.transaction.timestamp
|
223
|
+
let result = BigDecimal(0.0)
|
224
|
+
|
225
|
+
if (!whitelistx || !whitelisty) {
|
226
|
+
return result
|
227
|
+
}
|
228
|
+
|
229
|
+
if (whitelistx) {
|
230
|
+
const value = await calculateValueInUsd(coinXAmount, coinXInfo, timestamp)
|
231
|
+
result = value
|
232
|
+
|
233
|
+
if (!whitelisty) {
|
234
|
+
result = result.plus(value)
|
235
|
+
}
|
236
|
+
}
|
237
|
+
if (whitelisty) {
|
238
|
+
const value = await calculateValueInUsd(coinYAmount, coinYInfo, timestamp)
|
239
|
+
|
240
|
+
if (!whitelistx) {
|
241
|
+
result = result.plus(value)
|
242
|
+
}
|
243
|
+
}
|
244
|
+
|
245
|
+
return result
|
246
|
+
}
|