@paraswap/dex-lib 4.2.18 → 4.2.19-oswap-tx-building.0

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.
@@ -0,0 +1,3 @@
1
+ import { DexParams } from './types';
2
+ import { DexConfigMap } from '../../types';
3
+ export declare const MiroMigratorConfig: DexConfigMap<DexParams>;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MiroMigratorConfig = void 0;
4
+ const constants_1 = require("../../constants");
5
+ exports.MiroMigratorConfig = {
6
+ MiroMigrator: {
7
+ [constants_1.Network.OPTIMISM]: {
8
+ migratorAddress: '0x5032433fb65d7db8e8b90cb239d50fdfd941fb6b',
9
+ pspTokenAddress: '0x326aec8d7d99d1d6022c57c5f6194d2a7867227d',
10
+ xyzTokenAddress: '0xa2781111f824ca1cd98454b2c9722baefc898e99',
11
+ },
12
+ },
13
+ };
14
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/miro-migrator/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE7B,QAAA,kBAAkB,GAA4B;IACzD,YAAY,EAAE;QACZ,CAAC,mBAAO,CAAC,QAAQ,CAAC,EAAE;YAClB,eAAe,EAAE,4CAA4C;YAC7D,eAAe,EAAE,4CAA4C;YAC7D,eAAe,EAAE,4CAA4C;SAC9D;KACF;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const MIRO_MIGRATION_GAS_COST = 35000;
2
+ export declare const TRANSFER_TOPIC = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TRANSFER_TOPIC = exports.MIRO_MIGRATION_GAS_COST = void 0;
4
+ exports.MIRO_MIGRATION_GAS_COST = 35_000;
5
+ exports.TRANSFER_TOPIC = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
6
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/dex/miro-migrator/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,uBAAuB,GAAG,MAAM,CAAC;AAEjC,QAAA,cAAc,GACzB,oEAAoE,CAAC"}
@@ -0,0 +1,27 @@
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 { PoolState } from './types';
7
+ import { Contract } from 'ethers';
8
+ export declare class MiroMigratorEventPool extends StatefulEventSubscriber<PoolState> {
9
+ readonly parentName: string;
10
+ protected network: number;
11
+ protected dexHelper: IDexHelper;
12
+ protected migratorAddress: string;
13
+ protected xyzAddress: string;
14
+ protected transferTopic: string;
15
+ protected xyzInterface: Interface;
16
+ protected xyzContract: Contract;
17
+ handlers: {
18
+ [event: string]: (event: any, state: DeepReadonly<PoolState>, log: Readonly<Log>) => DeepReadonly<PoolState> | null;
19
+ };
20
+ logDecoder: (log: Log) => any;
21
+ constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, migratorAddress: string, xyzAddress: string, transferTopic: string, xyzInterface?: Interface, xyzContract?: Contract);
22
+ protected processLog(state: DeepReadonly<PoolState>, log: Readonly<Log>): Promise<DeepReadonly<PoolState> | null>;
23
+ generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<PoolState>>;
24
+ getOrGenerateState(blockNumber: number): Promise<PoolState>;
25
+ handleTransferTo(event: any, state: DeepReadonly<PoolState>): Promise<DeepReadonly<PoolState>>;
26
+ handleTransferFrom(event: any, state: DeepReadonly<PoolState>): Promise<DeepReadonly<PoolState>>;
27
+ }
@@ -0,0 +1,80 @@
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.MiroMigratorEventPool = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const utils_1 = require("../../utils");
9
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
10
+ const erc20_json_1 = __importDefault(require("../../abi/erc20.json"));
11
+ const ethers_1 = require("ethers");
12
+ class MiroMigratorEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber {
13
+ parentName;
14
+ network;
15
+ dexHelper;
16
+ migratorAddress;
17
+ xyzAddress;
18
+ transferTopic;
19
+ xyzInterface;
20
+ xyzContract;
21
+ handlers = {};
22
+ logDecoder;
23
+ constructor(parentName, network, dexHelper, logger, migratorAddress, xyzAddress, transferTopic, xyzInterface = new abi_1.Interface(erc20_json_1.default), xyzContract = new ethers_1.Contract(xyzAddress, erc20_json_1.default, dexHelper.provider)) {
24
+ super(parentName, 'xyz', dexHelper, logger);
25
+ this.parentName = parentName;
26
+ this.network = network;
27
+ this.dexHelper = dexHelper;
28
+ this.migratorAddress = migratorAddress;
29
+ this.xyzAddress = xyzAddress;
30
+ this.transferTopic = transferTopic;
31
+ this.xyzInterface = xyzInterface;
32
+ this.xyzContract = xyzContract;
33
+ this.logDecoder = (log) => this.xyzInterface.parseLog(log);
34
+ this.addressesSubscribed = [xyzAddress];
35
+ }
36
+ async processLog(state, log) {
37
+ try {
38
+ const event = this.logDecoder(log);
39
+ if (log.topics[0] === this.transferTopic &&
40
+ event.args.dst.toLowerCase() === this.migratorAddress.toLowerCase()) {
41
+ return this.handleTransferTo(event, state);
42
+ }
43
+ if (log.topics[0] === this.transferTopic &&
44
+ event.args.src.toLowerCase() === this.migratorAddress.toLowerCase()) {
45
+ return this.handleTransferFrom(event, state);
46
+ }
47
+ return null;
48
+ }
49
+ catch (e) {
50
+ (0, utils_1.catchParseLogError)(e, this.logger);
51
+ return null;
52
+ }
53
+ }
54
+ async generateState(blockNumber = 'latest') {
55
+ const balance = await this.xyzContract.balanceOf(this.migratorAddress, {
56
+ blockTag: blockNumber,
57
+ });
58
+ return { balance: balance.toBigInt() };
59
+ }
60
+ async getOrGenerateState(blockNumber) {
61
+ let state = this.getState(blockNumber);
62
+ if (!state) {
63
+ state = await this.generateState(blockNumber);
64
+ this.setState(state, blockNumber);
65
+ }
66
+ return state;
67
+ }
68
+ async handleTransferTo(event, state) {
69
+ return {
70
+ balance: state.balance + BigInt(event.args.wad),
71
+ };
72
+ }
73
+ async handleTransferFrom(event, state) {
74
+ return {
75
+ balance: state.balance - BigInt(event.args.wad),
76
+ };
77
+ }
78
+ }
79
+ exports.MiroMigratorEventPool = MiroMigratorEventPool;
80
+ //# sourceMappingURL=miro-migrator-pool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-migrator-pool.js","sourceRoot":"","sources":["../../../src/dex/miro-migrator/miro-migrator-pool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
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 { MiroMigratorState } from './types';
7
+ export declare class MiroMigratorEventState extends StatefulEventSubscriber<MiroMigratorState> {
8
+ readonly parentName: string;
9
+ protected network: number;
10
+ protected dexHelper: IDexHelper;
11
+ protected migratorAddress: string;
12
+ protected xyzAddress: string;
13
+ protected transferTopic: string;
14
+ protected migratorInterface: Interface;
15
+ protected xyzInterface: Interface;
16
+ handlers: {
17
+ [event: string]: (event: any, state: DeepReadonly<MiroMigratorState>, log: Readonly<Log>) => DeepReadonly<MiroMigratorState> | null;
18
+ };
19
+ logDecoder: (log: Log) => any;
20
+ addressesSubscribed: string[];
21
+ constructor(parentName: string, network: number, dexHelper: IDexHelper, logger: Logger, migratorAddress: string, xyzAddress: string, transferTopic: string, migratorInterface?: Interface, xyzInterface?: Interface);
22
+ protected processLog(state: DeepReadonly<MiroMigratorState>, log: Readonly<Log>): Promise<DeepReadonly<MiroMigratorState> | null>;
23
+ generateState(blockNumber?: number | 'latest'): Promise<DeepReadonly<MiroMigratorState>>;
24
+ getOrGenerateState(blockNumber: number): Promise<MiroMigratorState>;
25
+ handleTransferTo(event: any, state: DeepReadonly<MiroMigratorState>, log: Readonly<Log>): Promise<DeepReadonly<MiroMigratorState>>;
26
+ handleTransferFrom(event: any, state: DeepReadonly<MiroMigratorState>, log: Readonly<Log>): Promise<DeepReadonly<MiroMigratorState>>;
27
+ }
@@ -0,0 +1,89 @@
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.MiroMigratorEventState = void 0;
7
+ const abi_1 = require("@ethersproject/abi");
8
+ const utils_1 = require("../../utils");
9
+ const stateful_event_subscriber_1 = require("../../stateful-event-subscriber");
10
+ const decoders_1 = require("../../lib/decoders");
11
+ const MiroMigrator_abi_json_1 = __importDefault(require("../../abi/miro-migrator/MiroMigrator.abi.json"));
12
+ const erc20_json_1 = __importDefault(require("../../abi/erc20.json"));
13
+ class MiroMigratorEventState extends stateful_event_subscriber_1.StatefulEventSubscriber {
14
+ parentName;
15
+ network;
16
+ dexHelper;
17
+ migratorAddress;
18
+ xyzAddress;
19
+ transferTopic;
20
+ migratorInterface;
21
+ xyzInterface;
22
+ handlers = {};
23
+ logDecoder;
24
+ addressesSubscribed;
25
+ constructor(parentName, network, dexHelper, logger, migratorAddress, xyzAddress, transferTopic, migratorInterface = new abi_1.Interface(MiroMigrator_abi_json_1.default), xyzInterface = new abi_1.Interface(erc20_json_1.default)) {
26
+ super(parentName, 'state', dexHelper, logger);
27
+ this.parentName = parentName;
28
+ this.network = network;
29
+ this.dexHelper = dexHelper;
30
+ this.migratorAddress = migratorAddress;
31
+ this.xyzAddress = xyzAddress;
32
+ this.transferTopic = transferTopic;
33
+ this.migratorInterface = migratorInterface;
34
+ this.xyzInterface = xyzInterface;
35
+ this.logDecoder = (log) => this.migratorInterface.parseLog(log);
36
+ this.addressesSubscribed = [xyzAddress];
37
+ }
38
+ async processLog(state, log) {
39
+ try {
40
+ const event = this.logDecoder(log);
41
+ if (log.topics[0] === this.transferTopic &&
42
+ event.args.to.toLowerCase() === this.migratorAddress.toLowerCase()) {
43
+ return this.handleTransferTo(event, state, log);
44
+ }
45
+ if (log.topics[0] === this.transferTopic &&
46
+ event.args.from.toLowerCase() === this.migratorAddress.toLowerCase()) {
47
+ return this.handleTransferFrom(event, state, log);
48
+ }
49
+ return null;
50
+ }
51
+ catch (e) {
52
+ (0, utils_1.catchParseLogError)(e, this.logger);
53
+ return null;
54
+ }
55
+ }
56
+ async generateState(blockNumber = 'latest') {
57
+ const calls = [
58
+ {
59
+ target: this.xyzAddress,
60
+ callData: this.xyzInterface.encodeFunctionData('balanceOf', [
61
+ this.migratorAddress,
62
+ ]),
63
+ decodeFunction: decoders_1.uint256ToBigInt,
64
+ },
65
+ ];
66
+ const [balance] = await this.dexHelper.multiWrapper.tryAggregate(true, calls, blockNumber);
67
+ return { balance: balance.returnData };
68
+ }
69
+ async getOrGenerateState(blockNumber) {
70
+ let state = this.getState(blockNumber);
71
+ if (!state) {
72
+ state = await this.generateState(blockNumber);
73
+ this.setState(state, blockNumber);
74
+ }
75
+ return state;
76
+ }
77
+ async handleTransferTo(event, state, log) {
78
+ return {
79
+ balance: state.balance + BigInt(event.args.value),
80
+ };
81
+ }
82
+ async handleTransferFrom(event, state, log) {
83
+ return {
84
+ balance: state.balance - BigInt(event.args.value),
85
+ };
86
+ }
87
+ }
88
+ exports.MiroMigratorEventState = MiroMigratorEventState;
89
+ //# sourceMappingURL=miro-migrator-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-migrator-state.js","sourceRoot":"","sources":["../../../src/dex/miro-migrator/miro-migrator-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { Token, Address, ExchangePrices, PoolPrices, AdapterExchangeParam, SimpleExchangeParam, PoolLiquidity, Logger, NumberAsString, DexExchangeParam } from '../../types';
2
+ import { SwapSide, Network } from '../../constants';
3
+ import { IDex } from '../../dex/idex';
4
+ import { IDexHelper } from '../../dex-helper/idex-helper';
5
+ import { MiroMigratorData } from './types';
6
+ import { SimpleExchange } from '../simple-exchange';
7
+ import { Interface } from '@ethersproject/abi';
8
+ import { MiroMigratorEventPool } from './miro-migrator-pool';
9
+ export declare class MiroMigrator extends SimpleExchange implements IDex<MiroMigratorData> {
10
+ readonly network: Network;
11
+ readonly dexKey: string;
12
+ readonly dexHelper: IDexHelper;
13
+ readonly migratorAddress: string;
14
+ readonly pspTokenAddress: string;
15
+ readonly xyzTokenAddress: string;
16
+ protected unitPrice: bigint;
17
+ protected migratorInterface: Interface;
18
+ readonly hasConstantPriceLargeAmounts = true;
19
+ readonly isFeeOnTransferSupported = false;
20
+ static dexKeysWithNetwork: {
21
+ key: string;
22
+ networks: Network[];
23
+ }[];
24
+ readonly eventPool: MiroMigratorEventPool;
25
+ logger: Logger;
26
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, migratorAddress?: string, pspTokenAddress?: string, xyzTokenAddress?: string, unitPrice?: bigint, migratorInterface?: Interface);
27
+ isPSP(tokenAddress: Address): boolean;
28
+ isXYZ(tokenAddress: Address): boolean;
29
+ isAppropriatePair(srcToken: Token, destToken: Token): boolean;
30
+ getAdapters(side: SwapSide): {
31
+ name: string;
32
+ index: number;
33
+ }[] | null;
34
+ initializePricing(blockNumber: number): Promise<void>;
35
+ getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
36
+ getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<MiroMigratorData>>;
37
+ getCalldataGasCost(poolPrices: PoolPrices<MiroMigratorData>): number | number[];
38
+ getAdapterParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: MiroMigratorData, side: SwapSide): AdapterExchangeParam;
39
+ getSimpleParam(srcToken: string, destToken: string, srcAmount: string, destAmount: string, data: MiroMigratorData, side: SwapSide): Promise<SimpleExchangeParam>;
40
+ getDexParam(srcToken: Address, destToken: Address, srcAmount: NumberAsString, destAmount: NumberAsString, recipient: Address, data: MiroMigratorData, side: SwapSide): DexExchangeParam;
41
+ getTopPoolsForToken(tokenAddress: Address, limit: number): Promise<PoolLiquidity[]>;
42
+ }
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.MiroMigrator = void 0;
40
+ const CALLDATA_GAS_COST = __importStar(require("../../calldata-gas-cost"));
41
+ const utils_1 = require("../../utils");
42
+ const types_1 = require("./types");
43
+ const simple_exchange_1 = require("../simple-exchange");
44
+ const config_1 = require("./config");
45
+ const bigint_constants_1 = require("../../bigint-constants");
46
+ const abi_1 = require("@ethersproject/abi");
47
+ const MiroMigrator_abi_json_1 = __importDefault(require("../../abi/miro-migrator/MiroMigrator.abi.json"));
48
+ const constants_1 = require("./constants");
49
+ const miro_migrator_pool_1 = require("./miro-migrator-pool");
50
+ class MiroMigrator extends simple_exchange_1.SimpleExchange {
51
+ network;
52
+ dexKey;
53
+ dexHelper;
54
+ migratorAddress;
55
+ pspTokenAddress;
56
+ xyzTokenAddress;
57
+ unitPrice;
58
+ migratorInterface;
59
+ hasConstantPriceLargeAmounts = true;
60
+ isFeeOnTransferSupported = false;
61
+ static dexKeysWithNetwork = (0, utils_1.getDexKeysWithNetwork)(config_1.MiroMigratorConfig);
62
+ eventPool;
63
+ logger;
64
+ constructor(network, dexKey, dexHelper, migratorAddress = config_1.MiroMigratorConfig[dexKey][network]
65
+ .migratorAddress, pspTokenAddress = config_1.MiroMigratorConfig[dexKey][network]
66
+ .pspTokenAddress, xyzTokenAddress = config_1.MiroMigratorConfig[dexKey][network]
67
+ .xyzTokenAddress, unitPrice = bigint_constants_1.BI_POWS[18], migratorInterface = new abi_1.Interface(MiroMigrator_abi_json_1.default)) {
68
+ super(dexHelper, dexKey);
69
+ this.network = network;
70
+ this.dexKey = dexKey;
71
+ this.dexHelper = dexHelper;
72
+ this.migratorAddress = migratorAddress;
73
+ this.pspTokenAddress = pspTokenAddress;
74
+ this.xyzTokenAddress = xyzTokenAddress;
75
+ this.unitPrice = unitPrice;
76
+ this.migratorInterface = migratorInterface;
77
+ this.logger = dexHelper.getLogger(dexKey);
78
+ this.eventPool = new miro_migrator_pool_1.MiroMigratorEventPool(this.dexKey, this.network, this.dexHelper, this.logger, this.migratorAddress, this.xyzTokenAddress, constants_1.TRANSFER_TOPIC);
79
+ }
80
+ isPSP(tokenAddress) {
81
+ return this.pspTokenAddress.toLowerCase() === tokenAddress.toLowerCase();
82
+ }
83
+ isXYZ(tokenAddress) {
84
+ return this.xyzTokenAddress.toLowerCase() === tokenAddress.toLowerCase();
85
+ }
86
+ isAppropriatePair(srcToken, destToken) {
87
+ return this.isPSP(srcToken.address) && this.isXYZ(destToken.address);
88
+ }
89
+ getAdapters(side) {
90
+ return null;
91
+ }
92
+ async initializePricing(blockNumber) {
93
+ this.eventPool.initialize(blockNumber);
94
+ }
95
+ async getPoolIdentifiers(srcToken, destToken, side, blockNumber) {
96
+ if (this.isAppropriatePair(srcToken, destToken)) {
97
+ return [`${this.dexKey}_${srcToken.address}_${destToken.address}`];
98
+ }
99
+ return [];
100
+ }
101
+ async getPricesVolume(srcToken, destToken, amounts, side, blockNumber, limitPools) {
102
+ if (!this.isAppropriatePair(srcToken, destToken)) {
103
+ return null;
104
+ }
105
+ const state = await this.eventPool.getOrGenerateState(blockNumber);
106
+ if (!state)
107
+ return null;
108
+ const prices = [];
109
+ for (const amount of amounts) {
110
+ if (amount > state.balance) {
111
+ prices.push(0n);
112
+ }
113
+ else {
114
+ prices.push(amount);
115
+ }
116
+ }
117
+ return [
118
+ {
119
+ prices,
120
+ unit: this.unitPrice,
121
+ gasCost: constants_1.MIRO_MIGRATION_GAS_COST,
122
+ exchange: this.dexKey,
123
+ poolAddresses: [this.migratorAddress],
124
+ data: null,
125
+ },
126
+ ];
127
+ }
128
+ getCalldataGasCost(poolPrices) {
129
+ return (CALLDATA_GAS_COST.FUNCTION_SELECTOR +
130
+ CALLDATA_GAS_COST.AMOUNT +
131
+ CALLDATA_GAS_COST.OFFSET_SMALL +
132
+ CALLDATA_GAS_COST.ZERO);
133
+ }
134
+ getAdapterParam(srcToken, destToken, srcAmount, destAmount, data, side) {
135
+ return {
136
+ targetExchange: this.migratorAddress,
137
+ payload: '0x',
138
+ networkFee: '0',
139
+ };
140
+ }
141
+ async getSimpleParam(srcToken, destToken, srcAmount, destAmount, data, side) {
142
+ const swapData = this.migratorInterface.encodeFunctionData(types_1.MiroMigratorFunctions.migratePSPtoXYZ, [srcAmount, '0x']);
143
+ return this.buildSimpleParamWithoutWETHConversion(srcToken, srcAmount, destToken, destAmount, swapData, this.migratorAddress);
144
+ }
145
+ getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
146
+ const swapData = this.migratorInterface.encodeFunctionData(types_1.MiroMigratorFunctions.migratePSPtoXYZ, [srcAmount, '0x']);
147
+ return {
148
+ needWrapNative: this.needWrapNative,
149
+ dexFuncHasRecipient: false,
150
+ exchangeData: swapData,
151
+ targetExchange: this.migratorAddress,
152
+ };
153
+ }
154
+ async getTopPoolsForToken(tokenAddress, limit) {
155
+ if (!this.isPSP(tokenAddress) && !this.isXYZ(tokenAddress)) {
156
+ return [];
157
+ }
158
+ return [
159
+ {
160
+ exchange: this.dexKey,
161
+ address: this.migratorAddress,
162
+ connectorTokens: [
163
+ {
164
+ address: this.isPSP(tokenAddress)
165
+ ? this.xyzTokenAddress
166
+ : this.pspTokenAddress,
167
+ decimals: 18,
168
+ },
169
+ ],
170
+ liquidityUSD: 1000000000, // Just returning a big number so this DEX will be preferred
171
+ },
172
+ ];
173
+ }
174
+ }
175
+ exports.MiroMigrator = MiroMigrator;
176
+ //# sourceMappingURL=miro-migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"miro-migrator.js","sourceRoot":"","sources":["../../../src/dex/miro-migrator/miro-migrator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,2EAA6D;AAC7D,uCAAoD;AAGpD,mCAAkE;AAClE,wDAAoD;AACpD,qCAA8C;AAC9C,6DAAiD;AACjD,4CAA+C;AAC/C,0GAA4E;AAC5E,2CAAsE;AACtE,6DAA6D;AAE7D,MAAa,YACX,SAAQ,gCAAc;IAcX;IACA;IACA;IACA;IAEA;IAEA;IAEC;IACA;IArBH,4BAA4B,GAAG,IAAI,CAAC;IAEpC,wBAAwB,GAAG,KAAK,CAAC;IAEnC,MAAM,CAAC,kBAAkB,GAC9B,IAAA,6BAAqB,EAAC,2BAAkB,CAAC,CAAC;IAC5B,SAAS,CAAwB;IAEjD,MAAM,CAAS;IAEf,YACW,OAAgB,EAChB,MAAc,EACd,SAAqB,EACrB,kBAA0B,2BAAkB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;SACnE,eAAe,EACT,kBAA0B,2BAAkB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;SACnE,eAAe,EACT,kBAA0B,2BAAkB,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;SACnE,eAAe,EACR,YAAY,0BAAO,CAAC,EAAE,CAAC,EACvB,oBAAoB,IAAI,eAAS,CAAC,+BAAe,CAAC;QAE5D,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAZhB,YAAO,GAAP,OAAO,CAAS;QAChB,WAAM,GAAN,MAAM,CAAQ;QACd,cAAS,GAAT,SAAS,CAAY;QACrB,oBAAe,GAAf,eAAe,CACN;QACT,oBAAe,GAAf,eAAe,CACN;QACT,oBAAe,GAAf,eAAe,CACN;QACR,cAAS,GAAT,SAAS,CAAc;QACvB,sBAAiB,GAAjB,iBAAiB,CAAiC;QAG5D,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,0CAAqB,CACxC,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,eAAe,EACpB,0BAAc,CACf,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,YAAqB;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,YAAqB;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;IAC3E,CAAC;IAED,iBAAiB,CAAC,QAAe,EAAE,SAAgB;QACjD,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAED,WAAW,CAAC,IAAc;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,QAAe,EACf,SAAgB,EAChB,IAAc,EACd,WAAmB;QAEnB,IAAI,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YAChD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,QAAe,EACf,SAAgB,EAChB,OAAiB,EACjB,IAAc,EACd,WAAmB,EACnB,UAAqB;QAErB,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,OAAO;YACL;gBACE,MAAM;gBACN,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,OAAO,EAAE,mCAAuB;gBAChC,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,aAAa,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC;gBACrC,IAAI,EAAE,IAAI;aACX;SACF,CAAC;IACJ,CAAC;IAED,kBAAkB,CAChB,UAAwC;QAExC,OAAO,CACL,iBAAiB,CAAC,iBAAiB;YACnC,iBAAiB,CAAC,MAAM;YACxB,iBAAiB,CAAC,YAAY;YAC9B,iBAAiB,CAAC,IAAI,CACvB,CAAC;IACJ,CAAC;IAED,eAAe,CACb,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAsB,EACtB,IAAc;QAEd,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,eAAe;YACpC,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,GAAG;SAChB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAsB,EACtB,IAAc;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CACxD,6BAAqB,CAAC,eAAe,EACrC,CAAC,SAAS,EAAE,IAAI,CAAC,CAClB,CAAC;QAEF,OAAO,IAAI,CAAC,qCAAqC,CAC/C,QAAQ,EACR,SAAS,EACT,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAI,CAAC,eAAe,CACrB,CAAC;IACJ,CAAC;IAED,WAAW,CACT,QAAiB,EACjB,SAAkB,EAClB,SAAyB,EACzB,UAA0B,EAC1B,SAAkB,EAClB,IAAsB,EACtB,IAAc;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,kBAAkB,CACxD,6BAAqB,CAAC,eAAe,EACrC,CAAC,SAAS,EAAE,IAAI,CAAC,CAClB,CAAC;QAEF,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,mBAAmB,EAAE,KAAK;YAC1B,YAAY,EAAE,QAAQ;YACtB,cAAc,EAAE,IAAI,CAAC,eAAe;SACrC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,YAAqB,EACrB,KAAa;QAEb,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,EAAE,CAAC;YAC3D,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO;YACL;gBACE,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,OAAO,EAAE,IAAI,CAAC,eAAe;gBAC7B,eAAe,EAAE;oBACf;wBACE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;4BAC/B,CAAC,CAAC,IAAI,CAAC,eAAe;4BACtB,CAAC,CAAC,IAAI,CAAC,eAAe;wBACxB,QAAQ,EAAE,EAAE;qBACb;iBACF;gBACD,YAAY,EAAE,UAAU,EAAE,4DAA4D;aACvF;SACF,CAAC;IACJ,CAAC;;AA3MH,oCA4MC"}
@@ -0,0 +1,13 @@
1
+ import { Address } from '../../types';
2
+ export type PoolState = {
3
+ balance: bigint;
4
+ };
5
+ export type MiroMigratorData = null;
6
+ export type DexParams = {
7
+ migratorAddress: Address;
8
+ pspTokenAddress: Address;
9
+ xyzTokenAddress: Address;
10
+ };
11
+ export declare enum MiroMigratorFunctions {
12
+ migratePSPtoXYZ = "migratePSPtoXYZ"
13
+ }
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MiroMigratorFunctions = void 0;
4
+ var MiroMigratorFunctions;
5
+ (function (MiroMigratorFunctions) {
6
+ MiroMigratorFunctions["migratePSPtoXYZ"] = "migratePSPtoXYZ";
7
+ })(MiroMigratorFunctions || (exports.MiroMigratorFunctions = MiroMigratorFunctions = {}));
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/dex/miro-migrator/types.ts"],"names":[],"mappings":";;;AAcA,IAAY,qBAEX;AAFD,WAAY,qBAAqB;IAC/B,4DAAmC,CAAA;AACrC,CAAC,EAFW,qBAAqB,qCAArB,qBAAqB,QAEhC"}
@@ -48,4 +48,20 @@ export declare class OSwapEventPool extends StatefulEventSubscriber<OSwapPoolSta
48
48
  * to keep the state's token balances up to date.
