@clober/v2-sdk 1.0.0-beta.21 → 1.0.0-beta.23

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.
@@ -25,11 +25,64 @@ const getLastAmounts = async ({ chainId, poolKey, options, }) => {
25
25
  return (0, strategy_1.fetchLastAmounts)(publicClient, chainId, poolKey);
26
26
  };
27
27
  exports.getLastAmounts = getLastAmounts;
28
- const watchMarketMakingEvents = ({ chainId, poolSnapshot, options, onEvent, onError, }) => {
28
+ const handleRebalanceLog = (log, poolSnapshot, onEvent) => {
29
+ const { args } = log;
30
+ onEvent({
31
+ transactionHash: log.transactionHash,
32
+ timestamp: Number(log.blockTimestamp),
33
+ blockNumber: Number(log.blockNumber),
34
+ bidOrderList: args.orderListA.map((orderId) => {
35
+ const tick = (0, order_id_1.fromOrderId)(orderId).tick;
36
+ const price = (0, utils_1.formatPrice)((0, utils_1.toPrice)(tick), poolSnapshot.currencyA.decimals, poolSnapshot.currencyB.decimals);
37
+ const amount = (0, viem_1.formatUnits)(args.amountA, poolSnapshot.currencyA.decimals);
38
+ return {
39
+ price,
40
+ size: new bignumber_js_1.default(amount)
41
+ .dividedBy(new bignumber_js_1.default(price))
42
+ .toFixed(poolSnapshot.currencyB.decimals),
43
+ };
44
+ }),
45
+ askOrderList: args.orderListB.map((orderId) => {
46
+ const tick = (0, order_id_1.fromOrderId)(orderId).tick;
47
+ return {
48
+ price: (0, utils_1.formatPrice)((0, utils_1.toPrice)((0, utils_1.invertTick)(tick)), poolSnapshot.currencyA.decimals, poolSnapshot.currencyB.decimals),
49
+ size: (0, viem_1.formatUnits)(args.amountB, poolSnapshot.currencyB.decimals),
50
+ };
51
+ }),
52
+ quoteReserve: (0, viem_1.formatUnits)(args.reserveA, poolSnapshot.currencyA.decimals),
53
+ baseReserve: (0, viem_1.formatUnits)(args.reserveB, poolSnapshot.currencyB.decimals),
54
+ });
55
+ };
56
+ const backfillRebalanceEvents = async ({ publicClient, chainId, poolSnapshot, backfillBlocks, onEvent, }) => {
57
+ const currentBlock = await publicClient.getBlockNumber();
58
+ const fromBlock = currentBlock > backfillBlocks ? currentBlock - backfillBlocks : 0n;
59
+ const logs = await publicClient.getLogs({
60
+ address: (0, address_1.getContractAddresses)({ chainId }).Rebalancer,
61
+ event: (0, viem_1.parseAbiItem)('event Rebalance(bytes32 indexed key,address indexed caller,uint256[] orderListA,uint256[] orderListB,uint256 amountA,uint256 amountB,uint256 reserveA,uint256 reserveB)'),
62
+ args: {
63
+ key: poolSnapshot.key,
64
+ },
65
+ fromBlock,
66
+ toBlock: currentBlock,
67
+ });
68
+ for (const log of logs) {
69
+ handleRebalanceLog(log, poolSnapshot, onEvent);
70
+ }
71
+ return currentBlock;
72
+ };
73
+ const watchMarketMakingEvents = async ({ chainId, poolSnapshot, options, onEvent, onError, }) => {
29
74
  const publicClient = (0, viem_1.createPublicClient)({
30
75
  chain: chain_1.CHAIN_MAP[chainId],
31
76
  transport: options?.rpcUrl ? (0, viem_1.http)(options.rpcUrl) : (0, viem_1.http)(),
32
77
  });
78
+ const seen = new Set();
79
+ const lastBackfilledBlock = await backfillRebalanceEvents({
80
+ publicClient,
81
+ chainId,
82
+ poolSnapshot,
83
+ backfillBlocks: options?.backfillBlocks ?? 100n,
84
+ onEvent,
85
+ });
33
86
  return publicClient.watchContractEvent({
34
87
  address: (0, address_1.getContractAddresses)({ chainId }).Rebalancer,
35
88
  abi: rebalancer_abi_1.REBALANCER_ABI,
@@ -37,34 +90,15 @@ const watchMarketMakingEvents = ({ chainId, poolSnapshot, options, onEvent, onEr
37
90
  args: {
38
91
  key: poolSnapshot.key,
39
92
  },
93
+ fromBlock: lastBackfilledBlock + 1n,
40
94
  onLogs: (logs) => {
41
95
  for (const log of logs) {
42
- const { args } = log;
43
- onEvent({
44
- transactionHash: log.transactionHash,
45
- timestamp: Number(log.blockTimestamp),
46
- blockNumber: Number(log.blockNumber),
47
- bidOrderList: args.orderListA.map((orderId) => {
48
- const tick = (0, order_id_1.fromOrderId)(orderId).tick;
49
- const price = (0, utils_1.formatPrice)((0, utils_1.toPrice)(tick), poolSnapshot.currencyA.decimals, poolSnapshot.currencyB.decimals);
50
- const amount = (0, viem_1.formatUnits)(args.amountA, poolSnapshot.currencyA.decimals);
51
- return {
52
- price,
53
- size: new bignumber_js_1.default(amount)
54
- .dividedBy(new bignumber_js_1.default(price))
55
- .toFixed(poolSnapshot.currencyB.decimals),
56
- };
57
- }),
58
- askOrderList: args.orderListB.map((orderId) => {
59
- const tick = (0, order_id_1.fromOrderId)(orderId).tick;
60
- return {
61
- price: (0, utils_1.formatPrice)((0, utils_1.toPrice)((0, utils_1.invertTick)(tick)), poolSnapshot.currencyA.decimals, poolSnapshot.currencyB.decimals),
62
- size: (0, viem_1.formatUnits)(args.amountB, poolSnapshot.currencyB.decimals),
63
- };
64
- }),
65
- quoteReserve: (0, viem_1.formatUnits)(args.reserveA, poolSnapshot.currencyA.decimals),
66
- baseReserve: (0, viem_1.formatUnits)(args.reserveB, poolSnapshot.currencyB.decimals),
67
- });
96
+ const key = `${log.blockNumber}-${log.logIndex}`;
97
+ if (seen.has(key)) {
98
+ continue;
99
+ }
100
+ seen.add(key);
101
+ handleRebalanceLog(log, poolSnapshot, onEvent);
68
102
  }
69
103
  },
70
104
  onError,
@@ -1 +1 @@
1
- {"version":3,"file":"market-making.js","sourceRoot":"","sources":["../../../../src/views/pool/market-making.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"market-making.js","sourceRoot":"","sources":["../../../../src/views/pool/market-making.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { createPublicClient, formatUnits, http } from 'viem';
1
+ import { createPublicClient, formatUnits, http, parseAbiItem } from 'viem';
2
2
  import BigNumber from 'bignumber.js';
3
3
  import { CHAIN_MAP } from '../../constants/chain-configs/chain';
4
4
  import { fetchLastAmounts, fetchStrategyPosition, } from '../../entities/pool/apis/strategy';
@@ -20,11 +20,64 @@ export const getLastAmounts = async ({ chainId, poolKey, options, }) => {
20
20
  });
21
21
  return fetchLastAmounts(publicClient, chainId, poolKey);
22
22
  };
23
- export const watchMarketMakingEvents = ({ chainId, poolSnapshot, options, onEvent, onError, }) => {
23
+ const handleRebalanceLog = (log, poolSnapshot, onEvent) => {
24
+ const { args } = log;
25
+ onEvent({
26
+ transactionHash: log.transactionHash,
27
+ timestamp: Number(log.blockTimestamp),
28
+ blockNumber: Number(log.blockNumber),
29
+ bidOrderList: args.orderListA.map((orderId) => {
30
+ const tick = fromOrderId(orderId).tick;
31
+ const price = formatPrice(toPrice(tick), poolSnapshot.currencyA.decimals, poolSnapshot.currencyB.decimals);
32
+ const amount = formatUnits(args.amountA, poolSnapshot.currencyA.decimals);
33
+ return {
34
+ price,
35
+ size: new BigNumber(amount)
36
+ .dividedBy(new BigNumber(price))
37
+ .toFixed(poolSnapshot.currencyB.decimals),
38
+ };
39
+ }),
40
+ askOrderList: args.orderListB.map((orderId) => {
41
+ const tick = fromOrderId(orderId).tick;
42
+ return {
43
+ price: formatPrice(toPrice(invertTick(tick)), poolSnapshot.currencyA.decimals, poolSnapshot.currencyB.decimals),
44
+ size: formatUnits(args.amountB, poolSnapshot.currencyB.decimals),
45
+ };
46
+ }),
47
+ quoteReserve: formatUnits(args.reserveA, poolSnapshot.currencyA.decimals),
48
+ baseReserve: formatUnits(args.reserveB, poolSnapshot.currencyB.decimals),
49
+ });
50
+ };
51
+ const backfillRebalanceEvents = async ({ publicClient, chainId, poolSnapshot, backfillBlocks, onEvent, }) => {
52
+ const currentBlock = await publicClient.getBlockNumber();
53
+ const fromBlock = currentBlock > backfillBlocks ? currentBlock - backfillBlocks : 0n;
54
+ const logs = await publicClient.getLogs({
55
+ address: getContractAddresses({ chainId }).Rebalancer,
56
+ event: parseAbiItem('event Rebalance(bytes32 indexed key,address indexed caller,uint256[] orderListA,uint256[] orderListB,uint256 amountA,uint256 amountB,uint256 reserveA,uint256 reserveB)'),
57
+ args: {
58
+ key: poolSnapshot.key,
59
+ },
60
+ fromBlock,
61
+ toBlock: currentBlock,
62
+ });
63
+ for (const log of logs) {
64
+ handleRebalanceLog(log, poolSnapshot, onEvent);
65
+ }
66
+ return currentBlock;
67
+ };
68
+ export const watchMarketMakingEvents = async ({ chainId, poolSnapshot, options, onEvent, onError, }) => {
24
69
  const publicClient = createPublicClient({
25
70
  chain: CHAIN_MAP[chainId],
26
71
  transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
27
72
  });
73
+ const seen = new Set();
74
+ const lastBackfilledBlock = await backfillRebalanceEvents({
75
+ publicClient,
76
+ chainId,
77
+ poolSnapshot,
78
+ backfillBlocks: options?.backfillBlocks ?? 100n,
79
+ onEvent,
80
+ });
28
81
  return publicClient.watchContractEvent({
29
82
  address: getContractAddresses({ chainId }).Rebalancer,
30
83
  abi: REBALANCER_ABI,
@@ -32,34 +85,15 @@ export const watchMarketMakingEvents = ({ chainId, poolSnapshot, options, onEven
32
85
  args: {
33
86
  key: poolSnapshot.key,
34
87
  },
88
+ fromBlock: lastBackfilledBlock + 1n,
35
89
  onLogs: (logs) => {
36
90
  for (const log of logs) {
37
- const { args } = log;
38
- onEvent({
39
- transactionHash: log.transactionHash,
40
- timestamp: Number(log.blockTimestamp),
41
- blockNumber: Number(log.blockNumber),
42
- bidOrderList: args.orderListA.map((orderId) => {
43
- const tick = fromOrderId(orderId).tick;
44
- const price = formatPrice(toPrice(tick), poolSnapshot.currencyA.decimals, poolSnapshot.currencyB.decimals);
45
- const amount = formatUnits(args.amountA, poolSnapshot.currencyA.decimals);
46
- return {
47
- price,
48
- size: new BigNumber(amount)
49
- .dividedBy(new BigNumber(price))
50
- .toFixed(poolSnapshot.currencyB.decimals),
51
- };
52
- }),
53
- askOrderList: args.orderListB.map((orderId) => {
54
- const tick = fromOrderId(orderId).tick;
55
- return {
56
- price: formatPrice(toPrice(invertTick(tick)), poolSnapshot.currencyA.decimals, poolSnapshot.currencyB.decimals),
57
- size: formatUnits(args.amountB, poolSnapshot.currencyB.decimals),
58
- };
59
- }),
60
- quoteReserve: formatUnits(args.reserveA, poolSnapshot.currencyA.decimals),
61
- baseReserve: formatUnits(args.reserveB, poolSnapshot.currencyB.decimals),
62
- });
91
+ const key = `${log.blockNumber}-${log.logIndex}`;
92
+ if (seen.has(key)) {
93
+ continue;
94
+ }
95
+ seen.add(key);
96
+ handleRebalanceLog(log, poolSnapshot, onEvent);
63
97
  }
64
98
  },
65
99
  onError,
@@ -1 +1 @@
1
- {"version":3,"file":"market-making.js","sourceRoot":"","sources":["../../../../src/views/pool/market-making.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"market-making.js","sourceRoot":"","sources":["../../../../src/views/pool/market-making.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAC1E,OAAO,SAAS,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAa,SAAS,EAAE,MAAM,qCAAqC,CAAA;AAO1E,OAAO,EACL,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAA;AAC/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,0CAA0C,CAAA;AACtE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAE9D,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,EACrC,OAAO,EACP,OAAO,EACP,OAAO,GAKR,EAA6B,EAAE;IAC9B,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;KAC3D,CAAC,CAAA;IACF,OAAO,qBAAqB,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AAC9D,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,EACnC,OAAO,EACP,OAAO,EACP,OAAO,GAKR,EAAwB,EAAE;IACzB,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;KAC3D,CAAC,CAAA;IACF,OAAO,gBAAgB,CAAC,YAAY,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;AACzD,CAAC,CAAA;AAED,MAAM,kBAAkB,GAAG,CACzB,GAAQ,EACR,YAA0B,EAC1B,OAQU,EACV,EAAE;IACF,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAA;IAEpB,OAAO,CAAC;QACN,eAAe,EAAE,GAAG,CAAC,eAAe;QACpC,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC;QACrC,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAEpC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;YACtC,MAAM,KAAK,GAAG,WAAW,CACvB,OAAO,CAAC,IAAI,CAAC,EACb,YAAY,CAAC,SAAS,CAAC,QAAQ,EAC/B,YAAY,CAAC,SAAS,CAAC,QAAQ,CAChC,CAAA;YACD,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAA;YAEzE,OAAO;gBACL,KAAK;gBACL,IAAI,EAAE,IAAI,SAAS,CAAC,MAAM,CAAC;qBACxB,SAAS,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;qBAC/B,OAAO,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;aAC5C,CAAA;QACH,CAAC,CAAC;QAEF,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,OAAe,EAAE,EAAE;YACpD,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;YACtC,OAAO;gBACL,KAAK,EAAE,WAAW,CAChB,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,EACzB,YAAY,CAAC,SAAS,CAAC,QAAQ,EAC/B,YAAY,CAAC,SAAS,CAAC,QAAQ,CAChC;gBACD,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;aACjE,CAAA;QACH,CAAC,CAAC;QAEF,YAAY,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;QACzE,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC;KACzE,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,MAAM,uBAAuB,GAAG,KAAK,EAAE,EACrC,YAAY,EACZ,OAAO,EACP,YAAY,EACZ,cAAc,EACd,OAAO,GAOR,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAA;IAExD,MAAM,SAAS,GACb,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,YAAY,GAAG,cAAc,CAAC,CAAC,CAAC,EAAE,CAAA;IAEpE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC;QACtC,OAAO,EAAE,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU;QACrD,KAAK,EAAE,YAAY,CACjB,yKAAyK,CAC1K;QACD,IAAI,EAAE;YACJ,GAAG,EAAE,YAAY,CAAC,GAAG;SACtB;QACD,SAAS;QACT,OAAO,EAAE,YAAY;KACtB,CAAC,CAAA;IAEF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;IAChD,CAAC;IAED,OAAO,YAAY,CAAA;AACrB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EAAE,EAC5C,OAAO,EACP,YAAY,EACZ,OAAO,EACP,OAAO,EACP,OAAO,GAiBR,EAAE,EAAE;IACH,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;KAC3D,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAE9B,MAAM,mBAAmB,GAAG,MAAM,uBAAuB,CAAC;QACxD,YAAY;QACZ,OAAO;QACP,YAAY;QACZ,cAAc,EAAE,OAAO,EAAE,cAAc,IAAI,IAAI;QAC/C,OAAO;KACR,CAAC,CAAA;IAEF,OAAO,YAAY,CAAC,kBAAkB,CAAC;QACrC,OAAO,EAAE,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,UAAU;QACrD,GAAG,EAAE,cAAc;QACnB,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE;YACJ,GAAG,EAAE,YAAY,CAAC,GAAG;SACtB;QACD,SAAS,EAAE,mBAAmB,GAAG,EAAE;QAEnC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YACf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAA;gBAChD,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClB,SAAQ;gBACV,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAEb,kBAAkB,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,CAAA;YAChD,CAAC;QACH,CAAC;QAED,OAAO;KACR,CAAC,CAAA;AACJ,CAAC,CAAA"}