@paraswap/dex-lib 4.1.3 → 4.1.4-bal-v3-hooks.1

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.
Files changed (56) hide show
  1. package/build/abi/balancer-v3/directionalFeeHook.json +684 -0
  2. package/build/abi/balancer-v3/stableSurgeHook.json +976 -0
  3. package/build/dex/balancer-v3/balancer-test-helpers.d.ts +5 -0
  4. package/build/dex/balancer-v3/balancer-test-helpers.js +122 -0
  5. package/build/dex/balancer-v3/balancer-test-helpers.js.map +1 -0
  6. package/build/dex/balancer-v3/balancer-v3-pool.d.ts +4 -1
  7. package/build/dex/balancer-v3/balancer-v3-pool.js +20 -13
  8. package/build/dex/balancer-v3/balancer-v3-pool.js.map +1 -1
  9. package/build/dex/balancer-v3/balancer-v3.d.ts +4 -0
  10. package/build/dex/balancer-v3/balancer-v3.js +29 -3
  11. package/build/dex/balancer-v3/balancer-v3.js.map +1 -1
  12. package/build/dex/balancer-v3/config.js +39 -0
  13. package/build/dex/balancer-v3/config.js.map +1 -1
  14. package/build/dex/balancer-v3/getOnChainState.d.ts +1 -2
  15. package/build/dex/balancer-v3/getOnChainState.js +0 -2
  16. package/build/dex/balancer-v3/getOnChainState.js.map +1 -1
  17. package/build/dex/balancer-v3/getPoolsApi.d.ts +2 -1
  18. package/build/dex/balancer-v3/getPoolsApi.js +17 -10
  19. package/build/dex/balancer-v3/getPoolsApi.js.map +1 -1
  20. package/build/dex/balancer-v3/getTopPoolsApi.d.ts +5 -1
  21. package/build/dex/balancer-v3/getTopPoolsApi.js +6 -3
  22. package/build/dex/balancer-v3/getTopPoolsApi.js.map +1 -1
  23. package/build/dex/balancer-v3/hooks/balancer-hook-event-subscriber.d.ts +54 -0
  24. package/build/dex/balancer-v3/hooks/balancer-hook-event-subscriber.js +139 -0
  25. package/build/dex/balancer-v3/hooks/balancer-hook-event-subscriber.js.map +1 -0
  26. package/build/dex/balancer-v3/hooks/directionalFeeHook.d.ts +26 -0
  27. package/build/dex/balancer-v3/hooks/directionalFeeHook.js +41 -0
  28. package/build/dex/balancer-v3/hooks/directionalFeeHook.js.map +1 -0
  29. package/build/dex/balancer-v3/hooks/loadHooksConfig.d.ts +2 -0
  30. package/build/dex/balancer-v3/hooks/loadHooksConfig.js +11 -0
  31. package/build/dex/balancer-v3/hooks/loadHooksConfig.js.map +1 -0
  32. package/build/dex/balancer-v3/hooks/stableSurgeHook.d.ts +39 -0
  33. package/build/dex/balancer-v3/hooks/stableSurgeHook.js +115 -0
  34. package/build/dex/balancer-v3/hooks/stableSurgeHook.js.map +1 -0
  35. package/build/dex/balancer-v3/types.d.ts +4 -1
  36. package/package.json +2 -2
  37. package/scripts/run-dex-integration-v3.ts +4 -4
  38. package/src/abi/balancer-v3/directionalFeeHook.json +684 -0
  39. package/src/abi/balancer-v3/stableSurgeHook.json +976 -0
  40. package/src/dex/balancer-v3/balancer-hooks-events.test.ts +166 -0
  41. package/src/dex/balancer-v3/balancer-stableSurge.test.ts +110 -0
  42. package/src/dex/balancer-v3/balancer-test-helpers.ts +199 -0
  43. package/src/dex/balancer-v3/balancer-v3-e2e.test.ts +20 -0
  44. package/src/dex/balancer-v3/balancer-v3-integration.test.ts +2 -197
  45. package/src/dex/balancer-v3/balancer-v3-pool.ts +37 -13
  46. package/src/dex/balancer-v3/balancer-v3.ts +42 -1
  47. package/src/dex/balancer-v3/config.ts +39 -0
  48. package/src/dex/balancer-v3/getOnChainState.ts +1 -4
  49. package/src/dex/balancer-v3/getPoolsApi.ts +42 -23
  50. package/src/dex/balancer-v3/getTopPoolsApi.ts +13 -2
  51. package/src/dex/balancer-v3/hooks/balancer-hook-event-subscriber.ts +211 -0
  52. package/src/dex/balancer-v3/hooks/directionalFeeHook.ts +51 -0
  53. package/src/dex/balancer-v3/hooks/loadHooksConfig.ts +12 -0
  54. package/src/dex/balancer-v3/hooks/stableSurgeHook.ts +193 -0
  55. package/src/dex/balancer-v3/types.ts +4 -2
  56. package/tests/constants-e2e.ts +6 -1