49
49
  */
50
50
  handleTransfer(event: any, state: DeepReadonly<OSwapPoolState>, log: Readonly<Log>): DeepReadonly<OSwapPoolState> | null;
51
+ handleRedeemRequested(event: any, state: DeepReadonly<OSwapPoolState>, log: Readonly<Log>): {
52
+ withdrawsQueued: any;
53
+ traderate0: string;
54
+ traderate1: string;
55
+ balance0: string;
56
+ balance1: string;
57
+ withdrawsClaimed: string;
58
+ };
59
+ handleRedeemClaimed(event: any, state: DeepReadonly<OSwapPoolState>, log: Readonly<Log>): {
60
+ withdrawsClaimed: string;
61
+ traderate0: string;
62
+ traderate1: string;
63
+ balance0: string;
64
+ balance1: string;
65
+ withdrawsQueued: string;
66
+ };
51
67
  }
@@ -32,6 +32,8 @@ class OSwapEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber
32
32
  this.addressesSubscribed = [pool.address, pool.token0, pool.token1];
33
33
  this.handlers['TraderateChanged'] = this.handleTraderateChanged.bind(this);
34
34
  this.handlers['Transfer'] = this.handleTransfer.bind(this);
35
+ this.handlers['RedeemRequested'] = this.handleRedeemRequested.bind(this);
36
+ this.handlers['RedeemClaimed'] = this.handleRedeemClaimed.bind(this);
35
37
  }
