@clober/v2-sdk 0.0.2 → 0.0.3-a
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/apis/market.js +10 -16
- package/dist/cjs/apis/market.js.map +1 -1
- package/dist/cjs/apis/open-order.js +12 -12
- package/dist/cjs/apis/open-order.js.map +1 -1
- package/dist/cjs/apis/subgraph.js +26 -0
- package/dist/cjs/apis/subgraph.js.map +1 -0
- package/dist/cjs/approval.js +0 -26
- package/dist/cjs/approval.js.map +1 -1
- package/dist/cjs/call.js +0 -208
- package/dist/cjs/call.js.map +1 -1
- package/dist/cjs/constants/fee.js +2 -2
- package/dist/cjs/constants/fee.js.map +1 -1
- package/dist/cjs/index.js +6 -19
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/model/book.js +145 -112
- package/dist/cjs/model/book.js.map +1 -1
- package/dist/cjs/model/fee-policy.js +71 -21
- package/dist/cjs/model/fee-policy.js.map +1 -1
- package/dist/cjs/model/market.js +235 -171
- package/dist/cjs/model/market.js.map +1 -1
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/signature.js +0 -33
- package/dist/cjs/signature.js.map +1 -1
- package/dist/cjs/utils/market.js +0 -3
- package/dist/cjs/utils/market.js.map +1 -1
- package/dist/cjs/utils/math.js +1 -28
- package/dist/cjs/utils/math.js.map +1 -1
- package/dist/cjs/view.js +0 -92
- package/dist/cjs/view.js.map +1 -1
- package/dist/esm/apis/market.js +10 -16
- package/dist/esm/apis/market.js.map +1 -1
- package/dist/esm/apis/open-order.js +12 -12
- package/dist/esm/apis/open-order.js.map +1 -1
- package/dist/esm/apis/subgraph.js +22 -0
- package/dist/esm/apis/subgraph.js.map +1 -0
- package/dist/esm/model/book.js +147 -112
- package/dist/esm/model/book.js.map +1 -1
- package/dist/esm/model/fee-policy.js +71 -21
- package/dist/esm/model/fee-policy.js.map +1 -1
- package/dist/esm/model/market.js +241 -171
- package/dist/esm/model/market.js.map +1 -1
- package/dist/esm/package.json +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/dist/types/apis/market.d.ts.map +1 -1
- package/dist/types/apis/open-order.d.ts.map +1 -1
- package/dist/types/apis/subgraph.d.ts +3 -0
- package/dist/types/apis/subgraph.d.ts.map +1 -0
- package/dist/types/model/book.d.ts +21 -0
- package/dist/types/model/book.d.ts.map +1 -1
- package/dist/types/model/open-order.d.ts +26 -0
- package/dist/types/model/open-order.d.ts.map +1 -1
- package/package.json +7 -21
- package/dist/cjs/.graphclient/index.js +0 -243
- package/dist/cjs/.graphclient/index.js.map +0 -1
- package/dist/cjs/.graphclient/sources/clober-v2/introspectionSchema.js +0 -14485
- package/dist/cjs/.graphclient/sources/clober-v2/introspectionSchema.js.map +0 -1
- package/dist/cjs/.graphclient/sources/clober-v2/types.js +0 -4
- package/dist/cjs/.graphclient/sources/clober-v2/types.js.map +0 -1
- package/dist/cjs/tsconfig.build.tsbuildinfo +0 -1
- package/dist/esm/.graphclient/index.js +0 -233
- package/dist/esm/.graphclient/index.js.map +0 -1
- package/dist/esm/.graphclient/sources/clober-v2/introspectionSchema.js +0 -14483
- package/dist/esm/.graphclient/sources/clober-v2/introspectionSchema.js.map +0 -1
- package/dist/esm/.graphclient/sources/clober-v2/types.js +0 -3
- package/dist/esm/.graphclient/sources/clober-v2/types.js.map +0 -1
- package/dist/esm/tsconfig.build.tsbuildinfo +0 -1
- package/dist/types/.graphclient/index.d.ts +0 -1281
- package/dist/types/.graphclient/index.d.ts.map +0 -1
- package/dist/types/.graphclient/sources/clober-v2/introspectionSchema.d.ts +0 -3
- package/dist/types/.graphclient/sources/clober-v2/introspectionSchema.d.ts.map +0 -1
- package/dist/types/.graphclient/sources/clober-v2/types.d.ts +0 -984
- package/dist/types/.graphclient/sources/clober-v2/types.d.ts.map +0 -1
package/dist/cjs/view.js
CHANGED
|
@@ -6,24 +6,6 @@ const market_1 = require("./apis/market");
|
|
|
6
6
|
const prices_1 = require("./utils/prices");
|
|
7
7
|
const price_1 = require("./constants/price");
|
|
8
8
|
const open_order_1 = require("./apis/open-order");
|
|
9
|
-
/**
|
|
10
|
-
* Get market information by chain id and token addresses
|
|
11
|
-
* @param chainId - chain id from {@link CHAIN_IDS}
|
|
12
|
-
* @param token0 - token0 address
|
|
13
|
-
* @param token1 - token1 address
|
|
14
|
-
* @param options
|
|
15
|
-
* @param options.rpcUrl - RPC URL of the blockchain
|
|
16
|
-
* @returns A market {@link Market}
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* import { getMarket } from '@clober/v2-sdk'
|
|
20
|
-
*
|
|
21
|
-
* const market = await getMarket(
|
|
22
|
-
* 421614,
|
|
23
|
-
* '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
|
|
24
|
-
* '0x0000000000000000000000000000000000000000',
|
|
25
|
-
* )
|
|
26
|
-
*/
|
|
27
9
|
const getMarket = async (chainId, token0, token1, options) => {
|
|
28
10
|
if ((0, viem_1.isAddressEqual)(token0, token1)) {
|
|
29
11
|
throw new Error('Token0 and token1 must be different');
|
|
@@ -42,27 +24,6 @@ const getMarket = async (chainId, token0, token1, options) => {
|
|
|
42
24
|
};
|
|
43
25
|
};
|
|
44
26
|
exports.getMarket = getMarket;
|
|
45
|
-
/**
|
|
46
|
-
* Calculates the expected output for a given input amount, based on the provided market data.
|
|
47
|
-
*
|
|
48
|
-
* @param chainId The chain ID of the blockchain.
|
|
49
|
-
* @param inputToken The address of the input token.
|
|
50
|
-
* @param outputToken The address of the output token.
|
|
51
|
-
* @param amountIn The amount of expected input amount. (ex 1.2 ETH -> 1.2)
|
|
52
|
-
* @param options
|
|
53
|
-
* @param options.limitPrice The maximum limit price to spend.
|
|
54
|
-
* @param options.rpcUrl The RPC URL of the blockchain.
|
|
55
|
-
* @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
|
|
56
|
-
* @example
|
|
57
|
-
* import { getExpectedOutput } from '@clober/v2-sdk'
|
|
58
|
-
*
|
|
59
|
-
* const { takenAmount, spendAmount } = await getExpectedOutput(
|
|
60
|
-
* 421614,
|
|
61
|
-
* '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
|
|
62
|
-
* '0x0000000000000000000000000000000000000000',
|
|
63
|
-
* '1000.123', // spend 1000.123 USDC
|
|
64
|
-
* )
|
|
65
|
-
*/
|
|
66
27
|
const getExpectedOutput = async (chainId, inputToken, outputToken, amountIn, options) => {
|
|
67
28
|
const market = await (0, market_1.fetchMarket)(chainId, [inputToken, outputToken], options?.rpcUrl);
|
|
68
29
|
const isBid = (0, viem_1.isAddressEqual)(market.quote.address, inputToken);
|
|
@@ -92,27 +53,6 @@ const getExpectedOutput = async (chainId, inputToken, outputToken, amountIn, opt
|
|
|
92
53
|
};
|
|
93
54
|
};
|
|
94
55
|
exports.getExpectedOutput = getExpectedOutput;
|
|
95
|
-
/**
|
|
96
|
-
* Calculates the expected input for a given output amount, based on the provided market data.
|
|
97
|
-
*
|
|
98
|
-
* @param chainId The chain ID of the blockchain.
|
|
99
|
-
* @param inputToken The address of the input token.
|
|
100
|
-
* @param outputToken The address of the output token.
|
|
101
|
-
* @param amountOut The amount of expected output amount. (ex 1.2 ETH -> 1.2)
|
|
102
|
-
* @param options
|
|
103
|
-
* @param options.limitPrice The maximum limit price to take.
|
|
104
|
-
* @param options.rpcUrl The RPC URL of the blockchain.
|
|
105
|
-
* @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
|
|
106
|
-
* @example
|
|
107
|
-
* import { getExpectedInput } from '@clober/v2-sdk'
|
|
108
|
-
*
|
|
109
|
-
* const { takenAmount, spendAmount } = await getExpectedInput(
|
|
110
|
-
* 421614,
|
|
111
|
-
* '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
|
|
112
|
-
* '0x0000000000000000000000000000000000000000',
|
|
113
|
-
* '0.1', // take 0.1 ETH
|
|
114
|
-
* )
|
|
115
|
-
*/
|
|
116
56
|
const getExpectedInput = async (chainId, inputToken, outputToken, amountOut, options) => {
|
|
117
57
|
const market = await (0, market_1.fetchMarket)(chainId, [inputToken, outputToken], options?.rpcUrl);
|
|
118
58
|
const isBid = (0, viem_1.isAddressEqual)(market.quote.address, inputToken);
|
|
@@ -142,42 +82,10 @@ const getExpectedInput = async (chainId, inputToken, outputToken, amountOut, opt
|
|
|
142
82
|
};
|
|
143
83
|
};
|
|
144
84
|
exports.getExpectedInput = getExpectedInput;
|
|
145
|
-
/**
|
|
146
|
-
* Retrieves the open order with the specified ID on the given chain.
|
|
147
|
-
*
|
|
148
|
-
* @param {CHAIN_IDS} chainId The chain ID.
|
|
149
|
-
* @param {string} id The ID of the open order.
|
|
150
|
-
* @param options
|
|
151
|
-
* @param options.rpcUrl The RPC URL of the blockchain.
|
|
152
|
-
* @returns {Promise<OpenOrder>} Promise resolving to the open order object, or undefined if not found.
|
|
153
|
-
* @example
|
|
154
|
-
* import { getOpenOrder } from '@clober/v2-sdk'
|
|
155
|
-
*
|
|
156
|
-
* const openOrder = await getOpenOrder(
|
|
157
|
-
* 421614,
|
|
158
|
-
* '46223845323662364279893361453861711542636620039907198451770258805035840307200'
|
|
159
|
-
* )
|
|
160
|
-
*/
|
|
161
85
|
const getOpenOrder = async (chainId, id, options) => {
|
|
162
86
|
return (0, open_order_1.fetchOpenOrder)(chainId, id, options?.rpcUrl);
|
|
163
87
|
};
|
|
164
88
|
exports.getOpenOrder = getOpenOrder;
|
|
165
|
-
/**
|
|
166
|
-
* Retrieves open orders for the specified user on the given chain.
|
|
167
|
-
*
|
|
168
|
-
* @param {CHAIN_IDS} chainId The chain ID.
|
|
169
|
-
* @param {`0x${string}`} userAddress The Ethereum address of the user.
|
|
170
|
-
* @param options
|
|
171
|
-
* @param options.rpcUrl The RPC URL of the blockchain.
|
|
172
|
-
* @returns {Promise<OpenOrder[]>} Promise resolving to an array of open orders.
|
|
173
|
-
* @example
|
|
174
|
-
* import { getOpenOrders } from '@clober/v2-sdk'
|
|
175
|
-
*
|
|
176
|
-
* const openOrders = await getOpenOrders(
|
|
177
|
-
* 421614,
|
|
178
|
-
* '0x5F79EE8f8fA862E98201120d83c4eC39D9468D49'
|
|
179
|
-
* )
|
|
180
|
-
*/
|
|
181
89
|
const getOpenOrders = async (chainId, userAddress, options) => {
|
|
182
90
|
return (0, open_order_1.fetchOpenOrders)(chainId, userAddress, options?.rpcUrl);
|
|
183
91
|
};
|
package/dist/cjs/view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":";;;AAAA,+BAA8D;AAE9D,0CAA2C;AAG3C,2CAA2C;AAC3C,6CAA6C;AAC7C,kDAAmE;
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/apis/market.js
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { getAddress, isAddressEqual } from 'viem';
|
|
2
2
|
import { Market } from '../model/market';
|
|
3
|
-
import { SUBGRAPH_URL } from '../constants/subgraph-url';
|
|
4
|
-
import { getBuiltGraphSDK } from '../.graphclient';
|
|
5
3
|
import { Book } from '../model/book';
|
|
6
4
|
import { getMarketId } from '../utils/market';
|
|
7
5
|
import { fetchCurrency } from './currency';
|
|
8
|
-
|
|
6
|
+
import { fetchSubgraph } from './subgraph';
|
|
7
|
+
const getBooks = async (chainId, baseTokenAddress, quoteTokenAddress) => {
|
|
8
|
+
return fetchSubgraph(chainId, 'getBooks', 'query getBooks($baseTokenAddress: String!, $quoteTokenAddress: String!) { books( where: {base: $baseTokenAddress, quote: $quoteTokenAddress, makerPolicy: "8888308", takerPolicy: "8889608", hooks: "0x0000000000000000000000000000000000000000"} ) { id base { id name symbol decimals } quote { id name symbol decimals } unit depths { tick price rawAmount } } }', {
|
|
9
|
+
baseTokenAddress: baseTokenAddress.toLowerCase(),
|
|
10
|
+
quoteTokenAddress: quoteTokenAddress.toLowerCase(),
|
|
11
|
+
});
|
|
12
|
+
};
|
|
9
13
|
export async function fetchMarket(chainId, tokenAddresses, rpcUrl) {
|
|
10
14
|
if (tokenAddresses.length !== 2) {
|
|
11
15
|
throw new Error('Invalid token pair');
|
|
@@ -14,21 +18,11 @@ export async function fetchMarket(chainId, tokenAddresses, rpcUrl) {
|
|
|
14
18
|
tokenAddresses[0],
|
|
15
19
|
tokenAddresses[1],
|
|
16
20
|
]);
|
|
17
|
-
const [quoteCurrency, baseCurrency, { books: bidBooks }, { books: askBooks },] = await Promise.all([
|
|
21
|
+
const [quoteCurrency, baseCurrency, { data: { books: bidBooks }, }, { data: { books: askBooks }, },] = await Promise.all([
|
|
18
22
|
fetchCurrency(chainId, quoteTokenAddress, rpcUrl),
|
|
19
23
|
fetchCurrency(chainId, baseTokenAddress, rpcUrl),
|
|
20
|
-
getBooks(
|
|
21
|
-
|
|
22
|
-
baseTokenAddress: baseTokenAddress.toLowerCase(),
|
|
23
|
-
}, {
|
|
24
|
-
url: SUBGRAPH_URL[chainId],
|
|
25
|
-
}),
|
|
26
|
-
getBooks({
|
|
27
|
-
quoteTokenAddress: baseTokenAddress.toLowerCase(),
|
|
28
|
-
baseTokenAddress: quoteTokenAddress.toLowerCase(),
|
|
29
|
-
}, {
|
|
30
|
-
url: SUBGRAPH_URL[chainId],
|
|
31
|
-
}),
|
|
24
|
+
getBooks(chainId, quoteTokenAddress, baseTokenAddress),
|
|
25
|
+
getBooks(chainId, baseTokenAddress, quoteTokenAddress),
|
|
32
26
|
]);
|
|
33
27
|
return new Market({
|
|
34
28
|
chainId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/apis/market.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAGjD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AACxC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/apis/market.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import { formatUnits, getAddress, isAddressEqual } from 'viem';
|
|
2
|
-
import { getBuiltGraphSDK, } from '../.graphclient';
|
|
3
|
-
import { SUBGRAPH_URL } from '../constants/subgraph-url';
|
|
4
2
|
import { getMarketId } from '../utils/market';
|
|
5
3
|
import { quoteToBase } from '../utils/decimals';
|
|
6
4
|
import { formatPrice } from '../utils/prices';
|
|
7
5
|
import { invertPrice, toPrice } from '../utils/tick';
|
|
8
6
|
import { fetchCurrency } from './currency';
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
import { fetchSubgraph } from './subgraph';
|
|
8
|
+
const getOpenOrder = async (chainId, orderId) => {
|
|
9
|
+
return fetchSubgraph(chainId, 'getOpenOrder', 'query getOpenOrder($orderId: ID!) { openOrder(id: $orderId) { id book { id base { id name symbol decimals } quote { id name symbol decimals } unit } tick txHash createdAt rawAmount rawFilledAmount rawClaimedAmount rawClaimableAmount } }', {
|
|
10
|
+
orderId,
|
|
11
|
+
});
|
|
12
|
+
};
|
|
13
|
+
const getOpenOrders = async (chainId, userAddress) => {
|
|
14
|
+
return fetchSubgraph(chainId, 'getOpenOrders', 'query getOpenOrders($userAddress: String!) { openOrders(where: { user: $userAddress }) { id book { id base { id name symbol decimals } quote { id name symbol decimals } unit } tick txHash createdAt rawAmount rawFilledAmount rawClaimedAmount rawClaimableAmount } }', {
|
|
12
15
|
userAddress: userAddress.toLowerCase(),
|
|
13
|
-
}, {
|
|
14
|
-
url: SUBGRAPH_URL[chainId],
|
|
15
16
|
});
|
|
17
|
+
};
|
|
18
|
+
export async function fetchOpenOrders(chainId, userAddress, rpcUrl) {
|
|
19
|
+
const { data: { openOrders }, } = await getOpenOrders(chainId, userAddress);
|
|
16
20
|
const currencies = await Promise.all(openOrders
|
|
17
21
|
.map((openOrder) => [
|
|
18
22
|
getAddress(openOrder.book.base.id),
|
|
@@ -24,11 +28,7 @@ export async function fetchOpenOrders(chainId, userAddress, rpcUrl) {
|
|
|
24
28
|
return openOrders.map((openOrder) => toOpenOrder(chainId, currencies, openOrder));
|
|
25
29
|
}
|
|
26
30
|
export async function fetchOpenOrder(chainId, id, rpcUrl) {
|
|
27
|
-
const { openOrder } = await getOpenOrder(
|
|
28
|
-
orderId: id,
|
|
29
|
-
}, {
|
|
30
|
-
url: SUBGRAPH_URL[chainId],
|
|
31
|
-
});
|
|
31
|
+
const { data: { openOrder }, } = await getOpenOrder(chainId, id);
|
|
32
32
|
if (!openOrder) {
|
|
33
33
|
throw new Error(`Open order not found: ${id}`);
|
|
34
34
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"open-order.js","sourceRoot":"","sources":["../../../src/apis/open-order.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"open-order.js","sourceRoot":"","sources":["../../../src/apis/open-order.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SUBGRAPH_URL } from '../constants/subgraph-url';
|
|
2
|
+
export async function fetchSubgraph(chainId, operationName, query, variables) {
|
|
3
|
+
const response = await fetch(SUBGRAPH_URL[chainId], {
|
|
4
|
+
method: 'POST',
|
|
5
|
+
headers: {
|
|
6
|
+
'Content-Type': 'application/json',
|
|
7
|
+
},
|
|
8
|
+
body: JSON.stringify({
|
|
9
|
+
query,
|
|
10
|
+
variables,
|
|
11
|
+
operationName,
|
|
12
|
+
}),
|
|
13
|
+
});
|
|
14
|
+
if (response.ok) {
|
|
15
|
+
return response.json();
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
const errorResponse = await response.json();
|
|
19
|
+
throw new Error(errorResponse.message || 'Unknown Error');
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=subgraph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../src/apis/subgraph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAGxD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAkB,EAClB,aAAqB,EACrB,KAAa,EACb,SAAa;IAEb,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,OAAO,CAAE,EAAE;QACnD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;SACnC;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YACnB,KAAK;YACL,SAAS;YACT,aAAa;SACd,CAAC;KACH,CAAC,CAAA;IAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;SAAM,CAAC;QACN,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;QAE3C,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,OAAO,IAAI,eAAe,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC"}
|
package/dist/esm/model/book.js
CHANGED
|
@@ -3,124 +3,159 @@ import { TAKER_DEFAULT_POLICY } from '../constants/fee';
|
|
|
3
3
|
import { divide } from '../utils/math';
|
|
4
4
|
import { baseToQuote, quoteToBase } from '../utils/decimals';
|
|
5
5
|
export class Book {
|
|
6
|
-
id;
|
|
7
|
-
base;
|
|
8
|
-
unit;
|
|
9
|
-
quote;
|
|
10
|
-
depths;
|
|
11
6
|
constructor({ id, base, quote, unit, depths, }) {
|
|
7
|
+
Object.defineProperty(this, "id", {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
configurable: true,
|
|
10
|
+
writable: true,
|
|
11
|
+
value: void 0
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(this, "base", {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
configurable: true,
|
|
16
|
+
writable: true,
|
|
17
|
+
value: void 0
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(this, "unit", {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
configurable: true,
|
|
22
|
+
writable: true,
|
|
23
|
+
value: void 0
|
|
24
|
+
});
|
|
25
|
+
Object.defineProperty(this, "quote", {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
configurable: true,
|
|
28
|
+
writable: true,
|
|
29
|
+
value: void 0
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(this, "depths", {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
configurable: true,
|
|
34
|
+
writable: true,
|
|
35
|
+
value: void 0
|
|
36
|
+
});
|
|
37
|
+
Object.defineProperty(this, "take", {
|
|
38
|
+
enumerable: true,
|
|
39
|
+
configurable: true,
|
|
40
|
+
writable: true,
|
|
41
|
+
value: ({ limitPrice, amountOut, // quote
|
|
42
|
+
}) => {
|
|
43
|
+
let takenQuoteAmount = 0n;
|
|
44
|
+
let spendBaseAmount = 0n;
|
|
45
|
+
if (this.depths.length === 0) {
|
|
46
|
+
return {
|
|
47
|
+
takenQuoteAmount,
|
|
48
|
+
spendBaseAmount,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
const ticks = this.depths
|
|
52
|
+
.sort((a, b) => Number(b.tick) - Number(a.tick))
|
|
53
|
+
.map((depth) => depth.tick);
|
|
54
|
+
let index = 0;
|
|
55
|
+
let tick = ticks[index];
|
|
56
|
+
while (tick > -8388608n) {
|
|
57
|
+
if (limitPrice > toPrice(tick)) {
|
|
58
|
+
break;
|
|
59
|
+
}
|
|
60
|
+
let maxAmount = TAKER_DEFAULT_POLICY.usesQuote
|
|
61
|
+
? TAKER_DEFAULT_POLICY.calculateOriginalAmount(amountOut - takenQuoteAmount, true)
|
|
62
|
+
: amountOut - takenQuoteAmount;
|
|
63
|
+
maxAmount = divide(maxAmount, this.unit, true);
|
|
64
|
+
if (maxAmount === 0n) {
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
const currentDepth = this.depths.find((depth) => depth.tick === tick);
|
|
68
|
+
let quoteAmount = (currentDepth.rawAmount > maxAmount
|
|
69
|
+
? maxAmount
|
|
70
|
+
: currentDepth.rawAmount) * this.unit;
|
|
71
|
+
let baseAmount = quoteToBase(tick, quoteAmount, true);
|
|
72
|
+
if (TAKER_DEFAULT_POLICY.usesQuote) {
|
|
73
|
+
quoteAmount =
|
|
74
|
+
quoteAmount - TAKER_DEFAULT_POLICY.calculateFee(quoteAmount, false);
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
baseAmount =
|
|
78
|
+
baseAmount + TAKER_DEFAULT_POLICY.calculateFee(baseAmount, false);
|
|
79
|
+
}
|
|
80
|
+
if (quoteAmount === 0n) {
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
takenQuoteAmount += quoteAmount;
|
|
84
|
+
spendBaseAmount += baseAmount;
|
|
85
|
+
if (amountOut <= takenQuoteAmount) {
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
index++;
|
|
89
|
+
tick = ticks[index];
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
takenQuoteAmount,
|
|
93
|
+
spendBaseAmount,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
Object.defineProperty(this, "spend", {
|
|
98
|
+
enumerable: true,
|
|
99
|
+
configurable: true,
|
|
100
|
+
writable: true,
|
|
101
|
+
value: ({ limitPrice, amountIn, // base
|
|
102
|
+
}) => {
|
|
103
|
+
let takenQuoteAmount = 0n;
|
|
104
|
+
let spendBaseAmount = 0n;
|
|
105
|
+
if (this.depths.length === 0) {
|
|
106
|
+
return {
|
|
107
|
+
takenQuoteAmount,
|
|
108
|
+
spendBaseAmount,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
const ticks = this.depths
|
|
112
|
+
.sort((a, b) => Number(b.tick) - Number(a.tick))
|
|
113
|
+
.map((depth) => depth.tick);
|
|
114
|
+
let index = 0;
|
|
115
|
+
let tick = ticks[index];
|
|
116
|
+
while (spendBaseAmount <= amountIn && tick > -8388608n) {
|
|
117
|
+
if (limitPrice > toPrice(tick)) {
|
|
118
|
+
break;
|
|
119
|
+
}
|
|
120
|
+
let maxAmount = TAKER_DEFAULT_POLICY.usesQuote
|
|
121
|
+
? amountIn - spendBaseAmount
|
|
122
|
+
: TAKER_DEFAULT_POLICY.calculateOriginalAmount(amountIn - spendBaseAmount, false);
|
|
123
|
+
maxAmount = baseToQuote(tick, maxAmount, false) / this.unit;
|
|
124
|
+
if (maxAmount === 0n) {
|
|
125
|
+
break;
|
|
126
|
+
}
|
|
127
|
+
const currentDepth = this.depths.find((depth) => depth.tick === tick);
|
|
128
|
+
let quoteAmount = (currentDepth.rawAmount > maxAmount
|
|
129
|
+
? maxAmount
|
|
130
|
+
: currentDepth.rawAmount) * this.unit;
|
|
131
|
+
let baseAmount = quoteToBase(tick, quoteAmount, true);
|
|
132
|
+
if (TAKER_DEFAULT_POLICY.usesQuote) {
|
|
133
|
+
quoteAmount =
|
|
134
|
+
quoteAmount - TAKER_DEFAULT_POLICY.calculateFee(quoteAmount, false);
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
baseAmount =
|
|
138
|
+
baseAmount + TAKER_DEFAULT_POLICY.calculateFee(baseAmount, false);
|
|
139
|
+
}
|
|
140
|
+
if (baseAmount === 0n) {
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
takenQuoteAmount += quoteAmount;
|
|
144
|
+
spendBaseAmount += baseAmount;
|
|
145
|
+
index++;
|
|
146
|
+
tick = ticks[index];
|
|
147
|
+
}
|
|
148
|
+
return {
|
|
149
|
+
takenQuoteAmount,
|
|
150
|
+
spendBaseAmount,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
});
|
|
12
154
|
this.id = id;
|
|
13
155
|
this.base = base;
|
|
14
156
|
this.unit = unit;
|
|
15
157
|
this.quote = quote;
|
|
16
158
|
this.depths = depths;
|
|
17
159
|
}
|
|
18
|
-
take = ({ limitPrice, amountOut, // quote
|
|
19
|
-
}) => {
|
|
20
|
-
let takenQuoteAmount = 0n;
|
|
21
|
-
let spendBaseAmount = 0n;
|
|
22
|
-
if (this.depths.length === 0) {
|
|
23
|
-
return {
|
|
24
|
-
takenQuoteAmount,
|
|
25
|
-
spendBaseAmount,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
const ticks = this.depths
|
|
29
|
-
.sort((a, b) => Number(b.tick) - Number(a.tick))
|
|
30
|
-
.map((depth) => depth.tick);
|
|
31
|
-
let index = 0;
|
|
32
|
-
let tick = ticks[index];
|
|
33
|
-
while (tick > -8388608n) {
|
|
34
|
-
if (limitPrice > toPrice(tick)) {
|
|
35
|
-
break;
|
|
36
|
-
}
|
|
37
|
-
let maxAmount = TAKER_DEFAULT_POLICY.usesQuote
|
|
38
|
-
? TAKER_DEFAULT_POLICY.calculateOriginalAmount(amountOut - takenQuoteAmount, true)
|
|
39
|
-
: amountOut - takenQuoteAmount;
|
|
40
|
-
maxAmount = divide(maxAmount, this.unit, true);
|
|
41
|
-
if (maxAmount === 0n) {
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
const currentDepth = this.depths.find((depth) => depth.tick === tick);
|
|
45
|
-
let quoteAmount = (currentDepth.rawAmount > maxAmount
|
|
46
|
-
? maxAmount
|
|
47
|
-
: currentDepth.rawAmount) * this.unit;
|
|
48
|
-
let baseAmount = quoteToBase(tick, quoteAmount, true);
|
|
49
|
-
if (TAKER_DEFAULT_POLICY.usesQuote) {
|
|
50
|
-
quoteAmount =
|
|
51
|
-
quoteAmount - TAKER_DEFAULT_POLICY.calculateFee(quoteAmount, false);
|
|
52
|
-
}
|
|
53
|
-
else {
|
|
54
|
-
baseAmount =
|
|
55
|
-
baseAmount + TAKER_DEFAULT_POLICY.calculateFee(baseAmount, false);
|
|
56
|
-
}
|
|
57
|
-
if (quoteAmount === 0n) {
|
|
58
|
-
break;
|
|
59
|
-
}
|
|
60
|
-
takenQuoteAmount += quoteAmount;
|
|
61
|
-
spendBaseAmount += baseAmount;
|
|
62
|
-
if (amountOut <= takenQuoteAmount) {
|
|
63
|
-
break;
|
|
64
|
-
}
|
|
65
|
-
index++;
|
|
66
|
-
tick = ticks[index];
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
takenQuoteAmount,
|
|
70
|
-
spendBaseAmount,
|
|
71
|
-
};
|
|
72
|
-
};
|
|
73
|
-
spend = ({ limitPrice, amountIn, // base
|
|
74
|
-
}) => {
|
|
75
|
-
let takenQuoteAmount = 0n;
|
|
76
|
-
let spendBaseAmount = 0n;
|
|
77
|
-
if (this.depths.length === 0) {
|
|
78
|
-
return {
|
|
79
|
-
takenQuoteAmount,
|
|
80
|
-
spendBaseAmount,
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
const ticks = this.depths
|
|
84
|
-
.sort((a, b) => Number(b.tick) - Number(a.tick))
|
|
85
|
-
.map((depth) => depth.tick);
|
|
86
|
-
let index = 0;
|
|
87
|
-
let tick = ticks[index];
|
|
88
|
-
while (spendBaseAmount <= amountIn && tick > -8388608n) {
|
|
89
|
-
if (limitPrice > toPrice(tick)) {
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
let maxAmount = TAKER_DEFAULT_POLICY.usesQuote
|
|
93
|
-
? amountIn - spendBaseAmount
|
|
94
|
-
: TAKER_DEFAULT_POLICY.calculateOriginalAmount(amountIn - spendBaseAmount, false);
|
|
95
|
-
maxAmount = baseToQuote(tick, maxAmount, false) / this.unit;
|
|
96
|
-
if (maxAmount === 0n) {
|
|
97
|
-
break;
|
|
98
|
-
}
|
|
99
|
-
const currentDepth = this.depths.find((depth) => depth.tick === tick);
|
|
100
|
-
let quoteAmount = (currentDepth.rawAmount > maxAmount
|
|
101
|
-
? maxAmount
|
|
102
|
-
: currentDepth.rawAmount) * this.unit;
|
|
103
|
-
let baseAmount = quoteToBase(tick, quoteAmount, true);
|
|
104
|
-
if (TAKER_DEFAULT_POLICY.usesQuote) {
|
|
105
|
-
quoteAmount =
|
|
106
|
-
quoteAmount - TAKER_DEFAULT_POLICY.calculateFee(quoteAmount, false);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
baseAmount =
|
|
110
|
-
baseAmount + TAKER_DEFAULT_POLICY.calculateFee(baseAmount, false);
|
|
111
|
-
}
|
|
112
|
-
if (baseAmount === 0n) {
|
|
113
|
-
break;
|
|
114
|
-
}
|
|
115
|
-
takenQuoteAmount += quoteAmount;
|
|
116
|
-
spendBaseAmount += baseAmount;
|
|
117
|
-
index++;
|
|
118
|
-
tick = ticks[index];
|
|
119
|
-
}
|
|
120
|
-
return {
|
|
121
|
-
takenQuoteAmount,
|
|
122
|
-
spendBaseAmount,
|
|
123
|
-
};
|
|
124
|
-
};
|
|
125
160
|
}
|
|
126
161
|
//# sourceMappingURL=book.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"book.js","sourceRoot":"","sources":["../../../src/model/book.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"book.js","sourceRoot":"","sources":["../../../src/model/book.ts"],"names":[],"mappings":"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"}
|