@@ -1,7 +1,7 @@
1
1
  import { ImmutablePoolStateMap, PoolStateMap } from './types';
2
2
  import { Interface, Result } from '@ethersproject/abi';
3
3
  import { IDexHelper } from '../../dex-helper';
4
- interface callData {
4
+ export interface callData {
5
5
  target: string;
6
6
  callData: string;
7
7
  }
@@ -16,4 +16,3 @@ export declare function decodeErc4626MultiCallData(erc4626Interface: Interface,
16
16
  export declare function getOnChainState(network: number, immutablePoolStateMap: ImmutablePoolStateMap, dexHelper: IDexHelper, interfaces: {
17
17
  [name: string]: Interface;
18
18
  }, blockNumber?: number): Promise<PoolStateMap>;
19
- export {};
@@ -80,8 +80,6 @@ const poolOnChain = {
80
80
  totalSupply: BigInt(resultTotalSupply[0]),
81
81
  scalingFactors: resultTokenRates.decimalScalingFactors.map((r) => BigInt(r)),
82
82
  isPoolPaused: resultIsPoolPaused[0],
83
- hasHook: resultHooksConfig[0].hooksContract !==
84
- '0x0000000000000000000000000000000000000000',
85
83
  };
86
84
  },
87
85
  },
@@ -1 +1 @@
1
- {"version":3,"file":"getOnChainState.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getOnChainState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getOnChainState.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getOnChainState.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
1
  import { ImmutablePoolStateMap } from './types';
2
- export declare function getPoolsApi(network: number, timestamp?: number): Promise<ImmutablePoolStateMap>;
2
+ import { HooksConfigMap } from './hooks/balancer-hook-event-subscriber';
3
+ export declare function getPoolsApi(network: number, hooksConfigMap: HooksConfigMap, timestamp?: number): Promise<ImmutablePoolStateMap>;
@@ -17,7 +17,6 @@ function createQuery(networkId, poolTypes, timestamp) {
17
17
  const whereClause = {
18
18
  chainIn: networkString,
19
19
  protocolVersionIn: 3,
20
- hasHook: false,
21
20
  poolTypeIn: `[${poolTypesString}]`,
22
21
  ...(timestamp && { createTime: `{lt: ${timestamp}}` }),
23
22
  ...(disabledPoolIdsString && { idNotIn: `[${disabledPoolIdsString}]` }),
@@ -41,29 +40,37 @@ function createQuery(networkId, poolTypes, timestamp) {
41
40
  address
42
41
  }
43
42
  }
43
+ hook {
44
+ address
45
+ }
44
46
  }
45
47
  }
