@paraswap/dex-lib 3.8.35 → 3.8.36

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,163 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ { "internalType": "address", "name": "psm_", "type": "address" },
5
+ { "internalType": "address", "name": "usdsJoin_", "type": "address" }
6
+ ],
7
+ "stateMutability": "nonpayable",
8
+ "type": "constructor"
9
+ },
10
+ {
11
+ "inputs": [],
12
+ "name": "HALTED",
13
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
14
+ "stateMutability": "view",
15
+ "type": "function"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "buf",
20
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
21
+ "stateMutability": "view",
22
+ "type": "function"
23
+ },
24
+ {
25
+ "inputs": [
26
+ { "internalType": "address", "name": "usr", "type": "address" },
27
+ { "internalType": "uint256", "name": "gemAmt", "type": "uint256" }
28
+ ],
29
+ "name": "buyGem",
30
+ "outputs": [
31
+ { "internalType": "uint256", "name": "usdsInWad", "type": "uint256" }
32
+ ],
33
+ "stateMutability": "nonpayable",
34
+ "type": "function"
35
+ },
36
+ {
37
+ "inputs": [],
38
+ "name": "dai",
39
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
40
+ "stateMutability": "view",
41
+ "type": "function"
42
+ },
43
+ {
44
+ "inputs": [],
45
+ "name": "dec",
46
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
47
+ "stateMutability": "view",
48
+ "type": "function"
49
+ },
50
+ {
51
+ "inputs": [],
52
+ "name": "gem",
53
+ "outputs": [
54
+ { "internalType": "contract GemLike", "name": "", "type": "address" }
55
+ ],
56
+ "stateMutability": "view",
57
+ "type": "function"
58
+ },
59
+ {
60
+ "inputs": [],
61
+ "name": "gemJoin",
62
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
63
+ "stateMutability": "view",
64
+ "type": "function"
65
+ },
66
+ {
67
+ "inputs": [],
68
+ "name": "ilk",
69
+ "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
70
+ "stateMutability": "view",
71
+ "type": "function"
72
+ },
73
+ {
74
+ "inputs": [],
75
+ "name": "live",
76
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
77
+ "stateMutability": "view",
78
+ "type": "function"
79
+ },
80
+ {
81
+ "inputs": [],
82
+ "name": "pocket",
83
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
84
+ "stateMutability": "view",
85
+ "type": "function"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "psm",
90
+ "outputs": [
91
+ { "internalType": "contract PsmLike", "name": "", "type": "address" }
92
+ ],
93
+ "stateMutability": "view",
94
+ "type": "function"
95
+ },
96
+ {
97
+ "inputs": [
98
+ { "internalType": "address", "name": "usr", "type": "address" },
99
+ { "internalType": "uint256", "name": "gemAmt", "type": "uint256" }
100
+ ],
101
+ "name": "sellGem",
102
+ "outputs": [
103
+ { "internalType": "uint256", "name": "usdsOutWad", "type": "uint256" }
104
+ ],
105
+ "stateMutability": "nonpayable",
106
+ "type": "function"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "tin",
111
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
112
+ "stateMutability": "view",
113
+ "type": "function"
114
+ },
115
+ {
116
+ "inputs": [],
117
+ "name": "to18ConversionFactor",
118
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
119
+ "stateMutability": "view",
120
+ "type": "function"
121
+ },
122
+ {
123
+ "inputs": [],
124
+ "name": "tout",
125
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
126
+ "stateMutability": "view",
127
+ "type": "function"
128
+ },
129
+ {
130
+ "inputs": [],
131
+ "name": "usds",
132
+ "outputs": [
133
+ { "internalType": "contract GemLike", "name": "", "type": "address" }
134
+ ],
135
+ "stateMutability": "view",
136
+ "type": "function"
137
+ },
138
+ {
139
+ "inputs": [],
140
+ "name": "usdsJoin",
141
+ "outputs": [
142
+ { "internalType": "contract UsdsJoinLike", "name": "", "type": "address" }
143
+ ],
144
+ "stateMutability": "view",
145
+ "type": "function"
146
+ },
147
+ {
148
+ "inputs": [],
149
+ "name": "vat",
150
+ "outputs": [
151
+ { "internalType": "contract VatLike", "name": "", "type": "address" }
152
+ ],
153
+ "stateMutability": "view",
154
+ "type": "function"
155
+ },
156
+ {
157
+ "inputs": [],
158
+ "name": "vow",
159
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
160
+ "stateMutability": "view",
161
+ "type": "function"
162
+ }
163
+ ]
@@ -10,6 +10,11 @@ exports.LitePsmConfig = {
10
10
  address: '0x6b175474e89094c44da98b954eedeac495271d0f',
11
11
  decimals: 18,
12
12
  },
13
+ usds: {
14
+ address: '0xdc035d45d973e3ec169d2276ddab16f1e407384f',
15
+ decimals: 18,
16
+ },
17
+ usdsPsmAddress: '0xA188EEC8F81263234dA3622A406892F3D630f98c',
13
18
  vatAddress: '0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b',
