@clober/v2-sdk 0.0.3 → 0.0.5
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/abis/core/book-viewer-abi.js +189 -0
- package/dist/cjs/abis/core/book-viewer-abi.js.map +1 -0
- package/dist/cjs/apis/market.js +42 -33
- package/dist/cjs/apis/market.js.map +1 -1
- package/dist/cjs/apis/open-order.js +10 -7
- package/dist/cjs/apis/open-order.js.map +1 -1
- package/dist/cjs/apis/subgraph.js.map +1 -1
- package/dist/cjs/approval.js +4 -4
- package/dist/cjs/approval.js.map +1 -1
- package/dist/cjs/call.js +197 -186
- package/dist/cjs/call.js.map +1 -1
- package/dist/cjs/constants/client.js +14 -0
- package/dist/cjs/constants/client.js.map +1 -0
- package/dist/cjs/model/book.js +8 -1
- package/dist/cjs/model/book.js.map +1 -1
- package/dist/cjs/model/market.js +44 -171
- package/dist/cjs/model/market.js.map +1 -1
- package/dist/cjs/signature.js +7 -11
- package/dist/cjs/signature.js.map +1 -1
- package/dist/cjs/utils/approval.js +3 -8
- package/dist/cjs/utils/approval.js.map +1 -1
- package/dist/cjs/utils/build-transaction.js +4 -8
- package/dist/cjs/utils/build-transaction.js.map +1 -1
- package/dist/cjs/{apis → utils}/currency.js +3 -7
- package/dist/cjs/utils/currency.js.map +1 -0
- package/dist/cjs/utils/decorator.js +13 -0
- package/dist/cjs/utils/decorator.js.map +1 -0
- package/dist/cjs/utils/open.js +36 -0
- package/dist/cjs/utils/open.js.map +1 -0
- package/dist/cjs/utils/unit.js +3 -7
- package/dist/cjs/utils/unit.js.map +1 -1
- package/dist/cjs/view.js +24 -44
- package/dist/cjs/view.js.map +1 -1
- package/dist/esm/abis/core/book-viewer-abi.js +186 -0
- package/dist/esm/abis/core/book-viewer-abi.js.map +1 -0
- package/dist/esm/apis/market.js +43 -34
- package/dist/esm/apis/market.js.map +1 -1
- package/dist/esm/apis/open-order.js +10 -7
- package/dist/esm/apis/open-order.js.map +1 -1
- package/dist/esm/apis/subgraph.js.map +1 -1
- package/dist/esm/approval.js +5 -4
- package/dist/esm/approval.js.map +1 -1
- package/dist/esm/call.js +213 -191
- package/dist/esm/call.js.map +1 -1
- package/dist/esm/constants/client.js +10 -0
- package/dist/esm/constants/client.js.map +1 -0
- package/dist/esm/model/book.js +8 -1
- package/dist/esm/model/book.js.map +1 -1
- package/dist/esm/model/market.js +45 -176
- package/dist/esm/model/market.js.map +1 -1
- package/dist/esm/signature.js +8 -11
- package/dist/esm/signature.js.map +1 -1
- package/dist/esm/utils/approval.js +3 -8
- package/dist/esm/utils/approval.js.map +1 -1
- package/dist/esm/utils/build-transaction.js +5 -9
- package/dist/esm/utils/build-transaction.js.map +1 -1
- package/dist/esm/{apis → utils}/currency.js +4 -8
- package/dist/esm/utils/currency.js.map +1 -0
- package/dist/esm/utils/decorator.js +9 -0
- package/dist/esm/utils/decorator.js.map +1 -0
- package/dist/esm/utils/open.js +32 -0
- package/dist/esm/utils/open.js.map +1 -0
- package/dist/esm/utils/unit.js +4 -8
- package/dist/esm/utils/unit.js.map +1 -1
- package/dist/esm/view.js +25 -39
- package/dist/esm/view.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/abis/core/book-viewer-abi.d.ts +141 -0
- package/dist/types/abis/core/book-viewer-abi.d.ts.map +1 -0
- package/dist/types/apis/market.d.ts +1 -1
- package/dist/types/apis/market.d.ts.map +1 -1
- package/dist/types/apis/open-order.d.ts +3 -3
- package/dist/types/apis/open-order.d.ts.map +1 -1
- package/dist/types/approval.d.ts +6 -3
- package/dist/types/approval.d.ts.map +1 -1
- package/dist/types/call.d.ts +82 -31
- package/dist/types/call.d.ts.map +1 -1
- package/dist/types/constants/client.d.ts +5 -0
- package/dist/types/constants/client.d.ts.map +1 -0
- package/dist/types/model/book.d.ts +3 -1
- package/dist/types/model/book.d.ts.map +1 -1
- package/dist/types/model/depth.d.ts +0 -2
- package/dist/types/model/depth.d.ts.map +1 -1
- package/dist/types/model/market.d.ts +11 -13
- package/dist/types/model/market.d.ts.map +1 -1
- package/dist/types/model/open-order.d.ts +5 -2
- package/dist/types/model/open-order.d.ts.map +1 -1
- package/dist/types/signature.d.ts +7 -3
- package/dist/types/signature.d.ts.map +1 -1
- package/dist/types/type.d.ts +14 -6
- package/dist/types/type.d.ts.map +1 -1
- package/dist/types/utils/approval.d.ts +1 -1
- package/dist/types/utils/approval.d.ts.map +1 -1
- package/dist/types/utils/build-transaction.d.ts +3 -4
- package/dist/types/utils/build-transaction.d.ts.map +1 -1
- package/dist/types/{apis → utils}/currency.d.ts +1 -1
- package/dist/types/utils/currency.d.ts.map +1 -0
- package/dist/types/utils/decorator.d.ts +6 -0
- package/dist/types/utils/decorator.d.ts.map +1 -0
- package/dist/types/utils/open.d.ts +3 -0
- package/dist/types/utils/open.d.ts.map +1 -0
- package/dist/types/utils/unit.d.ts +2 -2
- package/dist/types/utils/unit.d.ts.map +1 -1
- package/dist/types/view.d.ts +36 -24
- package/dist/types/view.d.ts.map +1 -1
- package/package.json +1 -8
- package/dist/cjs/apis/currency.js.map +0 -1
- package/dist/esm/apis/currency.js.map +0 -1
- package/dist/types/apis/currency.d.ts.map +0 -1
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { cachedPublicClients } from '../constants/client';
|
|
2
|
+
import { CONTRACT_ADDRESSES } from '../constants/addresses';
|
|
3
|
+
const _abi = [
|
|
4
|
+
{
|
|
5
|
+
inputs: [
|
|
6
|
+
{
|
|
7
|
+
internalType: 'BookId',
|
|
8
|
+
name: 'id',
|
|
9
|
+
type: 'uint192',
|
|
10
|
+
},
|
|
11
|
+
],
|
|
12
|
+
name: 'isOpened',
|
|
13
|
+
outputs: [
|
|
14
|
+
{
|
|
15
|
+
internalType: 'bool',
|
|
16
|
+
name: '',
|
|
17
|
+
type: 'bool',
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
stateMutability: 'view',
|
|
21
|
+
type: 'function',
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
export async function fetchIsOpened(chainId, bookId) {
|
|
25
|
+
return cachedPublicClients[chainId].readContract({
|
|
26
|
+
address: CONTRACT_ADDRESSES[chainId].BookManager,
|
|
27
|
+
abi: _abi,
|
|
28
|
+
functionName: 'isOpened',
|
|
29
|
+
args: [bookId],
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=open.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open.js","sourceRoot":"","sources":["../../../src/utils/open.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,QAAQ;gBACtB,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,MAAM;aACb;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAkB,EAAE,MAAc;IACpE,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;QAC/C,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAE,CAAC,WAAW;QACjD,GAAG,EAAE,IAAI;QACT,YAAY,EAAE,UAAU;QACxB,IAAI,EAAE,CAAC,MAAM,CAAC;KACf,CAAC,CAAA;AACJ,CAAC"}
|
package/dist/esm/utils/unit.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { isAddressEqual, zeroAddress } from 'viem';
|
|
2
|
+
import { cachedPublicClients } from '../constants/client';
|
|
3
3
|
const _abi = [
|
|
4
4
|
{
|
|
5
5
|
inputs: [],
|
|
@@ -15,15 +15,11 @@ const _abi = [
|
|
|
15
15
|
type: 'function',
|
|
16
16
|
},
|
|
17
17
|
];
|
|
18
|
-
export const calculateUnit = async (chainId, quote
|
|
18
|
+
export const calculateUnit = async (chainId, quote) => {
|
|
19
19
|
if (isAddressEqual(quote.address, zeroAddress)) {
|
|
20
20
|
return 10n ** 12n;
|
|
21
21
|
}
|
|
22
|
-
const
|
|
23
|
-
chain: CHAIN_MAP[chainId],
|
|
24
|
-
transport: rpcUrl ? http(rpcUrl) : http(),
|
|
25
|
-
});
|
|
26
|
-
const totalSupply = await publicClient.readContract({
|
|
22
|
+
const totalSupply = await cachedPublicClients[chainId].readContract({
|
|
27
23
|
address: quote.address,
|
|
28
24
|
abi: _abi,
|
|
29
25
|
functionName: 'totalSupply',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unit.js","sourceRoot":"","sources":["../../../src/utils/unit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"unit.js","sourceRoot":"","sources":["../../../src/utils/unit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAIlD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,OAAkB,EAAE,KAAe,EAAE,EAAE;IACzE,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG,IAAI,GAAG,CAAA;IACnB,CAAC;IACD,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;QAClE,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,EAAE,IAAI;QACT,YAAY,EAAE,aAAa;KAC5B,CAAC,CAAA;IACF,OAAO,CACL,GAAG;QACH,MAAM,CAAC,WAAW,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CACxE,CAAA;AACH,CAAC,CAAA"}
|
package/dist/esm/view.js
CHANGED
|
@@ -3,12 +3,14 @@ import { fetchMarket } from './apis/market';
|
|
|
3
3
|
import { parsePrice } from './utils/prices';
|
|
4
4
|
import { MAX_PRICE } from './constants/price';
|
|
5
5
|
import { fetchOpenOrder, fetchOpenOrders } from './apis/open-order';
|
|
6
|
+
import { decorator } from './utils/decorator';
|
|
6
7
|
/**
|
|
7
8
|
* Get market information by chain id and token addresses
|
|
8
9
|
* @param chainId - chain id from {@link CHAIN_IDS}
|
|
9
10
|
* @param token0 - token0 address
|
|
10
11
|
* @param token1 - token1 address
|
|
11
12
|
* @param options
|
|
13
|
+
* @param options.n - number of depth levels to fetch
|
|
12
14
|
* @param options.rpcUrl - RPC URL of the blockchain
|
|
13
15
|
* @returns A market {@link Market}
|
|
14
16
|
*
|
|
@@ -21,11 +23,11 @@ import { fetchOpenOrder, fetchOpenOrders } from './apis/open-order';
|
|
|
21
23
|
* '0x0000000000000000000000000000000000000000',
|
|
22
24
|
* )
|
|
23
25
|
*/
|
|
24
|
-
export const getMarket = async (chainId, token0, token1, options) => {
|
|
26
|
+
export const getMarket = decorator(async ({ chainId, token0, token1, options, }) => {
|
|
25
27
|
if (isAddressEqual(token0, token1)) {
|
|
26
28
|
throw new Error('Token0 and token1 must be different');
|
|
27
29
|
}
|
|
28
|
-
const market = await fetchMarket(chainId, [token0, token1], options?.
|
|
30
|
+
const market = await fetchMarket(chainId, [token0, token1], options?.n);
|
|
29
31
|
return {
|
|
30
32
|
chainId,
|
|
31
33
|
quote: market.quote,
|
|
@@ -37,7 +39,7 @@ export const getMarket = async (chainId, token0, token1, options) => {
|
|
|
37
39
|
asks: market.asks,
|
|
38
40
|
askBookOpen: market.askBookOpen,
|
|
39
41
|
};
|
|
40
|
-
};
|
|
42
|
+
});
|
|
41
43
|
/**
|
|
42
44
|
* Calculates the expected output for a given input amount, based on the provided market data.
|
|
43
45
|
*
|
|
@@ -59,8 +61,8 @@ export const getMarket = async (chainId, token0, token1, options) => {
|
|
|
59
61
|
* '1000.123', // spend 1000.123 USDC
|
|
60
62
|
* )
|
|
61
63
|
*/
|
|
62
|
-
export const getExpectedOutput = async (chainId, inputToken, outputToken, amountIn, options) => {
|
|
63
|
-
const market = await fetchMarket(chainId, [inputToken, outputToken]
|
|
64
|
+
export const getExpectedOutput = decorator(async ({ chainId, inputToken, outputToken, amountIn, options, }) => {
|
|
65
|
+
const market = await fetchMarket(chainId, [inputToken, outputToken]);
|
|
64
66
|
const isBid = isAddressEqual(market.quote.address, inputToken);
|
|
65
67
|
const rawLimitPrice = options && options.limitPrice
|
|
66
68
|
? parsePrice(Number(options.limitPrice), market.quote.decimals, market.base.decimals)
|
|
@@ -68,25 +70,17 @@ export const getExpectedOutput = async (chainId, inputToken, outputToken, amount
|
|
|
68
70
|
? MAX_PRICE
|
|
69
71
|
: 0n;
|
|
70
72
|
const inputCurrency = isBid ? market.quote : market.base;
|
|
71
|
-
const
|
|
73
|
+
const { takenQuoteAmount, spendBaseAmount, bookId } = market.spend({
|
|
72
74
|
spendBase: !isBid,
|
|
73
75
|
limitPrice: rawLimitPrice,
|
|
74
76
|
amountIn: parseUnits(amountIn, inputCurrency.decimals),
|
|
75
77
|
});
|
|
76
|
-
const { takenAmount, spendAmount } = Object.values(result).reduce((acc, { takenAmount, spendAmount }) => ({
|
|
77
|
-
takenAmount: acc.takenAmount + takenAmount,
|
|
78
|
-
spendAmount: acc.spendAmount + spendAmount,
|
|
79
|
-
}), { takenAmount: 0n, spendAmount: 0n });
|
|
80
78
|
return {
|
|
81
|
-
takenAmount: formatUnits(
|
|
82
|
-
spendAmount: formatUnits(
|
|
83
|
-
|
|
84
|
-
bookId: BigInt(bookId),
|
|
85
|
-
takenAmount,
|
|
86
|
-
spendAmount,
|
|
87
|
-
})),
|
|
79
|
+
takenAmount: formatUnits(takenQuoteAmount, isBid ? market.base.decimals : market.quote.decimals),
|
|
80
|
+
spendAmount: formatUnits(spendBaseAmount, isBid ? market.quote.decimals : market.base.decimals),
|
|
81
|
+
bookId,
|
|
88
82
|
};
|
|
89
|
-
};
|
|
83
|
+
});
|
|
90
84
|
/**
|
|
91
85
|
* Calculates the expected input for a given output amount, based on the provided market data.
|
|
92
86
|
*
|
|
@@ -108,8 +102,8 @@ export const getExpectedOutput = async (chainId, inputToken, outputToken, amount
|
|
|
108
102
|
* '0.1', // take 0.1 ETH
|
|
109
103
|
* )
|
|
110
104
|
*/
|
|
111
|
-
export const getExpectedInput = async (chainId, inputToken, outputToken, amountOut, options) => {
|
|
112
|
-
const market = await fetchMarket(chainId, [inputToken, outputToken]
|
|
105
|
+
export const getExpectedInput = decorator(async ({ chainId, inputToken, outputToken, amountOut, options, }) => {
|
|
106
|
+
const market = await fetchMarket(chainId, [inputToken, outputToken]);
|
|
113
107
|
const isBid = isAddressEqual(market.quote.address, inputToken);
|
|
114
108
|
const rawLimitPrice = options && options.limitPrice
|
|
115
109
|
? parsePrice(Number(options.limitPrice), market.quote.decimals, market.base.decimals)
|
|
@@ -117,25 +111,17 @@ export const getExpectedInput = async (chainId, inputToken, outputToken, amountO
|
|
|
117
111
|
? MAX_PRICE
|
|
118
112
|
: 0n;
|
|
119
113
|
const outputCurrency = isBid ? market.base : market.quote;
|
|
120
|
-
const
|
|
114
|
+
const { takenQuoteAmount, spendBaseAmount, bookId } = market.take({
|
|
121
115
|
takeQuote: !isBid,
|
|
122
116
|
limitPrice: rawLimitPrice,
|
|
123
117
|
amountOut: parseUnits(amountOut, outputCurrency.decimals),
|
|
124
118
|
});
|
|
125
|
-
const { takenAmount, spendAmount } = Object.values(result).reduce((acc, { takenAmount, spendAmount }) => ({
|
|
126
|
-
takenAmount: acc.takenAmount + takenAmount,
|
|
127
|
-
spendAmount: acc.spendAmount + spendAmount,
|
|
128
|
-
}), { takenAmount: 0n, spendAmount: 0n });
|
|
129
119
|
return {
|
|
130
|
-
takenAmount: formatUnits(
|
|
131
|
-
spendAmount: formatUnits(
|
|
132
|
-
|
|
133
|
-
bookId: BigInt(bookId),
|
|
134
|
-
takenAmount,
|
|
135
|
-
spendAmount,
|
|
136
|
-
})),
|
|
120
|
+
takenAmount: formatUnits(takenQuoteAmount, isBid ? market.base.decimals : market.quote.decimals),
|
|
121
|
+
spendAmount: formatUnits(spendBaseAmount, isBid ? market.quote.decimals : market.base.decimals),
|
|
122
|
+
bookId,
|
|
137
123
|
};
|
|
138
|
-
};
|
|
124
|
+
});
|
|
139
125
|
/**
|
|
140
126
|
* Retrieves the open order with the specified ID on the given chain.
|
|
141
127
|
*
|
|
@@ -152,9 +138,9 @@ export const getExpectedInput = async (chainId, inputToken, outputToken, amountO
|
|
|
152
138
|
* '46223845323662364279893361453861711542636620039907198451770258805035840307200'
|
|
153
139
|
* )
|
|
154
140
|
*/
|
|
155
|
-
export const getOpenOrder = async (chainId, id,
|
|
156
|
-
return fetchOpenOrder(chainId, id
|
|
157
|
-
};
|
|
141
|
+
export const getOpenOrder = decorator(async ({ chainId, id, }) => {
|
|
142
|
+
return fetchOpenOrder(chainId, id);
|
|
143
|
+
});
|
|
158
144
|
/**
|
|
159
145
|
* Retrieves open orders for the specified user on the given chain.
|
|
160
146
|
*
|
|
@@ -171,7 +157,7 @@ export const getOpenOrder = async (chainId, id, options) => {
|
|
|
171
157
|
* '0x5F79EE8f8fA862E98201120d83c4eC39D9468D49'
|
|
172
158
|
* )
|
|
173
159
|
*/
|
|
174
|
-
export const getOpenOrders = async (chainId, userAddress,
|
|
175
|
-
return fetchOpenOrders(chainId, userAddress
|
|
176
|
-
};
|
|
160
|
+
export const getOpenOrders = decorator(async ({ chainId, userAddress, }) => {
|
|
161
|
+
return fetchOpenOrders(chainId, userAddress);
|
|
162
|
+
});
|
|
177
163
|
//# sourceMappingURL=view.js.map
|
package/dist/esm/view.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAG3C,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}
|