46
48
  `;
47
49
  }
48
- function toImmutablePoolStateMap(pools) {
49
- return pools.reduce((map, pool) => {
50
+ function toImmutablePoolStateMap(pools, hooksConfigMap) {
51
+ return (pools
52
+ // First filter out pools with hooks that aren't in hooksMap
53
+ .filter(pool => !pool.hook ||
54
+ (pool.hook && pool.hook.address.toLowerCase() in hooksConfigMap))
55
+ .reduce((map, pool) => {
50
56
  const immutablePoolState = {
51
57
  poolAddress: pool.id,
52
58
  tokens: pool.poolTokens.map(t => t.address),
53
59
  tokensUnderlying: pool.poolTokens.map(t => t.underlyingToken ? t.underlyingToken.address : null),
54
60
  weights: pool.poolTokens.map(t => t.weight ? (0, utils_1.parseUnits)(t.weight, 18).toBigInt() : 0n),
55
61
  poolType: pool.type,
56
- // TODO add scalingFactors once API provides them
57
- // scalingFactors: pool.poolTokens.map(t => parseUnits('1', 18).toBigInt()),
58
- // TODO Hook support will be added in future PR
59
- hookType: undefined,
62
+ hookAddress: pool.hook ? pool.hook.address.toLowerCase() : undefined,
63
+ hookType: pool.hook
64
+ ? hooksConfigMap[pool.hook.address.toLowerCase()].type
65
+ : undefined,
66
+ supportsUnbalancedLiquidity: true,
60
67
  };
61
68
  map[pool.id] = immutablePoolState;
62
69
  return map;
63
- }, {});
70
+ }, {}));
64
71
  }
65
72
  // Any data from API will be immutable. Mutable data such as balances, etc will be fetched via onchain/event state.
66
- async function getPoolsApi(network, timestamp) {
73
+ async function getPoolsApi(network, hooksConfigMap, timestamp) {
67
74
  try {
68
75
  const query = createQuery(network, Object.values(config_1.SUPPORTED_POOLS), timestamp);
69
76
  const response = await axios_1.default.post(config_1.apiUrl, {
@@ -74,7 +81,7 @@ async function getPoolsApi(network, timestamp) {
74
81
  },
75
82
  });
76
83
  const pools = response.data.data.poolGetAggregatorPools;
77
- return toImmutablePoolStateMap(pools);
84
+ return toImmutablePoolStateMap(pools, hooksConfigMap);
78
85
  }
79
86
  catch (error) {
80
87
  // console.error('Error executing GraphQL query:', error);
@@ -1 +1 @@
1
- {"version":3,"file":"getPoolsApi.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getPoolsApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"getPoolsApi.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getPoolsApi.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { HooksConfigMap } from './hooks/balancer-hook-event-subscriber';
1
2
  interface PoolToken {
2
3
  address: string;
3
4
  decimals: number;
@@ -12,6 +13,9 @@ export interface Pool {
12
13
  dynamicData: {
13
14
  totalLiquidity: string;
14
15
  };
16
+ hook: {
17
+ address: string;
18
+ } | null;
15
19
  }
16
- export declare function getTopPoolsApi(networkId: number, poolsFilter: string[], count: number): Promise<Pool[]>;
20
+ export declare function getTopPoolsApi(networkId: number, poolsFilter: string[], count: number, hooksTypeMap: HooksConfigMap): Promise<Pool[]>;
17
21
  export {};
@@ -16,7 +16,6 @@ function createQuery(networkId, poolsFilter, count) {
16
16
  const whereClause = {
17
17
  chainIn: networkString,
18
18
  protocolVersionIn: 3,
19
- hasHook: false,
20
19
  idIn: `[${poolIdString}]`,
21
20
  ...(disabledPoolIdsString && { idNotIn: `[${disabledPoolIdsString}]` }),
22
21
  };
@@ -44,11 +43,14 @@ function createQuery(networkId, poolsFilter, count) {
44
43
  dynamicData {
45
44
  totalLiquidity
46
45
  }
46
+ hook {
47
+ address
48
+ }
47
49
  }
48
50
  }
49
51
  `;
50
52
  }
