@clober/v2-sdk 1.0.0-rc.1 → 1.0.0-rc.10
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/cjs/constants/chain-configs/currency.js +37 -7
- package/dist/cjs/constants/chain-configs/currency.js.map +1 -1
- package/dist/cjs/entities/analytics/apis/index.js +7 -8
- package/dist/cjs/entities/analytics/apis/index.js.map +1 -1
- package/dist/cjs/entities/book/apis/index.js +38 -12
- package/dist/cjs/entities/book/apis/index.js.map +1 -1
- package/dist/cjs/entities/currency/apis/price.js +11 -1
- package/dist/cjs/entities/currency/apis/price.js.map +1 -1
- package/dist/cjs/entities/market/apis/snapshot.js +82 -34
- package/dist/cjs/entities/market/apis/snapshot.js.map +1 -1
- package/dist/cjs/entities/market/utils/market-id.js +1 -1
- package/dist/cjs/entities/market/utils/market-id.js.map +1 -1
- package/dist/cjs/utils/bigint.js +4 -1
- package/dist/cjs/utils/bigint.js.map +1 -1
- package/dist/cjs/utils/unit-size.js +1 -1
- package/dist/cjs/utils/unit-size.js.map +1 -1
- package/dist/cjs/views/address.js +1 -6
- package/dist/cjs/views/address.js.map +1 -1
- package/dist/cjs/views/currency.js +9 -1
- package/dist/cjs/views/currency.js.map +1 -1
- package/dist/cjs/views/index.js +3 -2
- package/dist/cjs/views/index.js.map +1 -1
- package/dist/cjs/views/market/chart-log.js +2 -2
- package/dist/esm/constants/chain-configs/currency.js +37 -7
- package/dist/esm/constants/chain-configs/currency.js.map +1 -1
- package/dist/esm/entities/analytics/apis/index.js +7 -8
- package/dist/esm/entities/analytics/apis/index.js.map +1 -1
- package/dist/esm/entities/book/apis/index.js +38 -12
- package/dist/esm/entities/book/apis/index.js.map +1 -1
- package/dist/esm/entities/currency/apis/price.js +9 -0
- package/dist/esm/entities/currency/apis/price.js.map +1 -1
- package/dist/esm/entities/market/apis/snapshot.js +83 -35
- package/dist/esm/entities/market/apis/snapshot.js.map +1 -1
- package/dist/esm/entities/market/utils/market-id.js +2 -2
- package/dist/esm/entities/market/utils/market-id.js.map +1 -1
- package/dist/esm/utils/bigint.js +2 -0
- package/dist/esm/utils/bigint.js.map +1 -1
- package/dist/esm/utils/unit-size.js +2 -2
- package/dist/esm/utils/unit-size.js.map +1 -1
- package/dist/esm/views/address.js +0 -16
- package/dist/esm/views/address.js.map +1 -1
- package/dist/esm/views/currency.js +20 -2
- package/dist/esm/views/currency.js.map +1 -1
- package/dist/esm/views/index.js +2 -2
- package/dist/esm/views/index.js.map +1 -1
- package/dist/esm/views/market/chart-log.js +2 -2
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/constants/chain-configs/currency.d.ts +4 -2
- package/dist/types/constants/chain-configs/currency.d.ts.map +1 -1
- package/dist/types/entities/analytics/apis/index.d.ts.map +1 -1
- package/dist/types/entities/analytics/types.d.ts +0 -1
- package/dist/types/entities/analytics/types.d.ts.map +1 -1
- package/dist/types/entities/book/apis/index.d.ts.map +1 -1
- package/dist/types/entities/currency/apis/price.d.ts +2 -0
- package/dist/types/entities/currency/apis/price.d.ts.map +1 -1
- package/dist/types/entities/market/apis/snapshot.d.ts.map +1 -1
- package/dist/types/entities/market/types.d.ts +2 -0
- package/dist/types/entities/market/types.d.ts.map +1 -1
- package/dist/types/utils/bigint.d.ts +1 -0
- package/dist/types/utils/bigint.d.ts.map +1 -1
- package/dist/types/views/address.d.ts +0 -15
- package/dist/types/views/address.d.ts.map +1 -1
- package/dist/types/views/currency.d.ts +23 -1
- package/dist/types/views/currency.d.ts.map +1 -1
- package/dist/types/views/index.d.ts +2 -2
- package/dist/types/views/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/cjs/entities/book/apis/open.js +0 -46
- package/dist/cjs/entities/book/apis/open.js.map +0 -1
- package/dist/esm/entities/book/apis/open.js +0 -42
- package/dist/esm/entities/book/apis/open.js.map +0 -1
- package/dist/types/entities/book/apis/open.d.ts +0 -4
- package/dist/types/entities/book/apis/open.d.ts.map +0 -1
|
@@ -1,14 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.getContractAddresses = void 0;
|
|
4
4
|
const addresses_1 = require("../constants/chain-configs/addresses");
|
|
5
|
-
const currency_1 = require("../constants/chain-configs/currency");
|
|
6
5
|
const getContractAddresses = ({ chainId }) => {
|
|
7
6
|
return addresses_1.CONTRACT_ADDRESSES[chainId];
|
|
8
7
|
};
|
|
9
8
|
exports.getContractAddresses = getContractAddresses;
|
|
10
|
-
const getReferenceTokenAddress = ({ chainId, }) => {
|
|
11
|
-
return currency_1.WETH_ADDRESS[chainId];
|
|
12
|
-
};
|
|
13
|
-
exports.getReferenceTokenAddress = getReferenceTokenAddress;
|
|
14
9
|
//# sourceMappingURL=address.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/views/address.ts"],"names":[],"mappings":";;;AACA,oEAAyE;
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/views/address.ts"],"names":[],"mappings":";;;AACA,oEAAyE;AAclE,MAAM,oBAAoB,GAAG,CAAC,EAAE,OAAO,EAA0B,EAAE,EAAE;IAC1E,OAAO,8BAAkB,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC,CAAA;AAFY,QAAA,oBAAoB,wBAEhC"}
|
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getDailyClosePriceMap = exports.getLatestPriceMap = exports.getNativeCurrency = void 0;
|
|
3
|
+
exports.getDailyClosePriceMap = exports.getLatestPriceMap = exports.getCurrencies = exports.getReferenceCurrency = exports.getNativeCurrency = void 0;
|
|
4
4
|
const currency_1 = require("../constants/chain-configs/currency");
|
|
5
5
|
const price_1 = require("../entities/currency/apis/price");
|
|
6
6
|
const getNativeCurrency = ({ chainId, }) => {
|
|
7
7
|
return currency_1.NATIVE_CURRENCY[chainId];
|
|
8
8
|
};
|
|
9
9
|
exports.getNativeCurrency = getNativeCurrency;
|
|
10
|
+
const getReferenceCurrency = ({ chainId, }) => {
|
|
11
|
+
return currency_1.REFERENCE_CURRENCY[chainId];
|
|
12
|
+
};
|
|
13
|
+
exports.getReferenceCurrency = getReferenceCurrency;
|
|
14
|
+
const getCurrencies = ({ chainId, }) => {
|
|
15
|
+
return (0, price_1.fetchCurrencies)(chainId);
|
|
16
|
+
};
|
|
17
|
+
exports.getCurrencies = getCurrencies;
|
|
10
18
|
const getLatestPriceMap = async ({ chainId, }) => {
|
|
11
19
|
return (0, price_1.fetchCurrentPriceMap)(chainId);
|
|
12
20
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../src/views/currency.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../src/views/currency.ts"],"names":[],"mappings":";;;AACA,kEAG4C;AAE5C,2DAIwC;AAcjC,MAAM,iBAAiB,GAAG,CAAC,EAChC,OAAO,GAGR,EAAsC,EAAE;IACvC,OAAO,0BAAe,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC,CAAA;AANY,QAAA,iBAAiB,qBAM7B;AAcM,MAAM,oBAAoB,GAAG,CAAC,EACnC,OAAO,GAGR,EAAsC,EAAE;IACvC,OAAO,6BAAkB,CAAC,OAAO,CAAC,CAAA;AACpC,CAAC,CAAA;AANY,QAAA,oBAAoB,wBAMhC;AAEM,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,GAGR,EAAuB,EAAE;IACxB,OAAO,IAAA,uBAAe,EAAC,OAAO,CAAC,CAAA;AACjC,CAAC,CAAA;AANY,QAAA,aAAa,iBAMzB;AAEM,MAAM,iBAAiB,GAAG,KAAK,EAAE,EACtC,OAAO,GAGR,EAAiD,EAAE;IAClD,OAAO,IAAA,4BAAoB,EAAC,OAAO,CAAC,CAAA;AACtC,CAAC,CAAA;AANY,QAAA,iBAAiB,qBAM7B;AAEM,MAAM,qBAAqB,GAAG,KAAK,EAAE,EAC1C,OAAO,EACP,kBAAkB,GAInB,EAAiD,EAAE;IAClD,OAAO,IAAA,qCAA6B,EAAC,OAAO,EAAE,kBAAkB,CAAC,CAAA;AACnE,CAAC,CAAA;AARY,QAAA,qBAAqB,yBAQjC"}
|
package/dist/cjs/views/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getUserDailyVolumes = exports.getProtocolAnalytics = exports.getDailyClosePriceMap = exports.getLatestPriceMap = exports.
|
|
3
|
+
exports.getUserDailyVolumes = exports.getProtocolAnalytics = exports.getDailyClosePriceMap = exports.getLatestPriceMap = exports.getCurrencies = exports.getReferenceCurrency = exports.getNativeCurrency = exports.getContractAddresses = exports.getSubgraphBlockNumber = exports.getSubgraphEndpoint = exports.getOpenOrders = exports.getOpenOrder = exports.getPriceNeighborhood = exports.getLastAmounts = exports.getStrategyPrice = exports.getPoolSnapshots = exports.getPoolSnapshot = exports.getPool = exports.getQuoteToken = exports.getMarketSnapshot = exports.getMarketSnapshots = exports.getExpectedInput = exports.getExpectedOutput = exports.getLatestChartLog = exports.getChartLogs = exports.getMarket = void 0;
|
|
4
4
|
var market_1 = require("./market");
|
|
5
5
|
Object.defineProperty(exports, "getMarket", { enumerable: true, get: function () { return market_1.getMarket; } });
|
|
6
6
|
Object.defineProperty(exports, "getChartLogs", { enumerable: true, get: function () { return market_1.getChartLogs; } });
|
|
@@ -26,9 +26,10 @@ Object.defineProperty(exports, "getSubgraphEndpoint", { enumerable: true, get: f
|
|
|
26
26
|
Object.defineProperty(exports, "getSubgraphBlockNumber", { enumerable: true, get: function () { return subgraph_1.getSubgraphBlockNumber; } });
|
|
27
27
|
var address_1 = require("./address");
|
|
28
28
|
Object.defineProperty(exports, "getContractAddresses", { enumerable: true, get: function () { return address_1.getContractAddresses; } });
|
|
29
|
-
Object.defineProperty(exports, "getReferenceTokenAddress", { enumerable: true, get: function () { return address_1.getReferenceTokenAddress; } });
|
|
30
29
|
var currency_1 = require("./currency");
|
|
31
30
|
Object.defineProperty(exports, "getNativeCurrency", { enumerable: true, get: function () { return currency_1.getNativeCurrency; } });
|
|
31
|
+
Object.defineProperty(exports, "getReferenceCurrency", { enumerable: true, get: function () { return currency_1.getReferenceCurrency; } });
|
|
32
|
+
Object.defineProperty(exports, "getCurrencies", { enumerable: true, get: function () { return currency_1.getCurrencies; } });
|
|
32
33
|
Object.defineProperty(exports, "getLatestPriceMap", { enumerable: true, get: function () { return currency_1.getLatestPriceMap; } });
|
|
33
34
|
Object.defineProperty(exports, "getDailyClosePriceMap", { enumerable: true, get: function () { return currency_1.getDailyClosePriceMap; } });
|
|
34
35
|
var analytics_1 = require("./analytics");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":";;;AAAA,mCASiB;AARf,mGAAA,SAAS,OAAA;AACT,sGAAA,YAAY,OAAA;AACZ,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAEf,+BAMe;AALb,+FAAA,OAAO,OAAA;AACP,uGAAA,eAAe,OAAA;AACf,wGAAA,gBAAgB,OAAA;AAChB,wGAAA,gBAAgB,OAAA;AAChB,sGAAA,cAAc,OAAA;AAGhB,+BAA6C;AAApC,4GAAA,oBAAoB,OAAA;AAC7B,2CAA0D;AAAjD,0GAAA,YAAY,OAAA;AAAE,2GAAA,aAAa,OAAA;AACpC,uCAAwE;AAA/D,+GAAA,mBAAmB,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AACpD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":";;;AAAA,mCASiB;AARf,mGAAA,SAAS,OAAA;AACT,sGAAA,YAAY,OAAA;AACZ,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,0GAAA,gBAAgB,OAAA;AAChB,4GAAA,kBAAkB,OAAA;AAClB,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAEf,+BAMe;AALb,+FAAA,OAAO,OAAA;AACP,uGAAA,eAAe,OAAA;AACf,wGAAA,gBAAgB,OAAA;AAChB,wGAAA,gBAAgB,OAAA;AAChB,sGAAA,cAAc,OAAA;AAGhB,+BAA6C;AAApC,4GAAA,oBAAoB,OAAA;AAC7B,2CAA0D;AAAjD,0GAAA,YAAY,OAAA;AAAE,2GAAA,aAAa,OAAA;AACpC,uCAAwE;AAA/D,+GAAA,mBAAmB,OAAA;AAAE,kHAAA,sBAAsB,OAAA;AACpD,qCAAgD;AAAvC,+GAAA,oBAAoB,OAAA;AAC7B,uCAMmB;AALjB,6GAAA,iBAAiB,OAAA;AACjB,gHAAA,oBAAoB,OAAA;AACpB,yGAAA,aAAa,OAAA;AACb,6GAAA,iBAAiB,OAAA;AACjB,iHAAA,qBAAqB,OAAA;AAEvB,yCAAuE;AAA9D,iHAAA,oBAAoB,OAAA;AAAE,gHAAA,mBAAmB,OAAA"}
|
|
@@ -3,11 +3,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.getChartLogs = exports.getLatestChartLog = void 0;
|
|
4
4
|
const chart_log_1 = require("../../entities/market/apis/chart-log");
|
|
5
5
|
const getLatestChartLog = async ({ chainId, quote, base, }) => {
|
|
6
|
-
return (0, chart_log_1.fetchLatestChartLog)(chainId, `${base}
|
|
6
|
+
return (0, chart_log_1.fetchLatestChartLog)(chainId, `${base}-${quote}`);
|
|
7
7
|
};
|
|
8
8
|
exports.getLatestChartLog = getLatestChartLog;
|
|
9
9
|
const getChartLogs = async ({ chainId, quote, base, intervalType, from, to, }) => {
|
|
10
|
-
return (0, chart_log_1.fetchChartLogs)(chainId, `${base}
|
|
10
|
+
return (0, chart_log_1.fetchChartLogs)(chainId, `${base}-${quote}`, intervalType, from, to);
|
|
11
11
|
};
|
|
12
12
|
exports.getChartLogs = getChartLogs;
|
|
13
13
|
//# sourceMappingURL=chart-log.js.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { zeroAddress } from 'viem';
|
|
1
|
+
import { getAddress, zeroAddress } from 'viem';
|
|
2
2
|
import { CHAIN_IDS } from './chain';
|
|
3
3
|
export const ETH = {
|
|
4
4
|
address: zeroAddress,
|
|
@@ -29,14 +29,44 @@ export const NATIVE_CURRENCY = {
|
|
|
29
29
|
},
|
|
30
30
|
// [CHAIN_IDS.SONIC_MAINNET]: S,
|
|
31
31
|
};
|
|
32
|
-
export const
|
|
33
|
-
[CHAIN_IDS.CLOBER_TESTNET]:
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
export const REFERENCE_CURRENCY = {
|
|
33
|
+
[CHAIN_IDS.CLOBER_TESTNET]: {
|
|
34
|
+
address: getAddress('0xF2e615A933825De4B39b497f6e6991418Fb31b78'), // Mock WETH
|
|
35
|
+
symbol: 'WETH',
|
|
36
|
+
name: 'Wrapped Ether',
|
|
37
|
+
decimals: 18,
|
|
38
|
+
totalSupply: 120000000000000000000000000n, // 120M
|
|
39
|
+
},
|
|
40
|
+
[CHAIN_IDS.CLOBER_TESTNET_2]: {
|
|
41
|
+
address: getAddress('0xF2e615A933825De4B39b497f6e6991418Fb31b78'), // Mock WETH
|
|
42
|
+
symbol: 'WETH',
|
|
43
|
+
name: 'Wrapped Ether',
|
|
44
|
+
decimals: 18,
|
|
45
|
+
totalSupply: 120000000000000000000000000n, // 120M
|
|
46
|
+
},
|
|
47
|
+
[CHAIN_IDS.ARBITRUM_SEPOLIA]: {
|
|
48
|
+
address: getAddress('0xF2e615A933825De4B39b497f6e6991418Fb31b78'), // Mock WETH
|
|
49
|
+
symbol: 'WETH',
|
|
50
|
+
name: 'Wrapped Ether',
|
|
51
|
+
decimals: 18,
|
|
52
|
+
totalSupply: 120000000000000000000000000n, // 120M
|
|
53
|
+
},
|
|
36
54
|
// [CHAIN_IDS.BASE]: '0x4200000000000000000000000000000000000006',
|
|
37
55
|
// [CHAIN_IDS.BERACHAIN_MAINNET]: '0x6969696969696969696969696969696969696969', // WBERA
|
|
38
|
-
[CHAIN_IDS.RISE_SEPOLIA]:
|
|
39
|
-
|
|
56
|
+
[CHAIN_IDS.RISE_SEPOLIA]: {
|
|
57
|
+
address: getAddress('0x4200000000000000000000000000000000000006'), // Mock WETH
|
|
58
|
+
symbol: 'WETH',
|
|
59
|
+
name: 'Wrapped Ether',
|
|
60
|
+
decimals: 18,
|
|
61
|
+
totalSupply: 120000000000000000000000000n, // 120M
|
|
62
|
+
},
|
|
63
|
+
[CHAIN_IDS.MONAD_TESTNET]: {
|
|
64
|
+
address: getAddress('0x760AfE86e5de5fa0Ee542fc7B7B713e1c5425701'), // WMON
|
|
65
|
+
symbol: 'WMON',
|
|
66
|
+
name: 'Wrapped Monad',
|
|
67
|
+
decimals: 18,
|
|
68
|
+
totalSupply: 10000000000000000000000000000n, // 10B
|
|
69
|
+
},
|
|
40
70
|
// [CHAIN_IDS.SONIC_MAINNET]: '0x039e2fB66102314Ce7b64Ce5Ce3E5183bc94aD38', // wS
|
|
41
71
|
};
|
|
42
72
|
// @dev: https://defillama.com/stablecoins
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../../src/constants/chain-configs/currency.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../../src/constants/chain-configs/currency.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ const FUNCTION_SIG_MAP = {
|
|
|
14
14
|
'0xf4dfd83a': 'unknown', // arbitrage
|
|
15
15
|
};
|
|
16
16
|
export async function fetchProtocolAnalytics(chainId) {
|
|
17
|
-
const { data: { cloberDayDatas }, } = await Subgraph.get(chainId, 'getDailyCloberSnapshot', 'query getDailyCloberSnapshot { cloberDayDatas(orderBy: date, orderDirection: asc) { date walletCount newWalletCount transactionTypes { type txCount }
|
|
17
|
+
const { data: { cloberDayDatas }, } = await Subgraph.get(chainId, 'getDailyCloberSnapshot', 'query getDailyCloberSnapshot { cloberDayDatas(orderBy: date, orderDirection: asc) { date walletCount newWalletCount transactionTypes { type txCount } tokenDayDatas { volumeUSD totalValueLockedUSD protocolFeesUSD token { id name symbol decimals priceUSD } } } }', {});
|
|
18
18
|
const analyticsSnapshots = cloberDayDatas.map((item) => ({
|
|
19
19
|
timestamp: item.date,
|
|
20
20
|
activeUsers: Number(item.walletCount),
|
|
@@ -23,8 +23,8 @@ export async function fetchProtocolAnalytics(chainId) {
|
|
|
23
23
|
FUNCTION_SIG_MAP[transactionType.type] ?? 'unknown',
|
|
24
24
|
Number(transactionType.txCount),
|
|
25
25
|
])),
|
|
26
|
-
volume24hUSD: item.
|
|
27
|
-
volume24hUSDMap: Object.fromEntries(item.
|
|
26
|
+
volume24hUSD: item.tokenDayDatas.reduce((acc, token) => acc + Number(token.volumeUSD), 0),
|
|
27
|
+
volume24hUSDMap: Object.fromEntries(item.tokenDayDatas.map((token) => [
|
|
28
28
|
getAddress(token.token.id),
|
|
29
29
|
{
|
|
30
30
|
currency: {
|
|
@@ -36,8 +36,8 @@ export async function fetchProtocolAnalytics(chainId) {
|
|
|
36
36
|
usd: Number(token.volumeUSD),
|
|
37
37
|
},
|
|
38
38
|
])),
|
|
39
|
-
protocolFees24hUSD: item.
|
|
40
|
-
protocolFees24hUSDMap: Object.fromEntries(item.
|
|
39
|
+
protocolFees24hUSD: item.tokenDayDatas.reduce((acc, token) => acc + Number(token.protocolFeesUSD), 0),
|
|
40
|
+
protocolFees24hUSDMap: Object.fromEntries(item.tokenDayDatas.map((token) => [
|
|
41
41
|
getAddress(token.token.id),
|
|
42
42
|
{
|
|
43
43
|
currency: {
|
|
@@ -49,8 +49,8 @@ export async function fetchProtocolAnalytics(chainId) {
|
|
|
49
49
|
usd: Number(token.protocolFeesUSD),
|
|
50
50
|
},
|
|
51
51
|
])),
|
|
52
|
-
totalValueLockedUSD: item.
|
|
53
|
-
totalValueLockedUSDMap: Object.fromEntries(item.
|
|
52
|
+
totalValueLockedUSD: item.tokenDayDatas.reduce((acc, token) => acc + Number(token.totalValueLockedUSD), 0),
|
|
53
|
+
totalValueLockedUSDMap: Object.fromEntries(item.tokenDayDatas.map((token) => [
|
|
54
54
|
getAddress(token.token.id),
|
|
55
55
|
{
|
|
56
56
|
currency: {
|
|
@@ -69,7 +69,6 @@ export async function fetchProtocolAnalytics(chainId) {
|
|
|
69
69
|
Object.values(item.transactionTypeCounts).reduce((acc, item) => acc + item, 0), 0),
|
|
70
70
|
accumulatedVolumeUSD: analyticsSnapshots.reduce((acc, item) => acc + item.volume24hUSD, 0),
|
|
71
71
|
accumulatedProtocolFeesUSD: analyticsSnapshots.reduce((acc, item) => acc + item.protocolFees24hUSD, 0),
|
|
72
|
-
accumulatedTotalValueLockedUSD: analyticsSnapshots.reduce((acc, item) => acc + item.totalValueLockedUSD, 0),
|
|
73
72
|
analyticsSnapshots,
|
|
74
73
|
};
|
|
75
74
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/analytics/apis/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAA;AAuCpE,MAAM,gBAAgB,GAAoC;IACxD,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,OAAO;IACrB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,QAAQ;IACtB,YAAY,EAAE,eAAe;IAC7B,YAAY,EAAE,kBAAkB;IAChC,YAAY,EAAE,MAAM;IACpB,YAAY,EAAE,SAAS,EAAE,kBAAkB;IAC3C,YAAY,EAAE,SAAS,EAAE,QAAQ;IACjC,YAAY,EAAE,SAAS,EAAE,YAAY;CACtC,CAAA;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,OAAkB;IAElB,MAAM,EACJ,IAAI,EAAE,EAAE,cAAc,EAAE,GACzB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAKpB,OAAO,EACP,wBAAwB,EACxB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/analytics/apis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,6 @@ import { BOOK_VIEWER_ABI } from '../../../constants/abis/core/book-viewer-abi';
|
|
|
4
4
|
import { Subgraph } from '../../../constants/chain-configs/subgraph';
|
|
5
5
|
import { toBookId } from '../utils/book-id';
|
|
6
6
|
import { BookModel } from '../model';
|
|
7
|
-
import { fetchIsMarketOpened } from './open';
|
|
8
7
|
export const fetchBook = async (publicClient, chainId, quoteCurrency, baseCurrency, useSubgraph, n) => {
|
|
9
8
|
const unitSize = calculateUnitSize(chainId, quoteCurrency);
|
|
10
9
|
const bookId = toBookId(chainId, quoteCurrency.address, baseCurrency.address, unitSize);
|
|
@@ -27,26 +26,53 @@ export const fetchBook = async (publicClient, chainId, quoteCurrency, baseCurren
|
|
|
27
26
|
isOpened: book !== null,
|
|
28
27
|
});
|
|
29
28
|
}
|
|
30
|
-
const [depths, isOpened] = await
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
const [{ result: depths }, { result: isOpened }] = await publicClient.multicall({
|
|
30
|
+
contracts: [
|
|
31
|
+
{
|
|
32
|
+
address: CONTRACT_ADDRESSES[chainId].BookViewer,
|
|
33
|
+
abi: BOOK_VIEWER_ABI,
|
|
34
|
+
functionName: 'getLiquidity',
|
|
35
|
+
args: [bookId, Number(2n ** 19n - 1n), BigInt(n)],
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
address: CONTRACT_ADDRESSES[chainId].BookManager,
|
|
39
|
+
abi: [
|
|
40
|
+
{
|
|
41
|
+
inputs: [
|
|
42
|
+
{
|
|
43
|
+
internalType: 'BookId',
|
|
44
|
+
name: 'id',
|
|
45
|
+
type: 'uint192',
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
name: 'isOpened',
|
|
49
|
+
outputs: [
|
|
50
|
+
{
|
|
51
|
+
internalType: 'bool',
|
|
52
|
+
name: '',
|
|
53
|
+
type: 'bool',
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
stateMutability: 'view',
|
|
57
|
+
type: 'function',
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
functionName: 'isOpened',
|
|
61
|
+
args: [bookId],
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
});
|
|
39
65
|
return new BookModel({
|
|
40
66
|
chainId,
|
|
41
67
|
id: bookId,
|
|
42
68
|
base: baseCurrency,
|
|
43
69
|
quote: quoteCurrency,
|
|
44
70
|
unitSize,
|
|
45
|
-
depths: depths.map(({ tick, depth }) => ({
|
|
71
|
+
depths: (depths ?? []).map(({ tick, depth }) => ({
|
|
46
72
|
tick: BigInt(tick),
|
|
47
73
|
unitAmount: depth,
|
|
48
74
|
})),
|
|
49
|
-
isOpened,
|
|
75
|
+
isOpened: isOpened ?? false,
|
|
50
76
|
});
|
|
51
77
|
};
|
|
52
78
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/book/apis/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAA;AAC/E,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAA;AAC9E,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAA;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAEpC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/book/apis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { getAddress } from 'viem';
|
|
2
2
|
import { Subgraph } from '../../../constants/chain-configs/subgraph';
|
|
3
3
|
import { getDailyStartTimestampInSeconds } from '../../../utils/time';
|
|
4
|
+
export const fetchCurrencies = async (chainId) => {
|
|
5
|
+
const { data: { tokens }, } = await Subgraph.get(chainId, 'getCurrencies', 'query getCurrencies { tokens { id name symbol decimals } }', {});
|
|
6
|
+
return tokens.map((token) => ({
|
|
7
|
+
address: getAddress(token.id),
|
|
8
|
+
name: token.name,
|
|
9
|
+
symbol: token.symbol,
|
|
10
|
+
decimals: Number(token.decimals),
|
|
11
|
+
}));
|
|
12
|
+
};
|
|
4
13
|
export const fetchCurrentPriceMap = async (chainId) => {
|
|
5
14
|
const { data: { tokens }, } = await Subgraph.get(chainId, 'getCurrentTokenPrice', 'query getCurrentTokenPrices { tokens(where: {priceUSD_gt: 0}) { id priceUSD } }', {});
|
|
6
15
|
return tokens.reduce((acc, token) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"price.js","sourceRoot":"","sources":["../../../../../src/entities/currency/apis/price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAA;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAA;
|
|
1
|
+
{"version":3,"file":"price.js","sourceRoot":"","sources":["../../../../../src/entities/currency/apis/price.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAGjC,OAAO,EAAE,QAAQ,EAAE,MAAM,2CAA2C,CAAA;AACpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAA;AAGrE,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAClC,OAAkB,EACG,EAAE;IACvB,MAAM,EACJ,IAAI,EAAE,EAAE,MAAM,EAAE,GACjB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAUpB,OAAO,EACP,eAAe,EACf,4DAA4D,EAC5D,EAAE,CACH,CAAA;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5B,OAAO,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;KACjC,CAAC,CAAC,CAAA;AACL,CAAC,CAAA;AACD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,EACvC,OAAkB,EAGjB,EAAE;IACH,MAAM,EACJ,IAAI,EAAE,EAAE,MAAM,EAAE,GACjB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAQpB,OAAO,EACP,sBAAsB,EACtB,iFAAiF,EACjF,EAAE,CACH,CAAA;IAED,OAAO,MAAM,CAAC,MAAM,CAClB,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QACb,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;QACtD,OAAO,GAAG,CAAA;IACZ,CAAC,EACD,EAEC,CACF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAChD,OAAkB,EAClB,kBAA0B,EAGzB,EAAE;IACH,MAAM,iBAAiB,GAAG,+BAA+B,CAAC,kBAAkB,CAAC,CAAA;IAE7E,MAAM,EACJ,IAAI,EAAE,EAAE,aAAa,EAAE,GACxB,GAAG,MAAM,QAAQ,CAAC,GAAG,CAUpB,OAAO,EACP,kBAAkB,EAClB,uHAAuH,EACvH;QACE,IAAI,EAAE,iBAAiB;KACxB,CACF,CAAA;IAED,OAAO,aAAa,CAAC,MAAM,CACzB,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC3B,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAA;QAChD,OAAO,GAAG,CAAA;IACZ,CAAC,EACD,EAEC,CACF,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -1,18 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { getAddress, isAddressEqual } from 'viem';
|
|
2
2
|
import { Subgraph } from '../../../constants/chain-configs/subgraph';
|
|
3
3
|
import { getQuoteToken } from '../../../views';
|
|
4
4
|
import { fetchTotalSupplyMap } from '../../currency/apis/total-supply';
|
|
5
5
|
import { getDailyStartTimestampInSeconds } from '../../../utils/time';
|
|
6
|
+
import { convertTokenToDecimal } from '../../../utils/bigint';
|
|
6
7
|
export const fetchMarketSnapshot = async (publicClient, chainId, token0, token1, timestampInSeconds) => {
|
|
7
8
|
const dayStartTimestamp = getDailyStartTimestampInSeconds(timestampInSeconds);
|
|
8
|
-
const { data: { bookDayDatas }, } = await Subgraph.get(chainId, 'getTopMarketSnapshot', 'query getMarkets($date: Int!, $bases: [String!]!, $quotes: [String!]!) { bookDayDatas( first: 200 orderBy: volumeUSD orderDirection: desc where: {date: $date, book_: {base_in: $bases, quote_in: $quotes}} ) { volumeUSD open close book { id totalValueLockedUSD price inversePrice base { id name symbol decimals priceUSD } quote { id name symbol decimals priceUSD } createdAtTimestamp } } }', {
|
|
9
|
+
const { data: { bookDayDatas }, } = await Subgraph.get(chainId, 'getTopMarketSnapshot', 'query getMarkets($date: Int!, $bases: [String!]!, $quotes: [String!]!) { bookDayDatas( first: 200 orderBy: volumeUSD orderDirection: desc where: {date: $date, book_: {base_in: $bases, quote_in: $quotes}} ) { volumeUSD open close book { id totalValueLockedUSD price inversePrice lastTakenTimestamp base { id name symbol decimals priceUSD } quote { id name symbol decimals priceUSD } createdAtTimestamp } } }', {
|
|
9
10
|
date: dayStartTimestamp,
|
|
10
11
|
bases: [token0, token1].map((address) => address.toLowerCase()),
|
|
11
12
|
quotes: [token0, token1].map((address) => address.toLowerCase()),
|
|
12
13
|
});
|
|
13
14
|
if (bookDayDatas.length >= 3) {
|
|
14
15
|
// TODO: check fee policy if needed
|
|
15
|
-
|
|
16
|
+
console.warn(`[fetchMarketSnapshot] too many bookDayDatas for ${token0}/${token1}`);
|
|
16
17
|
}
|
|
17
18
|
const totalSupplyMap = await fetchTotalSupplyMap(publicClient, chainId, [token0, token1].map((address) => getAddress(address)));
|
|
18
19
|
const bidBook = bookDayDatas.find(({ book: { quote, base } }) => isAddressEqual(getAddress(quote.id), getQuoteToken({
|
|
@@ -26,7 +27,9 @@ export const fetchMarketSnapshot = async (publicClient, chainId, token0, token1,
|
|
|
26
27
|
token1: getAddress(base.id),
|
|
27
28
|
})));
|
|
28
29
|
if (bidBook && askBook) {
|
|
29
|
-
const baseTotalSupply =
|
|
30
|
+
const baseTotalSupply = convertTokenToDecimal(BigInt(totalSupplyMap[getAddress(bidBook.book.base.id)] ?? 0n), Number(bidBook.book.base.decimals));
|
|
31
|
+
const isBidNewer = Number(bidBook.book.lastTakenTimestamp) >=
|
|
32
|
+
Number(askBook.book.lastTakenTimestamp);
|
|
30
33
|
return {
|
|
31
34
|
chainId,
|
|
32
35
|
marketId: `${bidBook.book.base.symbol}/${bidBook.book.quote.symbol}`,
|
|
@@ -42,22 +45,31 @@ export const fetchMarketSnapshot = async (publicClient, chainId, token0, token1,
|
|
|
42
45
|
symbol: bidBook.book.quote.symbol,
|
|
43
46
|
decimals: Number(bidBook.book.quote.decimals),
|
|
44
47
|
},
|
|
45
|
-
price:
|
|
46
|
-
|
|
47
|
-
Number(askBook.book.
|
|
48
|
-
|
|
48
|
+
price: isBidNewer
|
|
49
|
+
? Number(bidBook.book.price)
|
|
50
|
+
: Number(askBook.book.inversePrice),
|
|
51
|
+
priceUSD: isBidNewer
|
|
52
|
+
? Number(bidBook.book.base.priceUSD)
|
|
53
|
+
: Number(askBook.book.quote.priceUSD),
|
|
49
54
|
volume24hUSD: Number(bidBook.volumeUSD) + Number(askBook.volumeUSD),
|
|
50
55
|
totalValueLockedUSD: Number(bidBook.book.totalValueLockedUSD) +
|
|
51
56
|
Number(askBook.book.totalValueLockedUSD),
|
|
52
|
-
priceChange24h:
|
|
53
|
-
|
|
54
|
-
0
|
|
57
|
+
priceChange24h: isBidNewer && Number(bidBook.open) > 0
|
|
58
|
+
? Number(bidBook.close) / Number(bidBook.open) - 1
|
|
59
|
+
: !isBidNewer && Number(askBook.close) > 0
|
|
60
|
+
? Number(askBook.open) / Number(askBook.close) - 1
|
|
61
|
+
: 0,
|
|
55
62
|
createdAtTimestamp: Math.min(Number(bidBook.book.createdAtTimestamp), Number(askBook.book.createdAtTimestamp)),
|
|
56
|
-
fdv: baseTotalSupply *
|
|
63
|
+
fdv: baseTotalSupply *
|
|
64
|
+
(isBidNewer
|
|
65
|
+
? Number(bidBook.book.base.priceUSD)
|
|
66
|
+
: Number(askBook.book.quote.priceUSD)),
|
|
67
|
+
bidBookUpdatedAt: Number(bidBook.book.lastTakenTimestamp),
|
|
68
|
+
askBookUpdatedAt: Number(askBook.book.lastTakenTimestamp),
|
|
57
69
|
};
|
|
58
70
|
}
|
|
59
71
|
else if (bidBook) {
|
|
60
|
-
const baseTotalSupply =
|
|
72
|
+
const baseTotalSupply = convertTokenToDecimal(BigInt(totalSupplyMap[getAddress(bidBook.book.base.id)] ?? 0n), Number(bidBook.book.base.decimals));
|
|
61
73
|
return {
|
|
62
74
|
chainId,
|
|
63
75
|
marketId: `${bidBook.book.base.symbol}/${bidBook.book.quote.symbol}`,
|
|
@@ -77,13 +89,17 @@ export const fetchMarketSnapshot = async (publicClient, chainId, token0, token1,
|
|
|
77
89
|
priceUSD: Number(bidBook.book.base.priceUSD) || 0,
|
|
78
90
|
volume24hUSD: Number(bidBook.volumeUSD) || 0,
|
|
79
91
|
totalValueLockedUSD: Number(bidBook.book.totalValueLockedUSD) || 0,
|
|
80
|
-
priceChange24h:
|
|
92
|
+
priceChange24h: Number(bidBook.open) > 0
|
|
93
|
+
? Number(bidBook.close) / Number(bidBook.open) - 1
|
|
94
|
+
: 0,
|
|
81
95
|
createdAtTimestamp: Number(bidBook.book.createdAtTimestamp) || 0,
|
|
82
96
|
fdv: baseTotalSupply * Number(bidBook.book.base.priceUSD) || 0,
|
|
97
|
+
bidBookUpdatedAt: Number(bidBook.book.lastTakenTimestamp) || 0,
|
|
98
|
+
askBookUpdatedAt: 0,
|
|
83
99
|
};
|
|
84
100
|
}
|
|
85
101
|
else if (askBook) {
|
|
86
|
-
const baseTotalSupply =
|
|
102
|
+
const baseTotalSupply = convertTokenToDecimal(BigInt(totalSupplyMap[getAddress(askBook.book.quote.id)] ?? 0n), Number(askBook.book.quote.decimals));
|
|
87
103
|
return {
|
|
88
104
|
chainId,
|
|
89
105
|
marketId: `${askBook.book.quote.symbol}/${askBook.book.base.symbol}`,
|
|
@@ -103,16 +119,20 @@ export const fetchMarketSnapshot = async (publicClient, chainId, token0, token1,
|
|
|
103
119
|
priceUSD: Number(askBook.book.quote.priceUSD) || 0,
|
|
104
120
|
volume24hUSD: Number(askBook.volumeUSD) || 0,
|
|
105
121
|
totalValueLockedUSD: Number(askBook.book.totalValueLockedUSD) || 0,
|
|
106
|
-
priceChange24h: Number(askBook.
|
|
122
|
+
priceChange24h: Number(askBook.close) > 0
|
|
123
|
+
? Number(askBook.open) / Number(askBook.close) - 1
|
|
124
|
+
: 0,
|
|
107
125
|
createdAtTimestamp: Number(askBook.book.createdAtTimestamp) || 0,
|
|
108
126
|
fdv: baseTotalSupply * Number(askBook.book.quote.priceUSD) || 0,
|
|
127
|
+
bidBookUpdatedAt: 0,
|
|
128
|
+
askBookUpdatedAt: Number(askBook.book.lastTakenTimestamp) || 0,
|
|
109
129
|
};
|
|
110
130
|
}
|
|
111
131
|
throw new Error('No bookDayDatas found');
|
|
112
132
|
};
|
|
113
133
|
export const fetchMarketSnapshots = async (publicClient, chainId, timestampInSeconds) => {
|
|
114
134
|
const dayStartTimestamp = getDailyStartTimestampInSeconds(timestampInSeconds);
|
|
115
|
-
const { data: { bookDayDatas }, } = await Subgraph.get(chainId, 'getTopMarketSnapshots', 'query getMarkets($date: Int!) { bookDayDatas( first: 200 orderBy: volumeUSD orderDirection: desc where: {date: $date} ) { volumeUSD open close book { id totalValueLockedUSD price inversePrice base { id name symbol decimals priceUSD } quote { id name symbol decimals priceUSD } createdAtTimestamp } } }', {
|
|
135
|
+
const { data: { bookDayDatas }, } = await Subgraph.get(chainId, 'getTopMarketSnapshots', 'query getMarkets($date: Int!) { bookDayDatas( first: 200 orderBy: volumeUSD orderDirection: desc where: {date: $date} ) { volumeUSD open close book { id totalValueLockedUSD price inversePrice lastTakenTimestamp base { id name symbol decimals priceUSD } quote { id name symbol decimals priceUSD } createdAtTimestamp } } }', {
|
|
116
136
|
date: dayStartTimestamp,
|
|
117
137
|
});
|
|
118
138
|
const bidBookDayDataList = bookDayDatas.filter(({ book: { quote, base } }) => isAddressEqual(getAddress(quote.id), getQuoteToken({
|
|
@@ -148,28 +168,42 @@ export const fetchMarketSnapshots = async (publicClient, chainId, timestampInSec
|
|
|
148
168
|
symbol: bidBook.book.base.symbol,
|
|
149
169
|
decimals: Number(bidBook.book.base.decimals),
|
|
150
170
|
};
|
|
151
|
-
const
|
|
171
|
+
const askBook = askBookDayDataList.find((askBook) => isAddressEqual(getAddress(askBook.book.quote.id), baseCurrency.address) &&
|
|
152
172
|
isAddressEqual(getAddress(askBook.book.base.id), quoteCurrency.address));
|
|
153
|
-
const baseTotalSupply =
|
|
173
|
+
const baseTotalSupply = convertTokenToDecimal(BigInt(totalSupplyMap[baseCurrency.address] ?? 0n), baseCurrency.decimals);
|
|
174
|
+
const isBidNewer = Number(bidBook.book.lastTakenTimestamp) >=
|
|
175
|
+
Number(askBook?.book.lastTakenTimestamp ?? 0);
|
|
154
176
|
return {
|
|
155
177
|
chainId,
|
|
156
178
|
marketId: `${baseCurrency.symbol}/${quoteCurrency.symbol}`,
|
|
157
179
|
base: baseCurrency,
|
|
158
180
|
quote: quoteCurrency,
|
|
159
|
-
price:
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
? Number(
|
|
181
|
+
price: isBidNewer
|
|
182
|
+
? Number(bidBook.book.price)
|
|
183
|
+
: Number(askBook?.book.inversePrice),
|
|
184
|
+
priceUSD: isBidNewer
|
|
185
|
+
? Number(bidBook.book.base.priceUSD)
|
|
186
|
+
: Number(askBook?.book.quote.priceUSD),
|
|
187
|
+
priceChange24h: isBidNewer && Number(bidBook.open) > 0
|
|
188
|
+
? Number(bidBook.close) / Number(bidBook.open) - 1
|
|
189
|
+
: !isBidNewer && askBook && Number(askBook.close) > 0
|
|
190
|
+
? Number(askBook.open) / Number(askBook.close) - 1
|
|
191
|
+
: 0,
|
|
192
|
+
volume24hUSD: askBook
|
|
193
|
+
? Number(askBook.volumeUSD) + Number(bidBook.volumeUSD)
|
|
164
194
|
: Number(bidBook.volumeUSD),
|
|
165
|
-
totalValueLockedUSD:
|
|
166
|
-
? Number(
|
|
195
|
+
totalValueLockedUSD: askBook
|
|
196
|
+
? Number(askBook.book.totalValueLockedUSD) +
|
|
167
197
|
Number(bidBook.book.totalValueLockedUSD)
|
|
168
198
|
: Number(bidBook.book.totalValueLockedUSD),
|
|
169
|
-
createdAtTimestamp:
|
|
170
|
-
? Math.min(Number(bidBook.book.createdAtTimestamp), Number(
|
|
199
|
+
createdAtTimestamp: askBook
|
|
200
|
+
? Math.min(Number(bidBook.book.createdAtTimestamp), Number(askBook.book.createdAtTimestamp))
|
|
171
201
|
: Number(bidBook.book.createdAtTimestamp),
|
|
172
|
-
fdv:
|
|
202
|
+
fdv: isBidNewer
|
|
203
|
+
? baseTotalSupply * Number(bidBook.book.base.priceUSD)
|
|
204
|
+
: baseTotalSupply * Number(askBook?.book.quote.priceUSD),
|
|
205
|
+
bidBookUpdatedAt: Number(bidBook.book.lastTakenTimestamp),
|
|
206
|
+
askBookUpdatedAt: Number(askBook?.book.lastTakenTimestamp ?? 0),
|
|
173
207
|
};
|
|
174
208
|
}),
|
|
175
209
|
...askBookDayDataList.map((askBook) => {
|
|
@@ -187,15 +221,25 @@ export const fetchMarketSnapshots = async (publicClient, chainId, timestampInSec
|
|
|
187
221
|
};
|
|
188
222
|
const bidBook = bidBookDayDataList.find((bidBook) => isAddressEqual(getAddress(bidBook.book.quote.id), quoteCurrency.address) &&
|
|
189
223
|
isAddressEqual(getAddress(bidBook.book.base.id), baseCurrency.address));
|
|
190
|
-
const baseTotalSupply =
|
|
224
|
+
const baseTotalSupply = convertTokenToDecimal(BigInt(totalSupplyMap[baseCurrency.address] ?? 0n), baseCurrency.decimals);
|
|
225
|
+
const isBidNewer = Number(bidBook?.book.lastTakenTimestamp ?? 0) >=
|
|
226
|
+
Number(askBook.book.lastTakenTimestamp);
|
|
191
227
|
return {
|
|
192
228
|
chainId,
|
|
193
229
|
marketId: `${baseCurrency.symbol}/${quoteCurrency.symbol}`,
|
|
194
230
|
base: baseCurrency,
|
|
195
231
|
quote: quoteCurrency,
|
|
196
|
-
price:
|
|
197
|
-
|
|
198
|
-
|
|
232
|
+
price: isBidNewer
|
|
233
|
+
? Number(bidBook?.book.price)
|
|
234
|
+
: Number(askBook.book.inversePrice),
|
|
235
|
+
priceUSD: isBidNewer
|
|
236
|
+
? Number(bidBook?.book.base.priceUSD)
|
|
237
|
+
: Number(askBook.book.quote.priceUSD),
|
|
238
|
+
priceChange24h: isBidNewer && bidBook && Number(bidBook.open) > 0
|
|
239
|
+
? Number(bidBook.close) / Number(bidBook.open) - 1
|
|
240
|
+
: !isBidNewer && Number(askBook.close) > 0
|
|
241
|
+
? Number(askBook.open) / Number(askBook.close) - 1
|
|
242
|
+
: 0,
|
|
199
243
|
volume24hUSD: bidBook
|
|
200
244
|
? Number(askBook.volumeUSD) + Number(bidBook.volumeUSD)
|
|
201
245
|
: Number(askBook.volumeUSD),
|
|
@@ -206,11 +250,15 @@ export const fetchMarketSnapshots = async (publicClient, chainId, timestampInSec
|
|
|
206
250
|
createdAtTimestamp: bidBook
|
|
207
251
|
? Math.min(Number(askBook.book.createdAtTimestamp), Number(bidBook.book.createdAtTimestamp))
|
|
208
252
|
: Number(askBook.book.createdAtTimestamp),
|
|
209
|
-
fdv:
|
|
253
|
+
fdv: isBidNewer
|
|
254
|
+
? baseTotalSupply * Number(bidBook?.book.base.priceUSD)
|
|
255
|
+
: baseTotalSupply * Number(askBook.book.quote.priceUSD),
|
|
256
|
+
bidBookUpdatedAt: Number(bidBook?.book.lastTakenTimestamp ?? 0),
|
|
257
|
+
askBookUpdatedAt: Number(askBook.book.lastTakenTimestamp),
|
|
210
258
|
};
|
|
211
259
|
}),
|
|
212
260
|
]
|
|
213
|
-
.filter(({
|
|
261
|
+
.filter(({ priceUSD }) => priceUSD > 0)
|
|
214
262
|
.filter((market, index, self) => self.findIndex((m) => m.marketId === market.marketId) === index);
|
|
215
263
|
};
|
|
216
264
|
//# sourceMappingURL=snapshot.js.map
|