@1stdex/first-sdk 1.0.92-beta.3 → 1.0.92-beta.4
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/entities/book/apis/index.js +79 -80
- package/dist/cjs/entities/book/apis/index.js.map +1 -1
- package/dist/cjs/entities/book/apis/position.js +3 -30
- package/dist/cjs/entities/book/apis/position.js.map +1 -1
- package/dist/cjs/entities/market/apis/index.js +2 -2
- package/dist/cjs/entities/market/apis/index.js.map +1 -1
- package/dist/cjs/views/book.js +32 -13
- package/dist/cjs/views/book.js.map +1 -1
- package/dist/cjs/views/index.js +2 -4
- package/dist/cjs/views/index.js.map +1 -1
- package/dist/esm/entities/book/apis/index.js +79 -78
- package/dist/esm/entities/book/apis/index.js.map +1 -1
- package/dist/esm/entities/book/apis/position.js +0 -30
- package/dist/esm/entities/book/apis/position.js.map +1 -1
- package/dist/esm/entities/market/apis/index.js +2 -2
- package/dist/esm/entities/market/apis/index.js.map +1 -1
- package/dist/esm/views/book.js +45 -61
- package/dist/esm/views/book.js.map +1 -1
- package/dist/esm/views/index.js +1 -1
- package/dist/esm/views/index.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/entities/book/apis/index.d.ts +2 -9
- package/dist/types/entities/book/apis/index.d.ts.map +1 -1
- package/dist/types/entities/book/apis/position.d.ts +0 -9
- package/dist/types/entities/book/apis/position.d.ts.map +1 -1
- package/dist/types/entities/market/apis/index.d.ts.map +1 -1
- package/dist/types/views/book.d.ts +17 -71
- package/dist/types/views/book.d.ts.map +1 -1
- package/dist/types/views/index.d.ts +1 -1
- package/dist/types/views/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.fetchBook = exports.
|
|
4
|
-
const viem_1 = require("viem");
|
|
3
|
+
exports.fetchBook = exports.fetchBookPositionValue = void 0;
|
|
5
4
|
const unit_size_1 = require("../../../utils/unit-size");
|
|
6
5
|
const addresses_1 = require("../../../constants/chain-configs/addresses");
|
|
7
6
|
const book_viewer_abi_1 = require("../../../constants/abis/core/book-viewer-abi");
|
|
@@ -10,91 +9,94 @@ const book_id_1 = require("../utils/book-id");
|
|
|
10
9
|
const model_1 = require("../model");
|
|
11
10
|
var position_1 = require("./position");
|
|
12
11
|
Object.defineProperty(exports, "fetchBookPositionValue", { enumerable: true, get: function () { return position_1.fetchBookPositionValue; } });
|
|
13
|
-
Object.defineProperty(exports, "fetchBaseFromQuoteAmount", { enumerable: true, get: function () { return position_1.fetchBaseFromQuoteAmount; } });
|
|
14
12
|
const MAX_DEPTH = 20n;
|
|
15
|
-
const
|
|
16
|
-
const { data: { book }, } = await subgraph_1.Subgraph.get(chainId, 'getBookTokens', 'query getBookTokens($bookId: ID!) { book(id: $bookId) { id base { id name symbol decimals } quote { id name symbol decimals } } }', {
|
|
17
|
-
bookId: bookId.toString(),
|
|
18
|
-
});
|
|
19
|
-
if (!book) {
|
|
20
|
-
throw new Error(`Book not found: ${bookId}`);
|
|
21
|
-
}
|
|
22
|
-
const quote = {
|
|
23
|
-
address: (0, viem_1.getAddress)(book.quote.id),
|
|
24
|
-
name: book.quote.name,
|
|
25
|
-
symbol: book.quote.symbol,
|
|
26
|
-
decimals: parseInt(book.quote.decimals),
|
|
27
|
-
};
|
|
28
|
-
const base = {
|
|
29
|
-
address: (0, viem_1.getAddress)(book.base.id),
|
|
30
|
-
name: book.base.name,
|
|
31
|
-
symbol: book.base.symbol,
|
|
32
|
-
decimals: parseInt(book.base.decimals),
|
|
33
|
-
};
|
|
34
|
-
return { quote, base };
|
|
35
|
-
};
|
|
36
|
-
exports.fetchBookTokens = fetchBookTokens;
|
|
37
|
-
const fetchBook = async (publicClient, chainId, quoteCurrency, baseCurrency, useSubgraph) => {
|
|
13
|
+
const fetchBook = async (publicClient, chainId, quoteCurrency, baseCurrency, useSubgraph, includeDepths = false) => {
|
|
38
14
|
const unitSize = (0, unit_size_1.calculateUnitSize)(chainId, quoteCurrency);
|
|
39
15
|
const bookId = (0, book_id_1.toBookId)(chainId, quoteCurrency.address, baseCurrency.address, unitSize);
|
|
40
16
|
if (useSubgraph) {
|
|
41
|
-
|
|
42
|
-
bookId: bookId
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
17
|
+
if (includeDepths) {
|
|
18
|
+
const { data: { book }, } = await subgraph_1.Subgraph.get(chainId, 'getBook', 'query getBook($bookId: ID!, $first: Int!) { book(id: $bookId) { depths(first: $first where: {unitAmount_gt: 0}, orderBy: tick, orderDirection: desc) { tick unitAmount } } }', {
|
|
19
|
+
bookId: bookId.toString(),
|
|
20
|
+
first: 1000,
|
|
21
|
+
});
|
|
22
|
+
return new model_1.BookModel({
|
|
23
|
+
chainId,
|
|
24
|
+
id: bookId,
|
|
25
|
+
base: baseCurrency,
|
|
26
|
+
quote: quoteCurrency,
|
|
27
|
+
unitSize,
|
|
28
|
+
depths: book
|
|
29
|
+
? book.depths.map(({ tick, unitAmount }) => ({
|
|
30
|
+
tick: BigInt(tick),
|
|
31
|
+
unitAmount: BigInt(unitAmount),
|
|
32
|
+
}))
|
|
33
|
+
: [],
|
|
34
|
+
isOpened: book !== null,
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
const { data: { book }, } = await subgraph_1.Subgraph.get(chainId, 'getBook', 'query getBook($bookId: ID!) { book(id: $bookId) { id } }', {
|
|
39
|
+
bookId: bookId.toString(),
|
|
40
|
+
});
|
|
41
|
+
return new model_1.BookModel({
|
|
42
|
+
chainId,
|
|
43
|
+
id: bookId,
|
|
44
|
+
base: baseCurrency,
|
|
45
|
+
quote: quoteCurrency,
|
|
46
|
+
unitSize,
|
|
47
|
+
depths: [],
|
|
48
|
+
isOpened: book !== null,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
59
51
|
}
|
|
60
|
-
const
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
abi: book_viewer_abi_1.BOOK_VIEWER_ABI,
|
|
65
|
-
functionName: 'getLiquidity',
|
|
66
|
-
args: [bookId, Number(2n ** 19n - 1n), MAX_DEPTH],
|
|
67
|
-
},
|
|
52
|
+
const contracts = [];
|
|
53
|
+
contracts.push({
|
|
54
|
+
address: addresses_1.CONTRACT_ADDRESSES[chainId].BookManager,
|
|
55
|
+
abi: [
|
|
68
56
|
{
|
|
69
|
-
|
|
70
|
-
|
|
57
|
+
inputs: [
|
|
58
|
+
{
|
|
59
|
+
internalType: 'BookId',
|
|
60
|
+
name: 'id',
|
|
61
|
+
type: 'uint192',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
name: 'isOpened',
|
|
65
|
+
outputs: [
|
|
71
66
|
{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
name: 'id',
|
|
76
|
-
type: 'uint192',
|
|
77
|
-
},
|
|
78
|
-
],
|
|
79
|
-
name: 'isOpened',
|
|
80
|
-
outputs: [
|
|
81
|
-
{
|
|
82
|
-
internalType: 'bool',
|
|
83
|
-
name: '',
|
|
84
|
-
type: 'bool',
|
|
85
|
-
},
|
|
86
|
-
],
|
|
87
|
-
stateMutability: 'view',
|
|
88
|
-
type: 'function',
|
|
67
|
+
internalType: 'bool',
|
|
68
|
+
name: '',
|
|
69
|
+
type: 'bool',
|
|
89
70
|
},
|
|
90
71
|
],
|
|
91
|
-
|
|
92
|
-
|
|
72
|
+
stateMutability: 'view',
|
|
73
|
+
type: 'function',
|
|
93
74
|
},
|
|
94
75
|
],
|
|
76
|
+
functionName: 'isOpened',
|
|
77
|
+
args: [bookId],
|
|
95
78
|
});
|
|
96
|
-
if (
|
|
97
|
-
|
|
79
|
+
if (includeDepths) {
|
|
80
|
+
contracts.push({
|
|
81
|
+
address: addresses_1.CONTRACT_ADDRESSES[chainId].BookViewer,
|
|
82
|
+
abi: book_viewer_abi_1.BOOK_VIEWER_ABI,
|
|
83
|
+
functionName: 'getLiquidity',
|
|
84
|
+
args: [bookId, Number(2n ** 19n - 1n), MAX_DEPTH],
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
const results = await publicClient.multicall({ contracts });
|
|
88
|
+
const isOpenedResult = results[0];
|
|
89
|
+
const isOpened = isOpenedResult?.result ?? false;
|
|
90
|
+
let depths = [];
|
|
91
|
+
if (includeDepths) {
|
|
92
|
+
const depthResult = results[1];
|
|
93
|
+
if (depthResult.error) {
|
|
94
|
+
throw new Error(`Failed to fetch book data: ${depthResult.error.message}`);
|
|
95
|
+
}
|
|
96
|
+
depths = (depthResult.result ?? []).map(({ tick, depth }) => ({
|
|
97
|
+
tick: BigInt(tick),
|
|
98
|
+
unitAmount: depth,
|
|
99
|
+
}));
|
|
98
100
|
}
|
|
99
101
|
return new model_1.BookModel({
|
|
100
102
|
chainId,
|
|
@@ -102,11 +104,8 @@ const fetchBook = async (publicClient, chainId, quoteCurrency, baseCurrency, use
|
|
|
102
104
|
base: baseCurrency,
|
|
103
105
|
quote: quoteCurrency,
|
|
104
106
|
unitSize,
|
|
105
|
-
depths
|
|
106
|
-
|
|
107
|
-
unitAmount: depth,
|
|
108
|
-
})),
|
|
109
|
-
isOpened: isOpened ?? false,
|
|
107
|
+
depths,
|
|
108
|
+
isOpened,
|
|
110
109
|
});
|
|
111
110
|
};
|
|
112
111
|
exports.fetchBook = fetchBook;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/book/apis/index.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/book/apis/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.fetchBookPositionValue = void 0;
|
|
4
4
|
const viem_1 = require("viem");
|
|
5
|
-
const bignumber_js_1 = require("bignumber.js");
|
|
6
5
|
const subgraph_1 = require("../../../constants/chain-configs/subgraph");
|
|
7
6
|
const utils_1 = require("../../../utils");
|
|
8
7
|
const market_id_1 = require("../../market/utils/market-id");
|
|
9
|
-
bignumber_js_1.default.config({
|
|
10
|
-
DECIMAL_PLACES: 100,
|
|
11
|
-
});
|
|
12
8
|
const fetchBookPositionValue = async ({ chainId, bookId, tick, units, }) => {
|
|
13
9
|
const { data: { book }, } = await subgraph_1.Subgraph.get(chainId, 'getBookForPositionValue', 'query getBookForPositionValue($bookId: ID!) { book(id: $bookId) { id unitSize base { id name symbol decimals priceUSD } quote { id name symbol decimals priceUSD } } }', {
|
|
14
10
|
bookId: bookId.toString(),
|
|
@@ -29,13 +25,13 @@ const fetchBookPositionValue = async ({ chainId, bookId, tick, units, }) => {
|
|
|
29
25
|
if (isBidBook) {
|
|
30
26
|
const totalQuoteAmount = units * unitSize;
|
|
31
27
|
const totalBaseAmount = (0, utils_1.quoteToBase)(tick, totalQuoteAmount, false);
|
|
32
|
-
const baseAmount = new
|
|
28
|
+
const baseAmount = new BigNumber(totalBaseAmount.toString()).div(new BigNumber(10).pow(Number(book.base.decimals)));
|
|
33
29
|
usdValue = baseAmount.times(book.base.priceUSD).toFixed();
|
|
34
30
|
bookType = 'bids';
|
|
35
31
|
}
|
|
36
32
|
else {
|
|
37
33
|
const totalBaseAmount = units * unitSize;
|
|
38
|
-
const baseAmount = new
|
|
34
|
+
const baseAmount = new BigNumber(totalBaseAmount.toString()).div(new BigNumber(10).pow(Number(book.quote.decimals)));
|
|
39
35
|
usdValue = baseAmount.times(book.quote.priceUSD).toFixed();
|
|
40
36
|
bookType = 'asks';
|
|
41
37
|
}
|
|
@@ -45,27 +41,4 @@ const fetchBookPositionValue = async ({ chainId, bookId, tick, units, }) => {
|
|
|
45
41
|
};
|
|
46
42
|
};
|
|
47
43
|
exports.fetchBookPositionValue = fetchBookPositionValue;
|
|
48
|
-
const fetchBaseFromQuoteAmount = async ({ chainId, bookId, tick, quoteAmount, }) => {
|
|
49
|
-
const { data: { book }, } = await subgraph_1.Subgraph.get(chainId, 'getBookForPositionValue', 'query getBookForPositionValue($bookId: ID!) { book(id: $bookId) { id unitSize base { id name symbol decimals priceUSD } quote { id name symbol decimals priceUSD } } }', {
|
|
50
|
-
bookId: bookId.toString(),
|
|
51
|
-
});
|
|
52
|
-
if (!book) {
|
|
53
|
-
throw new Error(`Book not found: ${bookId}`);
|
|
54
|
-
}
|
|
55
|
-
const baseAddress = (0, viem_1.getAddress)(book.base.id);
|
|
56
|
-
const quoteAddress = (0, viem_1.getAddress)(book.quote.id);
|
|
57
|
-
const { quoteTokenAddress: marketQuoteAddress } = (0, market_id_1.getMarketId)(chainId, [
|
|
58
|
-
baseAddress,
|
|
59
|
-
quoteAddress,
|
|
60
|
-
]);
|
|
61
|
-
const isBidBook = (0, viem_1.isAddressEqual)(quoteAddress, marketQuoteAddress);
|
|
62
|
-
const bookType = isBidBook ? 'bids' : 'asks';
|
|
63
|
-
const totalQuoteAmount = BigInt(quoteAmount) * BigInt(book.unitSize);
|
|
64
|
-
const baseAmount = (0, utils_1.quoteToBase)(tick, totalQuoteAmount, false);
|
|
65
|
-
return {
|
|
66
|
-
bookType,
|
|
67
|
-
baseAmount,
|
|
68
|
-
};
|
|
69
|
-
};
|
|
70
|
-
exports.fetchBaseFromQuoteAmount = fetchBaseFromQuoteAmount;
|
|
71
44
|
//# sourceMappingURL=position.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../../../src/entities/book/apis/position.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;
|
|
1
|
+
{"version":3,"file":"position.js","sourceRoot":"","sources":["../../../../../src/entities/book/apis/position.ts"],"names":[],"mappings":";;;AAAA,+BAAkD;AAGlD,wEAAqE;AACrE,0CAA6C;AAC7C,4DAA2D;AAEpD,MAAM,sBAAsB,GAAG,KAAK,EAAE,EAC3C,OAAO,EACP,MAAM,EACN,IAAI,EACJ,KAAK,GAMN,EAA4D,EAAE;IAE7D,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,GACf,GAAG,MAAM,mBAAQ,CAAC,GAAG,CAsBpB,OAAO,EACP,yBAAyB,EACzB,wKAAwK,EACxK;QACE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;KAC1B,CACF,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,WAAW,GAAG,IAAA,iBAAU,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAA,iBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAGvC,MAAM,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,GAAG,IAAA,uBAAW,EAAC,OAAO,EAAE;QACrE,WAAW;QACX,YAAY;KACb,CAAC,CAAC;IAGH,MAAM,SAAS,GAAG,IAAA,qBAAc,EAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC;IAEnE,IAAI,QAAgB,CAAC;IACrB,IAAI,QAAyB,CAAC;IAE9B,IAAI,SAAS,EAAE,CAAC;QAId,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,CAAC;QAG1C,MAAM,eAAe,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QAGnE,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAC9D,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAClD,CAAC;QAGF,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAC1D,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;SAAM,CAAC;QAIN,MAAM,eAAe,GAAG,KAAK,GAAG,QAAQ,CAAC;QAGzC,MAAM,UAAU,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC,GAAG,CAC9D,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CACnD,CAAC;QAGF,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;QAC3D,QAAQ,GAAG,MAAM,CAAC;IACpB,CAAC;IAED,OAAO;QACL,QAAQ;QACR,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC;AArGW,QAAA,sBAAsB,0BAqGjC"}
|
|
@@ -19,8 +19,8 @@ async function fetchMarket(publicClient, chainId, tokenAddresses, useSubgraph) {
|
|
|
19
19
|
currencyMap[baseTokenAddress],
|
|
20
20
|
];
|
|
21
21
|
const [bidBook, askBook] = await Promise.all([
|
|
22
|
-
(0, apis_2.fetchBook)(publicClient, chainId, quoteCurrency, baseCurrency, useSubgraph),
|
|
23
|
-
(0, apis_2.fetchBook)(publicClient, chainId, baseCurrency, quoteCurrency, useSubgraph),
|
|
22
|
+
(0, apis_2.fetchBook)(publicClient, chainId, quoteCurrency, baseCurrency, useSubgraph, true),
|
|
23
|
+
(0, apis_2.fetchBook)(publicClient, chainId, baseCurrency, quoteCurrency, useSubgraph, true),
|
|
24
24
|
]);
|
|
25
25
|
return new model_1.MarketModel({
|
|
26
26
|
chainId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/market/apis/index.ts"],"names":[],"mappings":";;;AAGA,oCAAuC;AACvC,kDAAiD;AACjD,8CAAuD;AACvD,0CAA4C;AAErC,KAAK,UAAU,WAAW,CAC/B,YAA0B,EAC1B,OAAkB,EAClB,cAA+B,EAC/B,WAAoB;IAEpB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,IAAA,uBAAW,EAAC,OAAO,EAAE;QACnE,cAAc,CAAC,CAAC,CAAE;QAClB,cAAc,CAAC,CAAC,CAAE;KACnB,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAgB,EACxC,YAAY,EACZ,OAAO,EACP,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EACrC,WAAW,CACZ,CAAC;IACF,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG;QACpC,WAAW,CAAC,iBAAiB,CAAC;QAC9B,WAAW,CAAC,gBAAgB,CAAC;KAC9B,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3C,IAAA,gBAAS,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/market/apis/index.ts"],"names":[],"mappings":";;;AAGA,oCAAuC;AACvC,kDAAiD;AACjD,8CAAuD;AACvD,0CAA4C;AAErC,KAAK,UAAU,WAAW,CAC/B,YAA0B,EAC1B,OAAkB,EAClB,cAA+B,EAC/B,WAAoB;IAEpB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,IAAA,uBAAW,EAAC,OAAO,EAAE;QACnE,cAAc,CAAC,CAAC,CAAE;QAClB,cAAc,CAAC,CAAC,CAAE;KACnB,CAAC,CAAC;IACH,MAAM,WAAW,GAAG,MAAM,IAAA,uBAAgB,EACxC,YAAY,EACZ,OAAO,EACP,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,EACrC,WAAW,CACZ,CAAC;IACF,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC,GAAG;QACpC,WAAW,CAAC,iBAAiB,CAAC;QAC9B,WAAW,CAAC,gBAAgB,CAAC;KAC9B,CAAC;IACF,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC3C,IAAA,gBAAS,EACP,YAAY,EACZ,OAAO,EACP,aAAa,EACb,YAAY,EACZ,WAAW,EACX,IAAI,CACL;QACD,IAAA,gBAAS,EACP,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,aAAa,EACb,WAAW,EACX,IAAI,CACL;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,mBAAW,CAAC;QACrB,OAAO;QACP,MAAM,EAAE,CAAC,aAAa,EAAE,YAAY,CAAC;QACrC,OAAO;QACP,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAjDD,kCAiDC"}
|
package/dist/cjs/views/book.js
CHANGED
|
@@ -1,17 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
|
|
3
|
+
exports.getTradeInfo = void 0;
|
|
4
|
+
const subgraph_1 = require("../constants/chain-configs/subgraph");
|
|
5
|
+
const utils_1 = require("../utils");
|
|
6
|
+
const getTradeInfo = async ({ chainId, bookId, tick, quoteUnits, }) => {
|
|
7
|
+
const { data: { book }, } = await subgraph_1.Subgraph.get(chainId, 'getTradeInfo', 'query getTradeInfo($bookId: ID!) { book(id: $bookId) { id unitSize base { id name symbol decimals } quote { id name symbol decimals } } }', {
|
|
8
|
+
bookId: bookId.toString(),
|
|
9
|
+
});
|
|
10
|
+
if (!book) {
|
|
11
|
+
throw new Error(`Book not found: ${bookId}`);
|
|
12
|
+
}
|
|
13
|
+
const unitSize = BigInt(book.unitSize);
|
|
14
|
+
const quoteAmount = quoteUnits * unitSize;
|
|
15
|
+
const baseAmount = (0, utils_1.quoteToBase)(tick, quoteAmount, false);
|
|
16
|
+
const quoteCurrency = {
|
|
17
|
+
address: book.quote.id,
|
|
18
|
+
name: book.quote.name,
|
|
19
|
+
symbol: book.quote.symbol,
|
|
20
|
+
decimals: Number(book.quote.decimals),
|
|
21
|
+
};
|
|
22
|
+
const baseCurrency = {
|
|
23
|
+
address: book.base.id,
|
|
24
|
+
name: book.base.name,
|
|
25
|
+
symbol: book.base.symbol,
|
|
26
|
+
decimals: Number(book.base.decimals),
|
|
27
|
+
};
|
|
28
|
+
return {
|
|
29
|
+
quoteCurrency,
|
|
30
|
+
quoteAmount,
|
|
31
|
+
baseCurrency,
|
|
32
|
+
baseAmount,
|
|
33
|
+
};
|
|
7
34
|
};
|
|
8
|
-
exports.
|
|
9
|
-
const getBaseFromQuoteAmount = async ({ chainId, bookId, tick, quoteAmount, }) => {
|
|
10
|
-
return (0, apis_1.fetchBaseFromQuoteAmount)({ chainId, bookId, tick, quoteAmount });
|
|
11
|
-
};
|
|
12
|
-
exports.getBaseFromQuoteAmount = getBaseFromQuoteAmount;
|
|
13
|
-
const getBookTokens = async ({ chainId, bookId, }) => {
|
|
14
|
-
return (0, apis_1.fetchBookTokens)({ chainId, bookId });
|
|
15
|
-
};
|
|
16
|
-
exports.getBookTokens = getBookTokens;
|
|
35
|
+
exports.getTradeInfo = getTradeInfo;
|
|
17
36
|
//# sourceMappingURL=book.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"book.js","sourceRoot":"","sources":["../../../src/views/book.ts"],"names":[],"mappings":";;;AACA,
|
|
1
|
+
{"version":3,"file":"book.js","sourceRoot":"","sources":["../../../src/views/book.ts"],"names":[],"mappings":";;;AACA,kEAA+D;AAE/D,oCAAuC;AA2BhC,MAAM,YAAY,GAAG,KAAK,EAAE,EACjC,OAAO,EACP,MAAM,EACN,IAAI,EACJ,UAAU,GAMX,EAKE,EAAE;IAEH,MAAM,EACJ,IAAI,EAAE,EAAE,IAAI,EAAE,GACf,GAAG,MAAM,mBAAQ,CAAC,GAAG,CAoBpB,OAAO,EACP,cAAc,EACd,2IAA2I,EAC3I;QACE,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;KAC1B,CACF,CAAC;IAEF,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAGvC,MAAM,WAAW,GAAG,UAAU,GAAG,QAAQ,CAAC;IAC1C,MAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;IAGzD,MAAM,aAAa,GAAa;QAC9B,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,EAAmB;QACvC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;QACrB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;QACzB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;KACtC,CAAC;IAEF,MAAM,YAAY,GAAa;QAC7B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,EAAmB;QACtC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;QACpB,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;QACxB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;KACrC,CAAC;IAEF,OAAO;QACL,aAAa;QACb,WAAW;QACX,YAAY;QACZ,UAAU;KACX,CAAC;AACJ,CAAC,CAAC;AA9EW,QAAA,YAAY,gBA8EvB"}
|
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.getCrossChainLZWithdrawalStatus = exports.getUserVolumeUSD = exports.getTradeHistory = exports.getOrderPositionValue = exports.getOrder = exports.
|
|
3
|
+
exports.getCrossChainLZWithdrawalStatus = exports.getUserVolumeUSD = exports.getTradeHistory = exports.getOrderPositionValue = exports.getOrder = exports.getTradeInfo = exports.getOrderSetupStatus = exports.needsVaultDeposit = exports.checkTokenAllowances = exports.getRealTokenBalance = exports.getAllBalances = exports.getPortfolioBalance = exports.getTradingBalance = exports.getVault = exports.getReferralSummary = exports.getUserNativeVolume = exports.getTopUsersByNativeVolume = exports.getUserDailyVolumes = exports.getProtocolAnalytics = exports.getLatestPrice = exports.getDailyClosePriceMap = exports.getLatestPriceMap = exports.getStableCurrencies = exports.getCurrencies = exports.getContractAddresses = exports.getSubgraphBlock = exports.getSubgraphBlockNumber = exports.getSubgraphEndpoint = exports.getClaimableOrders = exports.getCancelableOrders = exports.getOpenOrders = exports.getOpenOrder = exports.getPriceNeighborhood = exports.getMakeOrderResult = exports.getLimitOrderResult = exports.parseMakeOrderIdsFromReceipt = 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; } });
|
|
@@ -50,9 +50,7 @@ Object.defineProperty(exports, "checkTokenAllowances", { enumerable: true, get:
|
|
|
50
50
|
Object.defineProperty(exports, "needsVaultDeposit", { enumerable: true, get: function () { return setup_1.needsVaultDeposit; } });
|
|
51
51
|
Object.defineProperty(exports, "getOrderSetupStatus", { enumerable: true, get: function () { return setup_1.getOrderSetupStatus; } });
|
|
52
52
|
var book_1 = require("./book");
|
|
53
|
-
Object.defineProperty(exports, "
|
|
54
|
-
Object.defineProperty(exports, "getBaseFromQuoteAmount", { enumerable: true, get: function () { return book_1.getBaseFromQuoteAmount; } });
|
|
55
|
-
Object.defineProperty(exports, "getBookTokens", { enumerable: true, get: function () { return book_1.getBookTokens; } });
|
|
53
|
+
Object.defineProperty(exports, "getTradeInfo", { enumerable: true, get: function () { return book_1.getTradeInfo; } });
|
|
56
54
|
var order_1 = require("./order");
|
|
57
55
|
Object.defineProperty(exports, "getOrder", { enumerable: true, get: function () { return order_1.getOrder; } });
|
|
58
56
|
Object.defineProperty(exports, "getOrderPositionValue", { enumerable: true, get: function () { return order_1.getOrderPositionValue; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":";;;AAAA,mCAYkB;AAXhB,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;AACb,sHAAA,4BAA4B,OAAA;AAC5B,6GAAA,mBAAmB,OAAA;AACnB,4GAAA,kBAAkB,OAAA;AAGpB,+BAA8C;AAArC,4GAAA,oBAAoB,OAAA;AAC7B,2CAKsB;AAJpB,0GAAA,YAAY,OAAA;AACZ,2GAAA,aAAa,OAAA;AACb,iHAAA,mBAAmB,OAAA;AACnB,gHAAA,kBAAkB,OAAA;AAEpB,uCAIoB;AAHlB,+GAAA,mBAAmB,OAAA;AACnB,kHAAA,sBAAsB,OAAA;AACtB,4GAAA,gBAAgB,OAAA;AAElB,qCAAiD;AAAxC,+GAAA,oBAAoB,OAAA;AAC7B,uCAMoB;AALlB,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,6GAAA,iBAAiB,OAAA;AACjB,iHAAA,qBAAqB,OAAA;AACrB,0GAAA,cAAc,OAAA;AAEhB,yCAMqB;AALnB,iHAAA,oBAAoB,OAAA;AACpB,gHAAA,mBAAmB,OAAA;AACnB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA;AACnB,+GAAA,kBAAkB,OAAA;AAEpB,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AACjB,qCAKmB;AAJjB,4GAAA,iBAAiB,OAAA;AACjB,8GAAA,mBAAmB,OAAA;AACnB,yGAAA,cAAc,OAAA;AACd,8GAAA,mBAAmB,OAAA;AAErB,iCAIiB;AAHf,6GAAA,oBAAoB,OAAA;AACpB,0GAAA,iBAAiB,OAAA;AACjB,4GAAA,mBAAmB,OAAA;AAErB,+
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/index.ts"],"names":[],"mappings":";;;AAAA,mCAYkB;AAXhB,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;AACb,sHAAA,4BAA4B,OAAA;AAC5B,6GAAA,mBAAmB,OAAA;AACnB,4GAAA,kBAAkB,OAAA;AAGpB,+BAA8C;AAArC,4GAAA,oBAAoB,OAAA;AAC7B,2CAKsB;AAJpB,0GAAA,YAAY,OAAA;AACZ,2GAAA,aAAa,OAAA;AACb,iHAAA,mBAAmB,OAAA;AACnB,gHAAA,kBAAkB,OAAA;AAEpB,uCAIoB;AAHlB,+GAAA,mBAAmB,OAAA;AACnB,kHAAA,sBAAsB,OAAA;AACtB,4GAAA,gBAAgB,OAAA;AAElB,qCAAiD;AAAxC,+GAAA,oBAAoB,OAAA;AAC7B,uCAMoB;AALlB,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,6GAAA,iBAAiB,OAAA;AACjB,iHAAA,qBAAqB,OAAA;AACrB,0GAAA,cAAc,OAAA;AAEhB,yCAMqB;AALnB,iHAAA,oBAAoB,OAAA;AACpB,gHAAA,mBAAmB,OAAA;AACnB,sHAAA,yBAAyB,OAAA;AACzB,gHAAA,mBAAmB,OAAA;AACnB,+GAAA,kBAAkB,OAAA;AAEpB,iCAAmC;AAA1B,iGAAA,QAAQ,OAAA;AACjB,qCAKmB;AAJjB,4GAAA,iBAAiB,OAAA;AACjB,8GAAA,mBAAmB,OAAA;AACnB,yGAAA,cAAc,OAAA;AACd,8GAAA,mBAAmB,OAAA;AAErB,iCAIiB;AAHf,6GAAA,oBAAoB,OAAA;AACpB,0GAAA,iBAAiB,OAAA;AACjB,4GAAA,mBAAmB,OAAA;AAErB,+BAAsC;AAA7B,oGAAA,YAAY,OAAA;AACrB,iCAA0D;AAAjD,iGAAA,QAAQ,OAAA;AAAE,8GAAA,qBAAqB,OAAA;AACxC,iDAAkD;AAAzC,gHAAA,eAAe,OAAA;AACxB,6CAAiD;AAAxC,+GAAA,gBAAgB,OAAA;AACzB,2CAA+D;AAAtD,6HAAA,+BAA+B,OAAA"}
|
|
@@ -1,94 +1,98 @@
|
|
|
1
|
-
import { getAddress } from 'viem';
|
|
2
1
|
import { calculateUnitSize } from '../../../utils/unit-size';
|
|
3
2
|
import { CONTRACT_ADDRESSES } from '../../../constants/chain-configs/addresses';
|
|
4
3
|
import { BOOK_VIEWER_ABI } from '../../../constants/abis/core/book-viewer-abi';
|
|
5
4
|
import { Subgraph } from '../../../constants/chain-configs/subgraph';
|
|
6
5
|
import { toBookId } from '../utils/book-id';
|
|
7
6
|
import { BookModel } from '../model';
|
|
8
|
-
export { fetchBookPositionValue
|
|
7
|
+
export { fetchBookPositionValue } from './position';
|
|
9
8
|
const MAX_DEPTH = 20n; // if the depth is too large, it may cause revert errors in the contract call
|
|
10
|
-
export const
|
|
11
|
-
const { data: { book }, } = await Subgraph.get(chainId, 'getBookTokens', 'query getBookTokens($bookId: ID!) { book(id: $bookId) { id base { id name symbol decimals } quote { id name symbol decimals } } }', {
|
|
12
|
-
bookId: bookId.toString(),
|
|
13
|
-
});
|
|
14
|
-
if (!book) {
|
|
15
|
-
throw new Error(`Book not found: ${bookId}`);
|
|
16
|
-
}
|
|
17
|
-
const quote = {
|
|
18
|
-
address: getAddress(book.quote.id),
|
|
19
|
-
name: book.quote.name,
|
|
20
|
-
symbol: book.quote.symbol,
|
|
21
|
-
decimals: parseInt(book.quote.decimals),
|
|
22
|
-
};
|
|
23
|
-
const base = {
|
|
24
|
-
address: getAddress(book.base.id),
|
|
25
|
-
name: book.base.name,
|
|
26
|
-
symbol: book.base.symbol,
|
|
27
|
-
decimals: parseInt(book.base.decimals),
|
|
28
|
-
};
|
|
29
|
-
return { quote, base };
|
|
30
|
-
};
|
|
31
|
-
export const fetchBook = async (publicClient, chainId, quoteCurrency, baseCurrency, useSubgraph) => {
|
|
9
|
+
export const fetchBook = async (publicClient, chainId, quoteCurrency, baseCurrency, useSubgraph, includeDepths = false) => {
|
|
32
10
|
const unitSize = calculateUnitSize(chainId, quoteCurrency);
|
|
33
11
|
const bookId = toBookId(chainId, quoteCurrency.address, baseCurrency.address, unitSize);
|
|
34
12
|
if (useSubgraph) {
|
|
35
|
-
|
|
36
|
-
bookId: bookId
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
13
|
+
if (includeDepths) {
|
|
14
|
+
const { data: { book }, } = await Subgraph.get(chainId, 'getBook', 'query getBook($bookId: ID!, $first: Int!) { book(id: $bookId) { depths(first: $first where: {unitAmount_gt: 0}, orderBy: tick, orderDirection: desc) { tick unitAmount } } }', {
|
|
15
|
+
bookId: bookId.toString(),
|
|
16
|
+
first: 1000, // Adjust as needed for depth
|
|
17
|
+
});
|
|
18
|
+
return new BookModel({
|
|
19
|
+
chainId,
|
|
20
|
+
id: bookId,
|
|
21
|
+
base: baseCurrency,
|
|
22
|
+
quote: quoteCurrency,
|
|
23
|
+
unitSize,
|
|
24
|
+
depths: book
|
|
25
|
+
? book.depths.map(({ tick, unitAmount }) => ({
|
|
26
|
+
tick: BigInt(tick),
|
|
27
|
+
unitAmount: BigInt(unitAmount),
|
|
28
|
+
}))
|
|
29
|
+
: [],
|
|
30
|
+
isOpened: book !== null,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const { data: { book }, } = await Subgraph.get(chainId, 'getBook', 'query getBook($bookId: ID!) { book(id: $bookId) { id } }', {
|
|
35
|
+
bookId: bookId.toString(),
|
|
36
|
+
});
|
|
37
|
+
return new BookModel({
|
|
38
|
+
chainId,
|
|
39
|
+
id: bookId,
|
|
40
|
+
base: baseCurrency,
|
|
41
|
+
quote: quoteCurrency,
|
|
42
|
+
unitSize,
|
|
43
|
+
depths: [],
|
|
44
|
+
isOpened: book !== null,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
53
47
|
}
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
abi: BOOK_VIEWER_ABI,
|
|
59
|
-
functionName: 'getLiquidity',
|
|
60
|
-
args: [bookId, Number(2n ** 19n - 1n), MAX_DEPTH],
|
|
61
|
-
},
|
|
48
|
+
const contracts = [];
|
|
49
|
+
contracts.push({
|
|
50
|
+
address: CONTRACT_ADDRESSES[chainId].BookManager,
|
|
51
|
+
abi: [
|
|
62
52
|
{
|
|
63
|
-
|
|
64
|
-
|
|
53
|
+
inputs: [
|
|
54
|
+
{
|
|
55
|
+
internalType: 'BookId',
|
|
56
|
+
name: 'id',
|
|
57
|
+
type: 'uint192',
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
name: 'isOpened',
|
|
61
|
+
outputs: [
|
|
65
62
|
{
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
name: 'id',
|
|
70
|
-
type: 'uint192',
|
|
71
|
-
},
|
|
72
|
-
],
|
|
73
|
-
name: 'isOpened',
|
|
74
|
-
outputs: [
|
|
75
|
-
{
|
|
76
|
-
internalType: 'bool',
|
|
77
|
-
name: '',
|
|
78
|
-
type: 'bool',
|
|
79
|
-
},
|
|
80
|
-
],
|
|
81
|
-
stateMutability: 'view',
|
|
82
|
-
type: 'function',
|
|
63
|
+
internalType: 'bool',
|
|
64
|
+
name: '',
|
|
65
|
+
type: 'bool',
|
|
83
66
|
},
|
|
84
67
|
],
|
|
85
|
-
|
|
86
|
-
|
|
68
|
+
stateMutability: 'view',
|
|
69
|
+
type: 'function',
|
|
87
70
|
},
|
|
88
71
|
],
|
|
72
|
+
functionName: 'isOpened',
|
|
73
|
+
args: [bookId],
|
|
89
74
|
});
|
|
90
|
-
if (
|
|
91
|
-
|
|
75
|
+
if (includeDepths) {
|
|
76
|
+
contracts.push({
|
|
77
|
+
address: CONTRACT_ADDRESSES[chainId].BookViewer,
|
|
78
|
+
abi: BOOK_VIEWER_ABI,
|
|
79
|
+
functionName: 'getLiquidity',
|
|
80
|
+
args: [bookId, Number(2n ** 19n - 1n), MAX_DEPTH],
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
const results = await publicClient.multicall({ contracts });
|
|
84
|
+
const isOpenedResult = results[0];
|
|
85
|
+
const isOpened = isOpenedResult?.result ?? false;
|
|
86
|
+
let depths = [];
|
|
87
|
+
if (includeDepths) {
|
|
88
|
+
const depthResult = results[1];
|
|
89
|
+
if (depthResult.error) {
|
|
90
|
+
throw new Error(`Failed to fetch book data: ${depthResult.error.message}`);
|
|
91
|
+
}
|
|
92
|
+
depths = (depthResult.result ?? []).map(({ tick, depth }) => ({
|
|
93
|
+
tick: BigInt(tick),
|
|
94
|
+
unitAmount: depth,
|
|
95
|
+
}));
|
|
92
96
|
}
|
|
93
97
|
return new BookModel({
|
|
94
98
|
chainId,
|
|
@@ -96,11 +100,8 @@ export const fetchBook = async (publicClient, chainId, quoteCurrency, baseCurren
|
|
|
96
100
|
base: baseCurrency,
|
|
97
101
|
quote: quoteCurrency,
|
|
98
102
|
unitSize,
|
|
99
|
-
depths
|
|
100
|
-
|
|
101
|
-
unitAmount: depth,
|
|
102
|
-
})),
|
|
103
|
-
isOpened: isOpened ?? false,
|
|
103
|
+
depths,
|
|
104
|
+
isOpened,
|
|
104
105
|
});
|
|
105
106
|
};
|
|
106
107
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/book/apis/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/entities/book/apis/index.ts"],"names":[],"mappings":"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"}
|