51
- async function getTopPoolsApi(networkId, poolsFilter, count) {
53
+ async function getTopPoolsApi(networkId, poolsFilter, count, hooksTypeMap) {
52
54
  try {
53
55
  const query = createQuery(networkId, poolsFilter, count);
54
56
  const response = await axios_1.default.post(config_1.apiUrl, {
@@ -58,7 +60,8 @@ async function getTopPoolsApi(networkId, poolsFilter, count) {
58
60
  'Content-Type': 'application/json',
59
61
  },
60
62
  });
61
- const pools = response.data.data.poolGetAggregatorPools;
63
+ const pools = response.data.data.poolGetAggregatorPools.filter(pool => !pool.hook ||
64
+ (pool.hook && pool.hook.address.toLowerCase() in hooksTypeMap));
62
65
  return pools;
63
66
  }
64
67
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"getTopPoolsApi.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getTopPoolsApi.ts"],"names":[],"mappings":";;;;;AA2EA,wCAyBC;AApGD,kDAA0B;AAC1B,qCAAqE;AAyBrE,SAAS,WAAW,CAClB,SAAiB,EACjB,WAAqB,EACrB,KAAa;IAEb,MAAM,qBAAqB,GAAG,wBAAe,CAAC,UAAU,CAAC,SAAS,CAAC;QACjE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;SACnB,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG,yBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC;IAC5E,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,uCAAuC;IACvC,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,aAAa;QACtB,iBAAiB,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,IAAI,YAAY,GAAG;QACzB,GAAG,CAAC,qBAAqB,IAAI,EAAE,OAAO,EAAE,IAAI,qBAAqB,GAAG,EAAE,CAAC;KACxE,CAAC;IAEF,iEAAiE;IACjE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC;SACzC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;kBAGS,WAAW;iBACZ,KAAK;;;;;;;;;;;;;;;;;;GAkBnB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,WAAqB,EACrB,KAAa;IAEb,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,eAAM,EACN;YACE,KAAK;SACN,EACD;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0DAA0D;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"getTopPoolsApi.js","sourceRoot":"","sources":["../../../src/dex/balancer-v3/getTopPoolsApi.ts"],"names":[],"mappings":";;;;;AAiFA,wCA8BC;AA/GD,kDAA0B;AAC1B,qCAAqE;AA6BrE,SAAS,WAAW,CAClB,SAAiB,EACjB,WAAqB,EACrB,KAAa;IAEb,MAAM,qBAAqB,GAAG,wBAAe,CAAC,UAAU,CAAC,SAAS,CAAC;QACjE,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;SACnB,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG,yBAAgB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC;IAC5E,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,uCAAuC;IACvC,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,aAAa;QACtB,iBAAiB,EAAE,CAAC;QACpB,IAAI,EAAE,IAAI,YAAY,GAAG;QACzB,GAAG,CAAC,qBAAqB,IAAI,EAAE,OAAO,EAAE,IAAI,qBAAqB,GAAG,EAAE,CAAC;KACxE,CAAC;IAEF,iEAAiE;IACjE,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SAC5C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC;SACzC,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,OAAO;;;kBAGS,WAAW;iBACZ,KAAK;;;;;;;;;;;;;;;;;;;;;GAqBnB,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,WAAqB,EACrB,KAAa,EACb,YAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,IAAI,CAC/B,eAAM,EACN;YACE,KAAK;SACN,EACD;YACE,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;aACnC;SACF,CACF,CAAC;QAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAC5D,IAAI,CAAC,EAAE,CACL,CAAC,IAAI,CAAC,IAAI;YACV,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,YAAY,CAAC,CACjE,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,0DAA0D;QAC1D,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { Interface } from '@ethersproject/abi';
2
+ import { DeepReadonly } from 'ts-essentials';
3
+ import { Log, Logger } from '../../../types';
4
+ import { StatefulEventSubscriber } from '../../../stateful-event-subscriber';
5
+ import { IDexHelper } from '../../../dex-helper/idex-helper';
6
+ import { DirectionalFeeConfig, DirectionalFeeHookState } from './directionalFeeHook';
7
+ import { StableSurgeConfig, StableSurgeHookState } from './stableSurgeHook';
8
+ export type HookState = DirectionalFeeHookState | StableSurgeHookState;
9
+ export type HookStateMap = {
10
+ [address: string]: HookState;
11
+ };
12
+ export type HookConfig = DirectionalFeeConfig | StableSurgeConfig;
13
+ export type HooksConfigMap = {
14
+ [hookAddress: string]: HookConfig;
15
+ };
16
+ /**
17
+ * This will handle events/state for each supported hook contract. State is used during swap calculations.
18
+ * Each hook should have its own implementation file for state typing, fetching state and handling events.
19
+ */
20
+ export declare class BalancerEventHook extends StatefulEventSubscriber<HookStateMap> {
21
+ readonly parentName: string;
22
+ protected network: number;
23
+ protected dexHelper: IDexHelper;
24
+ handlers: {
25
+ [event: string]: (event: any, state: DeepReadonly<HookStateMap>, log: Readonly<Log>) => DeepReadonly<HookStateMap> | null;
26
+ };
27
+ interfaces: Interface[];
28
+ logDecoder: (log: Log) => any;
29
+ addressesSubscribed: string[];
30
+ hooksConfigMap: HooksConfigMap;
31
+ constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger);
32
+ /**
33
+ * The function is called every time any of the subscribed
34
+ * addresses release log. The function accepts the current
35
+ * state, updates the state according to the log, and returns
36
+ * the updated state.
37
+ * @param state - Current state of event subscriber
38
+ * @param log - Log released by one of the subscribed addresses
39
+ * @returns Updates state of the event subscriber after the log
40
+ */
41
+ protected processLog(state: DeepReadonly<HookStateMap>, log: Readonly<Log>): DeepReadonly<HookStateMap> | null;
42
+ /**
43
+ * The function generates state using on-chain calls. This
44
+ * function is called to regenerate state if the event based
45
+ * system fails to fetch events and the local state is no
46
+ * more correct.
47
+ * @param blockNumber - Blocknumber for which the state should
48
+ * should be generated
49
+ * @returns state of the event subscriber at blocknumber
50
+ */
51
+ generateState(blockNumber: number): Promise<DeepReadonly<HookStateMap>>;
52
+ updateHookState(): Promise<void>;
53
+ combineInterfaces: (interfaces: Interface[]) => Interface;
54
+ }
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.BalancerEventHook = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const utils_1 = require("../../../utils");
10
+ const stateful_event_subscriber_1 = require("../../../stateful-event-subscriber");
11
+ const loadHooksConfig_1 = require("./loadHooksConfig");
12
+ const directionalFeeHook_1 = require("./directionalFeeHook");
13
+ const directionalFeeHook_json_1 = __importDefault(require("../../../abi/balancer-v3/directionalFeeHook.json"));
14
+ const stableSurgeHook_1 = require("./stableSurgeHook");
15
+ const stableSurgeHook_json_1 = __importDefault(require("../../../abi/balancer-v3/stableSurgeHook.json"));
16
+ /**
17
+ * This will handle events/state for each supported hook contract. State is used during swap calculations.
18
+ * Each hook should have its own implementation file for state typing, fetching state and handling events.
19
+ */
20
+ class BalancerEventHook extends stateful_event_subscriber_1.StatefulEventSubscriber {
21
+ parentName;
22
+ network;
23
+ dexHelper;
24
+ handlers = {};
25
+ interfaces;
26
+ logDecoder;
27
+ addressesSubscribed;
28
+ hooksConfigMap;
29
+ constructor(parentName, network, dexHelper, logger) {
30
+ super(parentName, 'Balancer_Hooks', dexHelper, logger);
31
+ this.parentName = parentName;
32
+ this.network = network;
33
+ this.dexHelper = dexHelper;
34
+ // Load supported hooks from config file
35
+ this.hooksConfigMap = (0, loadHooksConfig_1.loadHooksConfig)(network);
36
+ // Add each hook ABI here
37
+ this.interfaces = [
38
+ new abi_1.Interface(directionalFeeHook_json_1.default),
39
+ new abi_1.Interface(stableSurgeHook_json_1.default),
40
+ ];
41
+ this.logDecoder = (log) => this.combineInterfaces(this.interfaces).parseLog(log);
42
+ // Subscribe to all hooks
43
+ this.addressesSubscribed = Object.keys(this.hooksConfigMap);
44
+ // StableSurgeHook events
45
+ this.handlers['ThresholdSurgePercentageChanged'] =
46
+ stableSurgeHook_1.thresholdSurgePercentageChangedEvent.bind(this);
47
+ this.handlers['MaxSurgeFeePercentageChanged'] =
48
+ stableSurgeHook_1.maxSurgeFeePercentageChangedEvent.bind(this);
49
+ }
50
+ /**
51
+ * The function is called every time any of the subscribed
52
+ * addresses release log. The function accepts the current
53
+ * state, updates the state according to the log, and returns
54
+ * the updated state.
55
+ * @param state - Current state of event subscriber
56
+ * @param log - Log released by one of the subscribed addresses
57
+ * @returns Updates state of the event subscriber after the log
58
+ */
59
+ processLog(state, log) {
60
+ try {
61
+ const event = this.logDecoder(log);
62
+ if (event.name in this.handlers) {
63
+ return this.handlers[event.name](event, state, log);
64
+ }
65
+ }
66
+ catch (e) {
67
+ (0, utils_1.catchParseLogError)(e, this.logger);
68
+ }
69
+ return null;
70
+ }
71
+ /**
72
+ * The function generates state using on-chain calls. This
73
+ * function is called to regenerate state if the event based
74
+ * system fails to fetch events and the local state is no
75
+ * more correct.
76
+ * @param blockNumber - Blocknumber for which the state should
77
+ * should be generated
78
+ * @returns state of the event subscriber at blocknumber
79
+ */
80
+ async generateState(blockNumber) {
81
+ // Only hooks that are supported will be called
82
+ const hookState = {};
83
+ await Promise.all(Object.keys(this.hooksConfigMap).map(async (hookAddress) => {
84
+ const hookConfig = this.hooksConfigMap[hookAddress];
85
+ if (hookConfig.type === directionalFeeHook_1.DirectionalFee.type) {
86
+ hookState[hookAddress] = await (0, directionalFeeHook_1.getDirectionalFeeHookState)();
87
+ }
88
+ else if (hookConfig.type === stableSurgeHook_1.StableSurge.type) {
89
+ hookState[hookAddress] = await (0, stableSurgeHook_1.getStableSurgeHookState)(this.interfaces[1], hookAddress, hookConfig.factory, this.dexHelper, blockNumber);
90
+ }
91
+ }));
92
+ return hookState;
93
+ }
94
+ async updateHookState() {
95
+ // Not all hooks need updated, only ones with settings/state that can't be handled by events
96
+ const blockNumber = await this.dexHelper.provider.getBlockNumber();
97
+ const currentState = lodash_1.default.cloneDeep(this.getStaleState()) || {};
98
+ await Promise.all(Object.keys(this.hooksConfigMap).map(async (hookAddress) => {
99
+ const hookConfig = this.hooksConfigMap[hookAddress];
100
+ // StableSurge can have new registered pools with associated hook state
101
+ if (hookConfig.type === stableSurgeHook_1.StableSurge.type) {
102
+ currentState[hookAddress] = await (0, stableSurgeHook_1.getStableSurgeHookState)(this.interfaces[1], hookAddress, hookConfig.factory, this.dexHelper, blockNumber);
103
+ }
104
+ }));
105
+ this.setState(currentState, blockNumber);
106
+ }
107
+ combineInterfaces = (interfaces) => {
108
+ // Use a Map to store unique fragments, keyed by their string representation
109
+ const uniqueFragments = new Map();
110
+ interfaces.forEach((interfaceInstance) => {
111
+ interfaceInstance.fragments.forEach((fragment) => {
112
+ let key;
113
+ if (fragment instanceof abi_1.FunctionFragment) {
114
+ // For functions, use the signature as the key
115
+ // This includes name and parameter types
116
+ key = fragment.format();
117
+ }
118
+ else if (fragment instanceof abi_1.EventFragment) {
119
+ // For events, use the signature as the key
120
+ key = fragment.format();
121
+ }
122
+ else {
123
+ // For other fragment types (like errors), use their string representation
124
+ key = fragment.toString();
125
+ }
126
+ // Only add if we haven't seen this signature before
127
+ if (!uniqueFragments.has(key)) {
128
+ uniqueFragments.set(key, fragment);
129
+ }
130
+ });
131
+ });
132
+ // Convert the Map values back to an array
133
+ const dedupedFragments = Array.from(uniqueFragments.values());
134
+ // Create a new interface with the deduped fragments
135
+ return new abi_1.Interface(dedupedFragments);
136
+ };
137
+ }
138
+ exports.BalancerEventHook = BalancerEventHook;
139
+ //# sourceMappingURL=balancer-hook-event-subscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"balancer-hook-event-subscriber.js","sourceRoot":"","sources":["../../../../src/dex/balancer-v3/hooks/balancer-hook-event-subscriber.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { Log } from '../../../types';
2
+ import { DeepReadonly } from 'ts-essentials';
3
+ import { HookStateMap } from './balancer-hook-event-subscriber';
4
+ export declare const DirectionalFee: {
5
+ type: "DirectionalFee";
6
+ };
7
+ export type DirectionalFeeConfig = {
8
+ type: typeof DirectionalFee.type;
9
+ address: string;
10
+ };
11
+ export type DirectionalFeeHookState = {
12
+ test: string;
13
+ };
14
+ /**
15
+ * Retrieve any initial hook state required.
16
+ * @returns
17
+ */
18
+ export declare function getDirectionalFeeHookState(): Promise<DirectionalFeeHookState>;
19
+ /**
20
+ * Handles the event emitted when a new hook is registered.
21
+ * @param event
22
+ * @param state
23
+ * @param log
24
+ * @returns
25
+ */
26
+ export declare function exitFeeHookExampleRegisteredEvent(event: any, state: DeepReadonly<HookStateMap>, log: Readonly<Log>): DeepReadonly<HookStateMap> | null;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.DirectionalFee = void 0;
7
+ exports.getDirectionalFeeHookState = getDirectionalFeeHookState;
8
+ exports.exitFeeHookExampleRegisteredEvent = exitFeeHookExampleRegisteredEvent;
9
+ /**
10
+ * Each supported hook should implement its own version of this file making it easy to retrieve required onchain state.
11
+ */
12
+ const lodash_1 = __importDefault(require("lodash"));
13
+ exports.DirectionalFee = {
14
+ type: 'DirectionalFee',
15
+ };
16
+ /**
17
+ * Retrieve any initial hook state required.
18
+ * @returns
19
+ */
20
+ async function getDirectionalFeeHookState() {
21
+ // Note - for other hooks this function would retrieve any initial state using onchain calls
22
+ return { test: 'initial' };
23
+ }
24
+ /**
25
+ * Handles the event emitted when a new hook is registered.
26
+ * @param event
27
+ * @param state
28
+ * @param log
29
+ * @returns
30
+ */
31
+ function exitFeeHookExampleRegisteredEvent(event, state, log) {
32
+ // Note - This is a non-important event but demos the use case. Other hooks would implement this for any state changes required for swap maths.
33
+ const hookAddress = event.args.hooksContract.toLowerCase();
34
+ if (!state[hookAddress]) {
35
+ return null;
36
+ }
37
+ const newState = lodash_1.default.cloneDeep(state);
38
+ newState[hookAddress] = { test: event.args.pool };
39
+ return newState;
40
+ }
41
+ //# sourceMappingURL=directionalFeeHook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"directionalFeeHook.js","sourceRoot":"","sources":["../../../../src/dex/balancer-v3/hooks/directionalFeeHook.ts"],"names":[],"mappings":";;;;;;AAyBA,gEAGC;AASD,8EAaC;AAlDD;;GAEG;AACH,oDAAuB;AAKV,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,gBAAyB;CAChC,CAAC;AAWF;;;GAGG;AACI,KAAK,UAAU,0BAA0B;IAC9C,4FAA4F;IAC5F,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iCAAiC,CAC/C,KAAU,EACV,KAAiC,EACjC,GAAkB;IAElB,+IAA+I;IAC/I,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,CAAC;IAC3D,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAC,CAAC,SAAS,CAAC,KAAK,CAAiB,CAAC;IACpD,QAAQ,CAAC,WAAW,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { HooksConfigMap } from './balancer-hook-event-subscriber';
2
+ export declare function loadHooksConfig(network: number): HooksConfigMap;
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.loadHooksConfig = loadHooksConfig;
4
+ const config_1 = require("./../config");
5
+ function loadHooksConfig(network) {
6
+ const hooks = config_1.BalancerV3Config.BalancerV3[network].hooks;
7
+ if (!hooks)
8
+ return {};
9
+ return Object.fromEntries(hooks.map(hook => [hook.address.toLowerCase(), hook]));
10
+ }
11
+ //# sourceMappingURL=loadHooksConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loadHooksConfig.js","sourceRoot":"","sources":["../../../../src/dex/balancer-v3/hooks/loadHooksConfig.ts"],"names":[],"mappings":";;AAGA,0CAQC;AAXD,wCAA+C;AAG/C,SAAgB,eAAe,CAAC,OAAe;IAC7C,MAAM,KAAK,GAAG,yBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;IAEzD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IAEtB,OAAO,MAAM,CAAC,WAAW,CACvB,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC,CACtD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,39 @@
1
+ import { Log } from '../../../types';
2
+ import { DeepReadonly } from 'ts-essentials';
3
+ import { HookStateMap } from './balancer-hook-event-subscriber';
4
+ import { Interface } from '@ethersproject/abi';
5
+ import { IDexHelper } from '../../../dex-helper';
6
+ export declare const StableSurge: {
7
+ type: "StableSurge";
8
+ };
9
+ export type StableSurgeConfig = {
10
+ type: typeof StableSurge.type;
11
+ factory: string;
12
+ address: string;
13
+ };
14
+ export type StableSurgePoolSetting = {
15
+ surgeThresholdPercentage?: bigint;
16
+ maxSurgeFeePercentage?: bigint;
17
+ };
18
+ export type StableSurgeHookState = Record<string, StableSurgePoolSetting>;
19
+ /**
20
+ * Retrieve any initial hook state required.
21
+ * @returns
22
+ */
23
+ export declare function getStableSurgeHookState(hookInterface: Interface, hookAddress: string, factoryAddress: string, dexHelper: IDexHelper, blockNumber: number): Promise<StableSurgeHookState>;
24
+ /**
25
+ * Handles the event emitted when threshold surge percentage changed.
26
+ * @param event
27
+ * @param state
28
+ * @param log
29
+ * @returns
30
+ */
31
+ export declare function thresholdSurgePercentageChangedEvent(event: any, state: DeepReadonly<HookStateMap>, log: Readonly<Log>): DeepReadonly<HookStateMap> | null;
32
+ /**
33
+ * Handles the event emitted when max surge fee percentage changed.
34
+ * @param event
35
+ * @param state
36
+ * @param log
37
+ * @returns
38
+ */
39
+ export declare function maxSurgeFeePercentageChangedEvent(event: any, state: DeepReadonly<HookStateMap>, log: Readonly<Log>): DeepReadonly<HookStateMap> | null;