14
19
  pools: [
15
20
  {
@@ -17,7 +22,6 @@ exports.LitePsmConfig = {
17
22
  address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
18
23
  decimals: 6,
19
24
  },
20
- gemJoinAddress: '0xf6e72db5454dd049d0788e411b06cfaf16853042',
21
25
  pocketAddress: '0x37305b1cd40574e4c5ce33f8e8306be057fd7341',
22
26
  psmAddress: '0xf6e72db5454dd049d0788e411b06cfaf16853042',
23
27
  identifier: '0x4c4954452d50534d2d555344432d410000000000000000000000000000000000', // bytes32("LITE-PSM-USDC-A")
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/lite-psm/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE1C,0CAA0C;AAC7B,QAAA,aAAa,GAA4B;IACpD,OAAO,EAAE;QACP,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,GAAG,EAAE;gBACH,OAAO,EAAE,4CAA4C;gBACrD,QAAQ,EAAE,EAAE;aACb;YACD,UAAU,EAAE,4CAA4C;YACxD,KAAK,EAAE;gBACL;oBACE,GAAG,EAAE;wBACH,OAAO,EAAE,4CAA4C;wBACrD,QAAQ,EAAE,CAAC;qBACZ;oBACD,cAAc,EAAE,4CAA4C;oBAC5D,aAAa,EAAE,4CAA4C;oBAC3D,UAAU,EAAE,4CAA4C;oBACxD,UAAU,EACR,oEAAoE,EAAE,6BAA6B;iBACtG;aACF;SACF;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/dex/lite-psm/config.ts"],"names":[],"mappings":";;;AAEA,+CAA0C;AAE1C,0CAA0C;AAC7B,QAAA,aAAa,GAA4B;IACpD,OAAO,EAAE;QACP,CAAC,mBAAO,CAAC,OAAO,CAAC,EAAE;YACjB,GAAG,EAAE;gBACH,OAAO,EAAE,4CAA4C;gBACrD,QAAQ,EAAE,EAAE;aACb;YACD,IAAI,EAAE;gBACJ,OAAO,EAAE,4CAA4C;gBACrD,QAAQ,EAAE,EAAE;aACb;YACD,cAAc,EAAE,4CAA4C;YAC5D,UAAU,EAAE,4CAA4C;YACxD,KAAK,EAAE;gBACL;oBACE,GAAG,EAAE;wBACH,OAAO,EAAE,4CAA4C;wBACrD,QAAQ,EAAE,CAAC;qBACZ;oBACD,aAAa,EAAE,4CAA4C;oBAC3D,UAAU,EAAE,4CAA4C;oBACxD,UAAU,EACR,oEAAoE,EAAE,6BAA6B;iBACtG;aACF;SACF;KACF;CACF,CAAC"}
@@ -10,6 +10,8 @@ export declare class LitePsm extends SimpleExchange implements IDex<LitePsmData,
10
10
  protected network: Network;
11
11
  protected dexHelper: IDexHelper;
12
12
  protected dai: Token;
13
+ protected usds: Token;
14
+ protected usdsPsm: Address;
13
15
  protected vatAddress: Address;
14
16
  protected poolConfigs: PoolConfig[];
15
17
  protected eventPools: {
@@ -22,7 +24,7 @@ export declare class LitePsm extends SimpleExchange implements IDex<LitePsmData,
22
24
  networks: Network[];
23
25
  }[];
24
26
  logger: Logger;
25
- constructor(network: Network, dexKey: string, dexHelper: IDexHelper, dai?: Token, vatAddress?: Address, poolConfigs?: PoolConfig[]);
27
+ constructor(network: Network, dexKey: string, dexHelper: IDexHelper, dai?: Token, usds?: Token, usdsPsm?: Address, vatAddress?: Address, poolConfigs?: PoolConfig[]);
26
28
  static getDirectFunctionNameV6(): string[];
27
29
  initializePricing(blockNumber: number): Promise<void>;
28
30
  getAdapters(side: SwapSide): {
@@ -32,7 +34,7 @@ export declare class LitePsm extends SimpleExchange implements IDex<LitePsmData,
32
34
  getEventPool(srcToken: Token, destToken: Token): LitePsmEventPool | null;
33
35
  getPoolIdentifiers(srcToken: Token, destToken: Token, side: SwapSide, blockNumber: number): Promise<string[]>;
34
36
  getPoolState(pool: LitePsmEventPool, blockNumber: number): Promise<PoolState>;
35
- computePrices(isSrcDai: boolean, to18ConversionFactor: bigint, side: SwapSide, amounts: bigint[], poolState: PoolState): bigint[];
37
+ computePrices(isDestGem: boolean, to18ConversionFactor: bigint, side: SwapSide, amounts: bigint[], poolState: PoolState): bigint[];
36
38
  getPricesVolume(srcToken: Token, destToken: Token, amounts: bigint[], side: SwapSide, blockNumber: number, limitPools?: string[]): Promise<null | ExchangePrices<LitePsmData>>;
37
39
  getCalldataGasCost(poolPrices: PoolPrices<LitePsmData>): number | number[];
38
40
  getPsmParams(srcToken: string, srcAmount: string, destAmount: string, data: LitePsmData, side: SwapSide): {
@@ -34,6 +34,7 @@ const utils_1 = require("../../utils");
34
34
  const simple_exchange_1 = require("../simple-exchange");
35
35
  const config_1 = require("./config");
36
36
  const psm_json_1 = __importDefault(require("../../abi/lite-psm/psm.json"));
37
+ const usdsPsm_json_1 = __importDefault(require("../../abi/lite-psm/usdsPsm.json"));
37
38
  const bigint_constants_1 = require("../../bigint-constants");
38
39
  const types_1 = require("../../executor/types");
39
40
  const bytes_1 = require("@ethersproject/bytes");
@@ -41,15 +42,18 @@ const core_1 = require("@paraswap/core");
41
42
  const ethers_1 = require("ethers");
42
43
  const lite_psm_event_pool_1 = require("./lite-psm-event-pool");
43
44
  const utils_2 = require("../../executor/utils");
44
- const psmInterface = new abi_1.Interface(psm_json_1.default);
45
+ const daiPsmInterface = new abi_1.Interface(psm_json_1.default);
46
+ const usdsPsmInterface = new abi_1.Interface(usdsPsm_json_1.default);
45
47
  const WAD = bigint_constants_1.BI_POWS[18];
46
48
  const ceilDiv = (a, b) => (a + b - 1n) / b;
47
49
  class LitePsm extends simple_exchange_1.SimpleExchange {
48
- constructor(network, dexKey, dexHelper, dai = config_1.LitePsmConfig[dexKey][network].dai, vatAddress = config_1.LitePsmConfig[dexKey][network].vatAddress, poolConfigs = config_1.LitePsmConfig[dexKey][network].pools) {
50
+ constructor(network, dexKey, dexHelper, dai = config_1.LitePsmConfig[dexKey][network].dai, usds = config_1.LitePsmConfig[dexKey][network].usds, usdsPsm = config_1.LitePsmConfig[dexKey][network].usdsPsmAddress, vatAddress = config_1.LitePsmConfig[dexKey][network].vatAddress, poolConfigs = config_1.LitePsmConfig[dexKey][network].pools) {
49
51
  super(dexHelper, dexKey);
50
52
  this.network = network;
51
53
  this.dexHelper = dexHelper;
52
54
  this.dai = dai;
55
+ this.usds = usds;
56
+ this.usdsPsm = usdsPsm;
53
57
  this.vatAddress = vatAddress;
54
58
  this.poolConfigs = poolConfigs;
55
59
  // warning: There is limit on swap
@@ -81,6 +85,8 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
81
85
  const destAddress = destToken.address.toLowerCase();
82
86
  return ((srcAddress === this.dai.address && this.eventPools[destAddress]) ||
83
87
  (destAddress === this.dai.address && this.eventPools[srcAddress]) ||
88
+ (srcAddress === this.usds.address && this.eventPools[destAddress]) ||
89
+ (destAddress === this.usds.address && this.eventPools[srcAddress]) ||
84
90
  null);
85
91
  }
86
92
  // Returns list of pool identifiers that can be used
@@ -100,7 +106,7 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
100
106
  pool.setState(onChainState, blockNumber);
101
107
  return onChainState;
102
108
  }
103
- computePrices(isSrcDai, to18ConversionFactor, side, amounts, poolState) {
109
+ computePrices(isDestGem, to18ConversionFactor, side, amounts, poolState) {
104
110
  const sellGemCheck = (dart) => {
105
111
  return dart <= poolState.daiBalance;
106
112
  };
@@ -109,7 +115,7 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
109
115
  };
110
116
  return amounts.map(a => {
111
117
  if (side === constants_1.SwapSide.SELL) {
112
- if (isSrcDai) {
118
+ if (isDestGem) {
113
119
  const gemAmt18 = (a * WAD) / (WAD + poolState.tout);
114
120
  if (buyGemCheck(gemAmt18))
115
121
  return gemAmt18 / to18ConversionFactor;
@@ -121,7 +127,7 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
121
127
  }
122
128
  }
123
129
  else {
124
- if (isSrcDai) {
130
+ if (isDestGem) {
125
131
  const gemAmt18 = to18ConversionFactor * a;
126
132
  if (buyGemCheck(gemAmt18))
127
133
  return gemAmt18 + (gemAmt18 * poolState.tout) / WAD;
@@ -148,24 +154,27 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
148
154
  return null;
149
155
  const poolState = await this.getPoolState(eventPool, blockNumber);
150
156
  const unitVolume = (0, utils_1.getBigIntPow)((side === constants_1.SwapSide.SELL ? srcToken : destToken).decimals);
151
- const isSrcDai = srcToken.address.toLowerCase() === this.dai.address;
152
- const gem = isSrcDai ? destToken : srcToken;
153
- const toll = (side === constants_1.SwapSide.SELL && isSrcDai) ||
154
- (side === constants_1.SwapSide.BUY && !isSrcDai)
157
+ const srcLower = srcToken.address.toLowerCase();
158
+ const isSrcDai = srcLower === this.dai.address;
159
+ const isDaiSwap = isSrcDai || destToken.address.toLowerCase() === this.dai.address;
160
+ const isDestGem = isSrcDai || srcLower === this.usds.address;
161
+ const gem = isDestGem ? destToken : srcToken;
162
+ const toll = (side === constants_1.SwapSide.SELL && isDestGem) ||
163
+ (side === constants_1.SwapSide.BUY && !isDestGem)
155
164
  ? poolState.tout
156
165
  : poolState.tin;
157
- const [unit, ...prices] = this.computePrices(isSrcDai, eventPool.to18ConversionFactor, side, [unitVolume, ...amounts], poolState);
166
+ const [unit, ...prices] = this.computePrices(isDestGem, eventPool.to18ConversionFactor, side, [unitVolume, ...amounts], poolState);
167
+ const psm = isDaiSwap ? eventPool.poolConfig.psmAddress : this.usdsPsm;
158
168
  return [
159
169
  {
160
170
  prices,
161
171
  unit,
162
172
  data: {
163
173
  toll: toll.toString(),
164
- psmAddress: eventPool.poolConfig.psmAddress,
165
- gemJoinAddress: eventPool.poolConfig.gemJoinAddress,
174
+ psmAddress: psm,
166
175
  gemDecimals: gem.decimals,
167
176
  },
168
- poolAddresses: [eventPool.poolConfig.psmAddress],
177
+ poolAddresses: [psm],
169
178
  exchange: this.dexKey,
170
179
  gasCost: 50000,
171
180
  poolIdentifier,
@@ -183,10 +192,11 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
183
192
  CALLDATA_GAS_COST.wordNonZeroBytes(poolPrices.data.gemDecimals === 6 ? 4 : 1));
184
193
  }
185
194
  getPsmParams(srcToken, srcAmount, destAmount, data, side) {
186
- const isSrcDai = srcToken.toLowerCase() === this.dai.address;
195
+ const isDestGem = srcToken.toLowerCase() === this.dai.address ||
196
+ srcToken.toLowerCase() === this.usds.address;
187
197
  const to18ConversionFactor = (0, utils_1.getBigIntPow)(18 - data.gemDecimals);
188
198
  if (side === constants_1.SwapSide.SELL) {
189
- if (isSrcDai) {
199
+ if (isDestGem) {
190
200
  const gemAmt18 = (BigInt(srcAmount) * WAD) / (WAD + BigInt(data.toll));
191
201
  return {
192
202
  isGemSell: false,
@@ -198,7 +208,7 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
198
208
  }
199
209
  }
200
210
  else {
201
- if (isSrcDai) {
211
+ if (isDestGem) {
202
212
  return { isGemSell: false, gemAmount: destAmount };
203
213
  }
204
214
  else {
@@ -228,9 +238,7 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
228
238
  // isApproved is only used in direct method and available only for v6, then no need to check approve for v5
229
239
  // because it's either done in getSimpleParam or approve call in the adapter smart contract
230
240
  if (options.version === core_1.ParaSwapVersion.V6 && options.isDirectMethod) {
231
- isApproved = await this.dexHelper.augustusApprovals.hasApproval(options.executionContractAddress, srcToken.address, srcToken.address.toLowerCase() === this.dai.address.toLowerCase()
232
- ? optimalSwapExchange.data.psmAddress
233
- : optimalSwapExchange.data.gemJoinAddress);
241
+ isApproved = await this.dexHelper.augustusApprovals.hasApproval(options.executionContractAddress, srcToken.address, optimalSwapExchange.data.psmAddress);
234
242
  }
235
243
  return [
236
244
  {
@@ -242,7 +250,12 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
242
250
  }
243
251
  getDexParam(srcToken, destToken, srcAmount, destAmount, recipient, data, side) {
244
252
  const { isGemSell, gemAmount } = this.getPsmParams(srcToken, srcAmount, destAmount, data, side);
245
- let exchangeData = psmInterface.encodeFunctionData(isGemSell ? 'sellGem' : 'buyGem', [recipient, gemAmount]);
253
+ const isDaiSwap = destToken.toLowerCase() === this.dai.address ||
254
+ srcToken.toLowerCase() === this.dai.address;
255
+ let exchangeData = (isDaiSwap ? daiPsmInterface : usdsPsmInterface).encodeFunctionData(isGemSell ? 'sellGem' : 'buyGem', [
256
+ recipient,
257
+ gemAmount,
258
+ ]);
246
259
  // append toll and to18ConversionFactor & set specialDexFlag = SWAP_ON_MAKER_PSM to
247
260
  // - `buyGem` on Ex1 & Ex2
248
261
  // - `sellGem` on Ex3
@@ -262,9 +275,9 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
262
275
  exchangeData,
263
276
  targetExchange: data.psmAddress,
264
277
  specialDexFlag,
265
- spender: isGemSell ? data.gemJoinAddress : data.psmAddress,
278
+ spender: data.psmAddress,
266
279
  returnAmountPos: side === constants_1.SwapSide.SELL && isGemSell
267
- ? (0, utils_2.extractReturnAmountPosition)(psmInterface, 'sellGem', 'daiOutWad')
280
+ ? (0, utils_2.extractReturnAmountPosition)(isDaiSwap ? daiPsmInterface : usdsPsmInterface, 'sellGem', isDaiSwap ? 'daiOutWad' : 'usdsOutWad')
268
281
  : undefined,
269
282
  };
270
283
  }
@@ -296,7 +309,7 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
296
309
  data.toll,
297
310
  to18ConversionFactor.toString(),
298
311
  data.psmAddress,
299
- data.gemJoinAddress,
312
+ data.psmAddress,
300
313
  metadata,
301
314
  beneficiaryDirectionApproveFlag.toString(),
302
315
  ];
@@ -318,8 +331,8 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
318
331
  return (2 *
319
332
  parseInt(((buyLimit > sellLimit ? sellLimit : buyLimit) / bigint_constants_1.BI_POWS[18]).toString()));
320
333
  };
321
- const isDai = _tokenAddress === this.dai.address;
322
- const validPoolConfigs = isDai
334
+ const isDaiOrUsds = _tokenAddress === this.dai.address || _tokenAddress === this.usds.address;
335
+ const validPoolConfigs = isDaiOrUsds
323
336
  ? this.poolConfigs
324
337
  : this.eventPools[_tokenAddress]
325
338
  ? [this.eventPools[_tokenAddress].poolConfig]
@@ -331,7 +344,7 @@ class LitePsm extends simple_exchange_1.SimpleExchange {
331
344
  exchange: this.dexKey,
332
345
  address: p.psmAddress,
333
346
  liquidityUSD: minLiq(poolStates[i], p.gem.decimals),
334
- connectorTokens: [isDai ? p.gem : this.dai],
347
+ connectorTokens: isDaiOrUsds ? [p.gem] : [this.dai, this.usds],
335
348
  }));
336
349
  }
337
350
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lite-psm.js","sourceRoot":"","sources":["../../../src/dex/lite-psm/lite-psm.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lite-psm.js","sourceRoot":"","sources":["../../../src/dex/lite-psm/lite-psm.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA+C;AAc/C,+CAAkE;AAClE,2EAA6D;AAC7D,uCAIqB;AAUrB,wDAAoD;AACpD,qCAAyC;AACzC,2EAAoD;AACpD,mFAAyD;AACzD,6DAAiD;AACjD,gDAAkD;AAClD,gDAAsE;AACtE,yCAIwB;AACxB,mCAAmC;AACnC,+DAA0E;AAC1E,gDAAmE;AAEnE,MAAM,eAAe,GAAG,IAAI,eAAS,CAAC,kBAAS,CAAC,CAAC;AACjD,MAAM,gBAAgB,GAAG,IAAI,eAAS,CAAC,sBAAU,CAAC,CAAC;AACnD,MAAM,GAAG,GAAG,0BAAO,CAAC,EAAE,CAAC,CAAC;AAExB,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;AAE3D,MAAa,OACX,SAAQ,gCAAc;IActB,YACY,OAAgB,EAC1B,MAAc,EACJ,SAAqB,EACrB,MAAa,sBAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,EAC/C,OAAc,sBAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EACjD,UAAmB,sBAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,cAAc,EAChE,aAAsB,sBAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAC/D,cAA4B,sBAAa,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK;QAE1E,KAAK,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QATf,YAAO,GAAP,OAAO,CAAS;QAEhB,cAAS,GAAT,SAAS,CAAY;QACrB,QAAG,GAAH,GAAG,CAA4C;QAC/C,SAAI,GAAJ,IAAI,CAA6C;QACjD,YAAO,GAAP,OAAO,CAAyD;QAChE,eAAU,GAAV,UAAU,CAAqD;QAC/D,gBAAW,GAAX,WAAW,CAAqD;QAjB5E,kCAAkC;QACzB,iCAA4B,GAAG,IAAI,CAAC;QACpC,6BAAwB,GAAG,KAAK,CAAC;QAkBxC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,WAAW,CAAC,OAAO,CACjB,CAAC,CAAC,EAAE,CACF,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,IAAI,sCAAgB,CAClE,MAAM,EACN,OAAO,EACP,SAAS,EACT,IAAI,CAAC,MAAM,EACX,CAAC,EACD,IAAI,CAAC,UAAU,CAChB,CAAC,CACL,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,uBAAuB;QAC5B,OAAO,CAAC,uBAAgB,CAAC,8BAA8B,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,WAAmB;QACzC,MAAM,UAAU,GAAG,MAAM,IAAA,qCAAe,EACtC,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,WAAW,EACX,sBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CACrD,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE;YAClC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/D,MAAM,SAAS,CAAC,UAAU,CAAC,WAAW,EAAE;gBACtC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;aACrB,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,wDAAwD;IACxD,WAAW,CAAC,IAAc;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,QAAe,EAAE,SAAgB;QAC5C,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClD,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACpD,OAAO,CACL,CAAC,UAAU,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACjE,CAAC,WAAW,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YACjE,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAClE,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAClE,IAAI,CACL,CAAC;IACJ,CAAC;IAED,oDAAoD;IACpD,mDAAmD;IACnD,gBAAgB;IAChB,KAAK,CAAC,kBAAkB,CACtB,QAAe,EACf,SAAgB,EAChB,IAAc,EACd,WAAmB;QAEnB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS;YAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,YAAY,CAChB,IAAsB,EACtB,WAAmB;QAEnB,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,UAAU;YAAE,OAAO,UAAU,CAAC;QAClC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACzC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,aAAa,CACX,SAAkB,EAClB,oBAA4B,EAC5B,IAAc,EACd,OAAiB,EACjB,SAAoB;QAEpB,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,EAAE;YACpC,OAAO,IAAI,IAAI,SAAS,CAAC,UAAU,CAAC;QACtC,CAAC,CAAC;QACF,MAAM,WAAW,GAAG,CAAC,IAAY,EAAE,EAAE;YACnC,OAAO,IAAI,IAAI,SAAS,CAAC,UAAU,GAAG,oBAAoB,CAAC;QAC7D,CAAC,CAAC;QAEF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YACrB,IAAI,IAAI,KAAK,oBAAQ,CAAC,IAAI,EAAE;gBAC1B,IAAI,SAAS,EAAE;oBACb,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;oBACpD,IAAI,WAAW,CAAC,QAAQ,CAAC;wBAAE,OAAO,QAAQ,GAAG,oBAAoB,CAAC;iBACnE;qBAAM;oBACL,MAAM,QAAQ,GAAG,oBAAoB,GAAG,CAAC,CAAC;oBAC1C,IAAI,YAAY,CAAC,QAAQ,CAAC;wBACxB,OAAO,QAAQ,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;iBACtD;aACF;iBAAM;gBACL,IAAI,SAAS,EAAE;oBACb,MAAM,QAAQ,GAAG,oBAAoB,GAAG,CAAC,CAAC;oBAC1C,IAAI,WAAW,CAAC,QAAQ,CAAC;wBACvB,OAAO,QAAQ,GAAG,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;iBACvD;qBAAM;oBACL,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;oBACnD,IAAI,YAAY,CAAC,QAAQ,CAAC;wBAAE,OAAO,QAAQ,GAAG,oBAAoB,CAAC;iBACpE;aACF;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,mCAAmC;IACnC,oDAAoD;IACpD,kDAAkD;IAClD,yBAAyB;IACzB,KAAK,CAAC,eAAe,CACnB,QAAe,EACf,SAAgB,EAChB,OAAiB,EACjB,IAAc,EACd,WAAmB,EACnB,UAAqB;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QACzD,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAE5B,MAAM,cAAc,GAAG,SAAS,CAAC,aAAa,EAAE,CAAC;QACjD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,cAAc,CAAC;YAAE,OAAO,IAAI,CAAC;QAEpE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;QAElE,MAAM,UAAU,GAAG,IAAA,oBAAY,EAC7B,CAAC,IAAI,KAAK,oBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CACzD,CAAC;QAEF,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QAC/C,MAAM,SAAS,GACb,QAAQ,IAAI,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QAEnE,MAAM,SAAS,GAAG,QAAQ,IAAI,QAAQ,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAE7D,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7C,MAAM,IAAI,GACR,CAAC,IAAI,KAAK,oBAAQ,CAAC,IAAI,IAAI,SAAS,CAAC;YACrC,CAAC,IAAI,KAAK,oBAAQ,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACnC,CAAC,CAAC,SAAS,CAAC,IAAI;YAChB,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC;QAEpB,MAAM,CAAC,IAAI,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,aAAa,CAC1C,SAAS,EACT,SAAS,CAAC,oBAAoB,EAC9B,IAAI,EACJ,CAAC,UAAU,EAAE,GAAG,OAAO,CAAC,EACxB,SAAS,CACV,CAAC;QAEF,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;QACvE,OAAO;YACL;gBACE,MAAM;gBACN,IAAI;gBACJ,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE;oBACrB,UAAU,EAAE,GAAG;oBACf,WAAW,EAAE,GAAG,CAAC,QAAQ;iBAC1B;gBACD,aAAa,EAAE,CAAC,GAAG,CAAC;gBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM;gBACrB,OAAO,EAAE,KAAK;gBACd,cAAc;aACf;SACF,CAAC;IACJ,CAAC;IAED,mEAAmE;IACnE,kBAAkB,CAAC,UAAmC;QACpD,OAAO,CACL,iBAAiB,CAAC,YAAY;YAC9B,iBAAiB,CAAC,YAAY;YAC9B,iBAAiB,CAAC,OAAO;YACzB,yDAAyD;YACzD,iBAAiB,CAAC,IAAI;YACtB,6DAA6D;YAC7D,iBAAiB,CAAC,gBAAgB,CAChC,UAAU,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC1C,CACF,CAAC;IACJ,CAAC;IAED,YAAY,CACV,QAAgB,EAChB,SAAiB,EACjB,UAAkB,EAClB,IAAiB,EACjB,IAAc;QAEd,MAAM,SAAS,GACb,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO;YAC3C,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAC/C,MAAM,oBAAoB,GAAG,IAAA,oBAAY,EAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QACjE,IAAI,IAAI,KAAK,oBAAQ,CAAC,IAAI,EAAE;YAC1B,IAAI,SAAS,EAAE;gBACb,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvE,OAAO;oBACL,SAAS,EAAE,KAAK;oBAChB,SAAS,EAAE,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC,QAAQ,EAAE;iBACxD,CAAC;aACH;iBAAM;gBACL,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;aAClD;SACF;aAAM;YACL,IAAI,SAAS,EAAE;gBACb,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;aACpD;iBAAM;gBACL,MAAM,MAAM,GAAG,OAAO,CACpB,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG,EACxB,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,oBAAoB,CACjD,CAAC;gBACF,OAAO;oBACL,SAAS,EAAE,IAAI;oBACf,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE;iBAC7B,CAAC;aACH;SACF;IACH,CAAC;IAED,eAAe,CACb,QAAgB,EAChB,SAAiB,EACjB,SAAiB,EACjB,UAAkB,EAClB,IAAiB,EACjB,IAAc;QAEd,OAAO;YACL,cAAc,EAAE,IAAI;YACpB,UAAU,EAAE,GAAG;YACf,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,mBAAmB,CAAC,OAAgB;QAClC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IAED,KAAK,CAAC,qBAAqB,CACzB,mBAAqD,EACrD,QAAe,EACf,SAAgB,EAChB,IAAc,EACd,OAAqC;QAErC,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7B,MAAM,IAAI,KAAK,CACb,SAAS,IAAI,CAAC,MAAM,gDAAgD,CACrE,CAAC;SACH;QAED,IAAI,UAAU,GAAG,KAAK,CAAC;QAEvB,2GAA2G;QAC3G,2FAA2F;QAC3F,IAAI,OAAO,CAAC,OAAO,KAAK,sBAAe,CAAC,EAAE,IAAI,OAAO,CAAC,cAAc,EAAE;YACpE,UAAU,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,WAAW,CAC7D,OAAO,CAAC,wBAAwB,EAChC,QAAQ,CAAC,OAAO,EAChB,mBAAmB,CAAC,IAAI,CAAC,UAAU,CACpC,CAAC;SACH;QAED,OAAO;YACL;gBACE,GAAG,mBAAmB;gBACtB,IAAI,EAAE,EAAE,GAAG,mBAAmB,CAAC,IAAI,EAAE,UAAU,EAAE;aAClD;YACD,EAAE;SACH,CAAC;IACJ,CAAC;IAED,WAAW,CACT,QAAiB,EACjB,SAAkB,EAClB,SAAyB,EACzB,UAA0B,EAC1B,SAAkB,EAClB,IAAiB,EACjB,IAAc;QAEd,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,YAAY,CAChD,QAAQ,EACR,SAAS,EACT,UAAU,EACV,IAAI,EACJ,IAAI,CACL,CAAC;QAEF,MAAM,SAAS,GACb,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO;YAC5C,QAAQ,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;QAE9C,IAAI,YAAY,GAAG,CACjB,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAC/C,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;YACrD,SAAS;YACT,SAAS;SACV,CAAC,CAAC;QAEH,mFAAmF;QACnF,0BAA0B;QAC1B,qBAAqB;QACrB,IAAI,cAAc,GAAG,kBAAU,CAAC,OAAO,CAAC;QACxC,IACE,CAAC,IAAI,KAAK,oBAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC;YACtC,CAAC,IAAI,KAAK,oBAAQ,CAAC,GAAG,IAAI,SAAS,CAAC,EACpC;YACA,YAAY,GAAG,IAAA,iBAAS,EAAC;gBACvB,YAAY;gBACZ,IAAA,kBAAU,EAAC,IAAA,eAAO,EAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC1C,IAAA,kBAAU,EAAC,IAAA,eAAO,EAAC,IAAA,oBAAY,EAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,CAAC;aAC7D,CAAC,CAAC;YACH,cAAc,GAAG,kBAAU,CAAC,iBAAiB,CAAC;SAC/C;QAED,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,mBAAmB,EAAE,IAAI;YACzB,YAAY;YACZ,cAAc,EAAE,IAAI,CAAC,UAAU;YAC/B,cAAc;YACd,OAAO,EAAE,IAAI,CAAC,UAAU;YACxB,eAAe,EACb,IAAI,KAAK,oBAAQ,CAAC,IAAI,IAAI,SAAS;gBACjC,CAAC,CAAC,IAAA,mCAA2B,EACzB,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,EAC9C,SAAS,EACT,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CACvC;gBACH,CAAC,CAAC,SAAS;SAChB,CAAC;IACJ,CAAC;IAED,gBAAgB,CACd,QAAiB,EACjB,SAAkB,EAClB,UAA0B,EAC1B,QAAwB,EACxB,YAA4B,EAC5B,IAAiB,EACjB,IAAc,EACd,MAAc,EACd,IAAY,EACZ,aAAqB,EACrB,WAAmB,EACnB,WAAmB,EACnB,cAAsB;QAEtB,IAAI,CAAC,cAAc;YAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACzE,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC,QAAQ,CAAC,cAAe,CAAC,EAAE;YAChE,MAAM,IAAI,KAAK,CAAC,2BAA2B,cAAc,EAAE,CAAC,CAAC;SAC9D;QAED,MAAM,gBAAgB,GAAG,kBAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAErD,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,UAAU;YACnC,CAAC,CAAC,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;YAC5B,CAAC,CAAC,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,cAAc,GAClB,IAAI,KAAK,oBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1E,MAAM,+BAA+B,GAAG,gBAAgB;aACrD,EAAE,CAAC,cAAc,CAAC;aAClB,EAAE,CAAC,YAAY,CAAC,CAAC;QAEpB,MAAM,oBAAoB,GAAG,IAAA,oBAAY,EAAC,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjE,MAAM,QAAQ,GAAG,IAAA,iBAAS,EAAC;YACzB,IAAA,kBAAU,EAAC,IAAA,qBAAa,EAAC,IAAI,CAAC,EAAE,EAAE,CAAC;YACnC,IAAA,kBAAU,EAAC,IAAA,eAAO,EAAC,WAAW,CAAC,EAAE,EAAE,CAAC;SACrC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAkB;YAC5B,QAAQ;YACR,mDAAmD;YACnD,SAAS;YACT,UAAU;YACV,QAAQ;YACR,IAAI,CAAC,IAAI;YACT,oBAAoB,CAAC,QAAQ,EAAE;YAC/B,IAAI,CAAC,UAAU;YACf,IAAI,CAAC,UAAU;YACf,QAAQ;YACR,+BAA+B,CAAC,QAAQ,EAAE;SAC3C,CAAC;QAEF,MAAM,OAAO,GAAyB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAEvD,MAAM,OAAO,GAAG,CAAC,GAAG,MAAyC,EAAE,EAAE;YAC/D,OAAO,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAChD,uBAAgB,CAAC,8BAA8B,EAC/C,CAAC,GAAG,MAAM,CAAC,CACZ,CAAC;QACJ,CAAC,CAAC;QAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC;IACvD,CAAC;IAED,oDAAoD;IACpD,yCAAyC;IACzC,KAAK,CAAC,mBAAmB,CACvB,YAAqB,EACrB,KAAa;QAEb,MAAM,aAAa,GAAG,YAAY,CAAC,WAAW,EAAE,CAAC;QACjD,qEAAqE;QACrE,oEAAoE;QACpE,MAAM,MAAM,GAAG,CAAC,SAAoB,EAAE,QAAgB,EAAE,EAAE;YACxD,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,GAAG,IAAA,oBAAY,EAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;YACpE,MAAM,SAAS,GAAG,SAAS,CAAC,UAAU,CAAC;YACvC,OAAO,CACL,CAAC;gBACD,QAAQ,CACN,CACE,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,0BAAO,CAAC,EAAE,CAAC,CAC5D,CAAC,QAAQ,EAAE,CACb,CACF,CAAC;QACJ,CAAC,CAAC;QAEF,MAAM,WAAW,GACf,aAAa,KAAK,IAAI,CAAC,GAAG,CAAC,OAAO,IAAI,aAAa,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;QAE5E,MAAM,gBAAgB,GAAG,WAAW;YAClC,CAAC,CAAC,IAAI,CAAC,WAAW;YAClB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;gBAChC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,UAAU,CAAC;gBAC7C,CAAC,CAAC,EAAE,CAAC;QACP,IAAI,CAAC,gBAAgB,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAExC,MAAM,UAAU,GAAG,MAAM,IAAA,qCAAe,EACtC,IAAI,CAAC,SAAS,CAAC,aAAa,EAC5B,gBAAgB,EAChB,IAAI,CAAC,UAAU,EACf,QAAQ,EACR,sBAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,CACrD,CAAC;QAEF,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,OAAO,EAAE,CAAC,CAAC,UAAU;YACrB,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;YACnD,eAAe,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC;SAC/D,CAAC,CAAC,CAAC;IACN,CAAC;;AAteH,0BAueC;AA7de,0BAAkB,GAC9B,IAAA,6BAAqB,EAAC,sBAAa,CAAC,CAAC"}
@@ -8,20 +8,20 @@ export declare type PoolState = {
8
8
  };
9
9
  export declare type LitePsmData = {
10
10
  psmAddress: Address;
11
- gemJoinAddress: Address;
12
11
  gemDecimals: number;
13
12
  toll: string;
14
13
  isApproved?: boolean;
15
14
  };
16
15
  export declare type PoolConfig = {
17
16
  gem: Token;
18
- gemJoinAddress: Address;
19
17
  pocketAddress: Address;
20
18
  psmAddress: Address;
21
19
  identifier: string;
22
20
  };
23
21
  export declare type DexParams = {
24
22
  dai: Token;
23
+ usds: Token;
24
+ usdsPsmAddress: Address;
25
25
  vatAddress: Address;
26
26
  pools: PoolConfig[];
27
27
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paraswap/dex-lib",
3
- "version": "3.8.35",
3
+ "version": "3.8.36",
4
4
  "main": "build/index.js",
5
5
  "types": "build/index.d.ts",
6
6
  "repository": "https://github.com/paraswap/paraswap-dex-lib",
@@ -0,0 +1,163 @@
1
+ [
2
+ {
3
+ "inputs": [
4
+ { "internalType": "address", "name": "psm_", "type": "address" },
5
+ { "internalType": "address", "name": "usdsJoin_", "type": "address" }
6
+ ],
7
+ "stateMutability": "nonpayable",
8
+ "type": "constructor"
9
+ },
10
+ {
11
+ "inputs": [],
12
+ "name": "HALTED",
13
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
14
+ "stateMutability": "view",
15
+ "type": "function"
16
+ },
17
+ {
18
+ "inputs": [],
19
+ "name": "buf",
20
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
21
+ "stateMutability": "view",
22
+ "type": "function"
23
+ },
24
+ {
25
+ "inputs": [
26
+ { "internalType": "address", "name": "usr", "type": "address" },
27
+ { "internalType": "uint256", "name": "gemAmt", "type": "uint256" }
28
+ ],
29
+ "name": "buyGem",
30
+ "outputs": [
31
+ { "internalType": "uint256", "name": "usdsInWad", "type": "uint256" }
32
+ ],
33
+ "stateMutability": "nonpayable",
34
+ "type": "function"
35
+ },
36
+ {
37
+ "inputs": [],
38
+ "name": "dai",
39
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
40
+ "stateMutability": "view",
41
+ "type": "function"
42
+ },
43
+ {
44
+ "inputs": [],
45
+ "name": "dec",
46
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
47
+ "stateMutability": "view",
48
+ "type": "function"
49
+ },
50
+ {
51
+ "inputs": [],
52
+ "name": "gem",
53
+ "outputs": [
54
+ { "internalType": "contract GemLike", "name": "", "type": "address" }
55
+ ],
56
+ "stateMutability": "view",
57
+ "type": "function"
58
+ },
59
+ {
60
+ "inputs": [],
61
+ "name": "gemJoin",
62
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
63
+ "stateMutability": "view",
64
+ "type": "function"
65
+ },
66
+ {
67
+ "inputs": [],
68
+ "name": "ilk",
69
+ "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }],
70
+ "stateMutability": "view",
71
+ "type": "function"
72
+ },
73
+ {
74
+ "inputs": [],
75
+ "name": "live",
76
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
77
+ "stateMutability": "view",
78
+ "type": "function"
79
+ },
80
+ {
81
+ "inputs": [],
82
+ "name": "pocket",
83
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
84
+ "stateMutability": "view",
85
+ "type": "function"
86
+ },
87
+ {
88
+ "inputs": [],
89
+ "name": "psm",
90
+ "outputs": [
91
+ { "internalType": "contract PsmLike", "name": "", "type": "address" }
92
+ ],
93
+ "stateMutability": "view",
94
+ "type": "function"
95
+ },
96
+ {
97
+ "inputs": [
98
+ { "internalType": "address", "name": "usr", "type": "address" },
99
+ { "internalType": "uint256", "name": "gemAmt", "type": "uint256" }
100
+ ],
101
+ "name": "sellGem",
102
+ "outputs": [
103
+ { "internalType": "uint256", "name": "usdsOutWad", "type": "uint256" }
104
+ ],
105
+ "stateMutability": "nonpayable",
106
+ "type": "function"
107
+ },
108
+ {
109
+ "inputs": [],
110
+ "name": "tin",
111
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
112
+ "stateMutability": "view",
113
+ "type": "function"
114
+ },
115
+ {
116
+ "inputs": [],
117
+ "name": "to18ConversionFactor",
118
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
119
+ "stateMutability": "view",
120
+ "type": "function"
121
+ },
122
+ {
123
+ "inputs": [],
124
+ "name": "tout",
125
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }],
126
+ "stateMutability": "view",
127
+ "type": "function"
128
+ },
129
+ {
130
+ "inputs": [],
131
+ "name": "usds",
132
+ "outputs": [
133
+ { "internalType": "contract GemLike", "name": "", "type": "address" }
134
+ ],
135
+ "stateMutability": "view",
136
+ "type": "function"
137
+ },
138
+ {
139
+ "inputs": [],
140
+ "name": "usdsJoin",
141
+ "outputs": [
142
+ { "internalType": "contract UsdsJoinLike", "name": "", "type": "address" }
143
+ ],
144
+ "stateMutability": "view",
145
+ "type": "function"
146
+ },
147
+ {
148
+ "inputs": [],
149
+ "name": "vat",
150
+ "outputs": [
151
+ { "internalType": "contract VatLike", "name": "", "type": "address" }
152
+ ],
153
+ "stateMutability": "view",
154
+ "type": "function"
155
+ },
156
+ {
157
+ "inputs": [],
158
+ "name": "vow",
159
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
160
+ "stateMutability": "view",
161
+ "type": "function"
162
+ }
163
+ ]
@@ -10,6 +10,11 @@ export const LitePsmConfig: DexConfigMap<DexParams> = {
10
10
  address: '0x6b175474e89094c44da98b954eedeac495271d0f',
11
11
  decimals: 18,
12
12
  },
13
+ usds: {
14
+ address: '0xdc035d45d973e3ec169d2276ddab16f1e407384f',
15
+ decimals: 18,
16
+ },
17
+ usdsPsmAddress: '0xA188EEC8F81263234dA3622A406892F3D630f98c',
13
18
  vatAddress: '0x35d1b3f3d7966a1dfe207aa4514c12a259a0492b',
14
19
  pools: [
15
20
  {
@@ -17,7 +22,6 @@ export const LitePsmConfig: DexConfigMap<DexParams> = {
17
22
  address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48',
18
23
  decimals: 6,
19
24
  },
20
- gemJoinAddress: '0xf6e72db5454dd049d0788e411b06cfaf16853042', // Same as psmAddress. LitePsm does not have an external gem join.
21
25
  pocketAddress: '0x37305b1cd40574e4c5ce33f8e8306be057fd7341',
22
26
  psmAddress: '0xf6e72db5454dd049d0788e411b06cfaf16853042',
23
27
  identifier:
@@ -10,7 +10,7 @@ import { generateConfig } from '../../config';
10
10
  describe('LitePsm E2E', () => {
11
11
  const dexKey = 'LitePsm';
12
12
 
13
- describe('LitePsm MAINNET_V6', () => {
13
+ describe('LitePsm DAI', () => {
14
14
  const network = Network.MAINNET;
15
15
  const tokens = Tokens[network];
16
16
  const holders = Holders[network];
@@ -76,4 +76,71 @@ describe('LitePsm E2E', () => {
76
76
  }),
77
77
  );
78
78
  });
79
+
80
+ describe('LitePsm USDS', () => {
81
+ const network = Network.MAINNET;
82
+ const tokens = Tokens[network];
83
+ const holders = Holders[network];
84
+ const provider = new StaticJsonRpcProvider(
85
+ generateConfig(network).privateHttpProvider,
86
+ network,
87
+ );
88
+
89
+ const tokenASymbol: string = 'USDC';
90
+ const tokenBSymbol: string = 'USDS';
91
+
92
+ const tokenAAmount: string = '10000000';
93
+ const tokenBAmount: string = '10000000000000000';
94
+
95
+ const sideToContractMethods = new Map([
96
+ [
97
+ SwapSide.SELL,
98
+ [
99
+ ContractMethod.swapExactAmountIn,
100
+ ContractMethod.swapExactAmountInOutOnMakerPSM,
101
+ ],
102
+ ],
103
+ [
104
+ SwapSide.BUY,
105
+ [
106
+ ContractMethod.swapExactAmountOut,
107
+ ContractMethod.swapExactAmountInOutOnMakerPSM,
108
+ ],
109
+ ],
110
+ ]);
111
+
112
+ sideToContractMethods.forEach((contractMethods, side) =>
113
+ contractMethods.forEach((contractMethod: ContractMethod) => {
114
+ describe(`${contractMethod}`, () => {
115
+ it(`${side}:${tokenASymbol} -> ${tokenBSymbol}`, async () => {
116
+ await testE2E(
117
+ tokens[tokenASymbol],
118
+ tokens[tokenBSymbol],
119
+ holders[tokenASymbol],
120
+ side === SwapSide.SELL ? tokenAAmount : tokenBAmount,
121
+ side,
122
+ dexKey,
123
+ contractMethod,
124
+ network,
125
+ provider,
126
+ );
127
+ });
128
+
129
+ it(`${side}:${tokenBSymbol} -> ${tokenASymbol}`, async () => {
130
+ await testE2E(
131
+ tokens[tokenBSymbol],
132
+ tokens[tokenASymbol],
133
+ holders[tokenBSymbol],
134
+ side === SwapSide.SELL ? tokenBAmount : tokenAAmount,
135
+ side,
136
+ dexKey,
137
+ contractMethod,
138
+ network,
139
+ provider,
140
+ );
141
+ });
142
+ });
143
+ }),
144
+ );
145
+ });
79
146
  });
@@ -4,9 +4,7 @@ import {
4
4
  Address,
5
5
  ExchangePrices,
6
6
  PoolPrices,
7
- Log,
8
7
  AdapterExchangeParam,
9
- SimpleExchangeParam,
10
8
  PoolLiquidity,
11
9
  Logger,
12
10
  NumberAsString,
@@ -32,7 +30,8 @@ import {
32
30
  } from './types';
33
31
  import { SimpleExchange } from '../simple-exchange';
34
32
  import { LitePsmConfig } from './config';
35
- import PsmABI from '../../abi/lite-psm/psm.json';
33
+ import DaiPsmABI from '../../abi/lite-psm/psm.json';
34
+ import UsdsPsmABI from '../../abi/lite-psm/usdsPsm.json';
36
35
  import { BI_POWS } from '../../bigint-constants';
37
36
  import { SpecialDex } from '../../executor/types';
38
37
  import { hexConcat, hexZeroPad, hexlify } from '@ethersproject/bytes';
@@ -45,7 +44,8 @@ import { BigNumber } from 'ethers';
45
44
  import { LitePsmEventPool, getOnChainState } from './lite-psm-event-pool';
46
45
  import { extractReturnAmountPosition } from '../../executor/utils';
47
46
 
48
- const psmInterface = new Interface(PsmABI);
47
+ const daiPsmInterface = new Interface(DaiPsmABI);
48
+ const usdsPsmInterface = new Interface(UsdsPsmABI);
49
49
  const WAD = BI_POWS[18];
50
50
 
51
51
  const ceilDiv = (a: bigint, b: bigint) => (a + b - 1n) / b;
@@ -70,6 +70,8 @@ export class LitePsm
70
70
  dexKey: string,
71
71
  protected dexHelper: IDexHelper,
72
72
  protected dai: Token = LitePsmConfig[dexKey][network].dai,
73
+ protected usds: Token = LitePsmConfig[dexKey][network].usds,
74
+ protected usdsPsm: Address = LitePsmConfig[dexKey][network].usdsPsmAddress,
73
75
  protected vatAddress: Address = LitePsmConfig[dexKey][network].vatAddress,
74
76
  protected poolConfigs: PoolConfig[] = LitePsmConfig[dexKey][network].pools,
75
77
  ) {
@@ -123,6 +125,8 @@ export class LitePsm
123
125
  return (
124
126
  (srcAddress === this.dai.address && this.eventPools[destAddress]) ||
125
127
  (destAddress === this.dai.address && this.eventPools[srcAddress]) ||
128
+ (srcAddress === this.usds.address && this.eventPools[destAddress]) ||
129
+ (destAddress === this.usds.address && this.eventPools[srcAddress]) ||
126
130
  null
127
131
  );
128
132
  }
@@ -153,7 +157,7 @@ export class LitePsm
153
157
  }
154
158
 
155
159
  computePrices(
156
- isSrcDai: boolean,
160
+ isDestGem: boolean,
157
161
  to18ConversionFactor: bigint,
158
162
  side: SwapSide,
159
163
  amounts: bigint[],
@@ -168,7 +172,7 @@ export class LitePsm
168
172
 
169
173
  return amounts.map(a => {
170
174
  if (side === SwapSide.SELL) {
171
- if (isSrcDai) {
175
+ if (isDestGem) {
172
176
  const gemAmt18 = (a * WAD) / (WAD + poolState.tout);
173
177
  if (buyGemCheck(gemAmt18)) return gemAmt18 / to18ConversionFactor;
174
178
  } else {
@@ -177,7 +181,7 @@ export class LitePsm
177
181
  return gemAmt18 - (gemAmt18 * poolState.tin) / WAD;
178
182
  }
179
183
  } else {
180
- if (isSrcDai) {
184
+ if (isDestGem) {
181
185
  const gemAmt18 = to18ConversionFactor * a;
182
186
  if (buyGemCheck(gemAmt18))
183
187
  return gemAmt18 + (gemAmt18 * poolState.tout) / WAD;
@@ -214,33 +218,39 @@ export class LitePsm
214
218
  (side === SwapSide.SELL ? srcToken : destToken).decimals,
215
219
  );
216
220
 
217
- const isSrcDai = srcToken.address.toLowerCase() === this.dai.address;
218
- const gem = isSrcDai ? destToken : srcToken;
221
+ const srcLower = srcToken.address.toLowerCase();
222
+ const isSrcDai = srcLower === this.dai.address;
223
+ const isDaiSwap =
224
+ isSrcDai || destToken.address.toLowerCase() === this.dai.address;
225
+
226
+ const isDestGem = isSrcDai || srcLower === this.usds.address;
227
+
228
+ const gem = isDestGem ? destToken : srcToken;
219
229
  const toll =
220
- (side === SwapSide.SELL && isSrcDai) ||
221
- (side === SwapSide.BUY && !isSrcDai)
230
+ (side === SwapSide.SELL && isDestGem) ||
231
+ (side === SwapSide.BUY && !isDestGem)
222
232
  ? poolState.tout
223
233
  : poolState.tin;
224
234
 
225
235
  const [unit, ...prices] = this.computePrices(
226
- isSrcDai,
236
+ isDestGem,
227
237
  eventPool.to18ConversionFactor,
228
238
  side,
229
239
  [unitVolume, ...amounts],
230
240
  poolState,
231
241
  );
232
242
 
243
+ const psm = isDaiSwap ? eventPool.poolConfig.psmAddress : this.usdsPsm;
233
244
  return [
234
245
  {
235
246
  prices,
236
247
  unit,
237
248
  data: {
238
249
  toll: toll.toString(),
239
- psmAddress: eventPool.poolConfig.psmAddress,
240
- gemJoinAddress: eventPool.poolConfig.gemJoinAddress,
250
+ psmAddress: psm,
241
251
  gemDecimals: gem.decimals,
242
252
  },
243
- poolAddresses: [eventPool.poolConfig.psmAddress],
253
+ poolAddresses: [psm],
244
254
  exchange: this.dexKey,
245
255
  gasCost: 50000,
246
256
  poolIdentifier,
@@ -270,10 +280,12 @@ export class LitePsm
270
280
  data: LitePsmData,
271
281
  side: SwapSide,
272
282
  ): { isGemSell: boolean; gemAmount: string } {
273
- const isSrcDai = srcToken.toLowerCase() === this.dai.address;
283
+ const isDestGem =
284
+ srcToken.toLowerCase() === this.dai.address ||
285
+ srcToken.toLowerCase() === this.usds.address;
274
286
  const to18ConversionFactor = getBigIntPow(18 - data.gemDecimals);
275
287
  if (side === SwapSide.SELL) {
276
- if (isSrcDai) {
288
+ if (isDestGem) {
277
289
  const gemAmt18 = (BigInt(srcAmount) * WAD) / (WAD + BigInt(data.toll));
278
290
  return {
279
291
  isGemSell: false,
@@ -283,7 +295,7 @@ export class LitePsm
283
295
  return { isGemSell: true, gemAmount: srcAmount };
284
296
  }
285
297
  } else {
286
- if (isSrcDai) {
298
+ if (isDestGem) {
287
299
  return { isGemSell: false, gemAmount: destAmount };
288
300
  } else {
289
301
  const gemAmt = ceilDiv(
@@ -338,9 +350,7 @@ export class LitePsm
338
350
  isApproved = await this.dexHelper.augustusApprovals.hasApproval(
339
351
  options.executionContractAddress,
340
352
  srcToken.address,
341
- srcToken.address.toLowerCase() === this.dai.address.toLowerCase()
342
- ? optimalSwapExchange.data.psmAddress
343
- : optimalSwapExchange.data.gemJoinAddress,
353
+ optimalSwapExchange.data.psmAddress,
344
354
  );
345
355
  }
346
356
 
@@ -370,10 +380,16 @@ export class LitePsm
370
380
  side,
371
381
  );
372
382
 
373
- let exchangeData = psmInterface.encodeFunctionData(
374
- isGemSell ? 'sellGem' : 'buyGem',
375
- [recipient, gemAmount],
376
- );
383
+ const isDaiSwap =
384
+ destToken.toLowerCase() === this.dai.address ||
385
+ srcToken.toLowerCase() === this.dai.address;
386
+
387
+ let exchangeData = (
388
+ isDaiSwap ? daiPsmInterface : usdsPsmInterface
389
+ ).encodeFunctionData(isGemSell ? 'sellGem' : 'buyGem', [
390
+ recipient,
391
+ gemAmount,
392
+ ]);
377
393
 
378
394
  // append toll and to18ConversionFactor & set specialDexFlag = SWAP_ON_MAKER_PSM to
379
395
  // - `buyGem` on Ex1 & Ex2
@@ -397,10 +413,14 @@ export class LitePsm
397
413
  exchangeData,
398
414
  targetExchange: data.psmAddress,
399
415
  specialDexFlag,
400
- spender: isGemSell ? data.gemJoinAddress : data.psmAddress,
416
+ spender: data.psmAddress, // psm is the join for both dai and usds
401
417
  returnAmountPos:
402
418
  side === SwapSide.SELL && isGemSell
403
- ? extractReturnAmountPosition(psmInterface, 'sellGem', 'daiOutWad')
419
+ ? extractReturnAmountPosition(
420
+ isDaiSwap ? daiPsmInterface : usdsPsmInterface,
421
+ 'sellGem',
422
+ isDaiSwap ? 'daiOutWad' : 'usdsOutWad',
423
+ )
404
424
  : undefined,
405
425
  };
406
426
  }
@@ -453,7 +473,7 @@ export class LitePsm
453
473
  data.toll,
454
474
  to18ConversionFactor.toString(),
455
475
  data.psmAddress,
456
- data.gemJoinAddress,
476
+ data.psmAddress,
457
477
  metadata,
458
478
  beneficiaryDirectionApproveFlag.toString(),
459
479
  ];
@@ -492,9 +512,10 @@ export class LitePsm
492
512
  );
493
513
  };
494
514
 
495
- const isDai = _tokenAddress === this.dai.address;
515
+ const isDaiOrUsds =
516
+ _tokenAddress === this.dai.address || _tokenAddress === this.usds.address;
496
517
 
497
- const validPoolConfigs = isDai
518
+ const validPoolConfigs = isDaiOrUsds
498
519
  ? this.poolConfigs
499
520
  : this.eventPools[_tokenAddress]
500
521
  ? [this.eventPools[_tokenAddress].poolConfig]
@@ -513,7 +534,7 @@ export class LitePsm
513
534
  exchange: this.dexKey,
514
535
  address: p.psmAddress,
515
536
  liquidityUSD: minLiq(poolStates[i], p.gem.decimals),
516
- connectorTokens: [isDai ? p.gem : this.dai],
537
+ connectorTokens: isDaiOrUsds ? [p.gem] : [this.dai, this.usds],
517
538
  }));
518
539
  }
519
540
  }
@@ -10,7 +10,6 @@ export type PoolState = {
10
10
 
11
11
  export type LitePsmData = {
12
12
  psmAddress: Address;
13
- gemJoinAddress: Address;
14
13
  gemDecimals: number;
15
14
  toll: string;
16
15
  isApproved?: boolean;
@@ -18,7 +17,6 @@ export type LitePsmData = {
18
17
 
19
18
  export type PoolConfig = {
20
19
  gem: Token;
21
- gemJoinAddress: Address; // dai liquidity
22
20
  pocketAddress: Address; // gem liquidity
23
21
  psmAddress: Address;
24
22
  identifier: string; // bytes32 of pool identifier (Eg. bytes32("PSM-USDC-A"))
@@ -26,6 +24,8 @@ export type PoolConfig = {
26
24
 
27
25
  export type DexParams = {
28
26
  dai: Token;
27
+ usds: Token;
28
+ usdsPsmAddress: Address;
29
29
  vatAddress: Address;
30
30
  pools: PoolConfig[];
31
31
  };
@@ -38,6 +38,7 @@ export type LitePsmParams = [
38
38
  toll: NumberAsString,
39
39
  to18ConversionFactor: NumberAsString,
40
40
  exchange: Address,
41
+ // psm (exchange) is the join for both dai and usds
41
42
  gemJoinAddress: Address,
42
43
  metadata: string,
43
44
  beneficiaryDirectionApproveFlag: NumberAsString,
@@ -1500,7 +1500,7 @@ export const Holders: {
1500
1500
  [network: number]: { [tokenAddress: string]: Address };
1501
1501
  } = {
1502
1502
  [Network.MAINNET]: {
1503
- USDS: '0xE99d0ba6966c74BF78bF394BD29DCA154c6BC217',
1503
+ USDS: '0xB1796E8f1eEcF23027c1E3C00fE303629A189d10',
1504
1504
  SKY: '0x0ddda327A6614130CCb20bc0097313A282176A01',
1505
1505
  MKR: '0xe9aAA7A9DDc0877626C1779AbC29993aD89A6c1f',
1506
1506
  // Idle tokens