36
38
  parseLog(log) {
37
39
  if (log.address.toLowerCase() === this.pool.address) {
@@ -70,16 +72,19 @@ class OSwapEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber
70
72
  * @returns state of the event subscriber at blocknumber
71
73
  */
72
74
  async generateState(blockNumber) {
73
- const iERC20 = new abi_1.Interface(ERC20_abi_json_1.default);
74
75
  const callData = [
75
76
  {
76
77
  target: this.pool.token0,
77
- callData: iERC20.encodeFunctionData('balanceOf', [this.pool.address]),
78
+ callData: this.iERC20.encodeFunctionData('balanceOf', [
79
+ this.pool.address,
80
+ ]),
78
81
  decodeFunction: decoders_1.uint256ToBigInt,
79
82
  },
80
83
  {
81
84
  target: this.pool.token1,
82
- callData: iERC20.encodeFunctionData('balanceOf', [this.pool.address]),
85
+ callData: this.iERC20.encodeFunctionData('balanceOf', [
86
+ this.pool.address,
87
+ ]),
83
88
  decodeFunction: decoders_1.uint256ToBigInt,
84
89
  },
85
90
  {
@@ -92,13 +97,26 @@ class OSwapEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber
92
97
  callData: this.iOSwap.encodeFunctionData('traderate1', []),
93
98
  decodeFunction: decoders_1.uint256ToBigInt,
94
99
  },
100
+ {
101
+ target: this.pool.address,
102
+ callData: this.iOSwap.encodeFunctionData('withdrawsQueued', []),
103
+ decodeFunction: decoders_1.uint256ToBigInt,
104
+ },
105
+ {
106
+ target: this.pool.address,
107
+ callData: this.iOSwap.encodeFunctionData('withdrawsClaimed', []),
108
+ decodeFunction: decoders_1.uint256ToBigInt,
109
+ },
95
110
  ];
96
111
  const results = await this.dexHelper.multiWrapper.aggregate(callData, blockNumber, this.dexHelper.multiWrapper.defaultBatchSize);
112
+ const [balance0, balance1, traderate0, traderate1, withdrawsQueued, withdrawsClaimed,] = results;
97
113
  return {
98
- balance0: results[0].toString(),
99
- balance1: results[1].toString(),
100
- traderate0: results[2].toString(),
101
- traderate1: results[3].toString(),
114
+ balance0: balance0.toString(),
115
+ balance1: balance1.toString(),
116
+ traderate0: traderate0.toString(),
117
+ traderate1: traderate1.toString(),
118
+ withdrawsQueued: withdrawsQueued.toString(),
119
+ withdrawsClaimed: withdrawsClaimed.toString(),
102
120
  };
103
121
  }
104
122
  async getStateOrGenerate(blockNumber, readonly = true) {
@@ -116,8 +134,8 @@ class OSwapEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber
116
134
  handleTraderateChanged(event, state, log) {
117
135
  return {
118
136
  ...state,
119
- traderate0: event.args.traderate0.toBigInt(),
120
- traderate1: event.args.traderate1.toBigInt(),
137
+ traderate0: event.args.traderate0.toString(),
138
+ traderate1: event.args.traderate1.toString(),
121
139
  };
122
140
  }
123
141
  /**
@@ -153,6 +171,20 @@ class OSwapEventPool extends stateful_event_subscriber_1.StatefulEventSubscriber
153
171
  balance1: balance1.toString(),
154
172
  };
155
173
  }
174
+ handleRedeemRequested(event, state, log) {
175
+ return {
176
+ ...state,
177
+ withdrawsQueued: event.args.queued.toString(),
178
+ };
179
+ }
180
+ handleRedeemClaimed(event, state, log) {
181
+ const withdrawsClaimed = BigInt(state.withdrawsClaimed);
182
+ const assets = event.args.assets.toBigInt();
183
+ return {
184
+ ...state,
185
+ withdrawsClaimed: (withdrawsClaimed + assets).toString(),
186
+ };
187
+ }
156
188
  }
157
189
  exports.OSwapEventPool = OSwapEventPool;
158
190
  //# sourceMappingURL=oswap-pool.js.map