@curvefi/llamalend-api 1.0.8 → 1.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/llamalend.js
CHANGED
|
@@ -537,71 +537,73 @@ class Llamalend {
|
|
|
537
537
|
}
|
|
538
538
|
// TODO Put it in a separate method
|
|
539
539
|
// Fetch new llammas
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
const res = (yield this.multicallProvider.all(calls)).map((c) => c.toLowerCase());
|
|
550
|
-
const collaterals = res.filter((a, i) => i % 3 == 0);
|
|
551
|
-
const amms = res.filter((a, i) => i % 3 == 1);
|
|
552
|
-
const controllers = res.filter((a, i) => i % 3 == 2);
|
|
553
|
-
if (collaterals.length > 0) {
|
|
554
|
-
for (const collateral of collaterals)
|
|
555
|
-
this.setContract(collateral, ERC20ABI);
|
|
556
|
-
calls = [];
|
|
557
|
-
for (const collateral of collaterals) {
|
|
558
|
-
calls.push(this.contracts[collateral].multicallContract.symbol(), this.contracts[collateral].multicallContract.decimals());
|
|
559
|
-
}
|
|
560
|
-
const res = (yield this.multicallProvider.all(calls)).map((x) => {
|
|
561
|
-
if (typeof x === "string")
|
|
562
|
-
return x.toLowerCase();
|
|
563
|
-
return x;
|
|
564
|
-
});
|
|
565
|
-
calls = [];
|
|
566
|
-
for (const amm of amms) {
|
|
567
|
-
this.setContract(amm, llammaABI);
|
|
568
|
-
calls.push(this.contracts[amm].multicallContract.A());
|
|
540
|
+
if (this.chainId === 1) {
|
|
541
|
+
this.setContract(this.constants.FACTORY, FactoryABI);
|
|
542
|
+
const factoryContract = this.contracts[this.constants.FACTORY].contract;
|
|
543
|
+
const factoryMulticallContract = this.contracts[this.constants.FACTORY].multicallContract;
|
|
544
|
+
const N1 = Object.keys(this.constants.LLAMMAS).length;
|
|
545
|
+
const N2 = yield factoryContract.n_collaterals(this.constantOptions);
|
|
546
|
+
let calls = [];
|
|
547
|
+
for (let i = N1; i < N2; i++) {
|
|
548
|
+
calls.push(factoryMulticallContract.collaterals(i), factoryMulticallContract.amms(i), factoryMulticallContract.controllers(i));
|
|
569
549
|
}
|
|
570
|
-
const
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
const
|
|
576
|
-
|
|
577
|
-
|
|
550
|
+
const res = (yield this.multicallProvider.all(calls)).map((c) => c.toLowerCase());
|
|
551
|
+
const collaterals = res.filter((a, i) => i % 3 == 0);
|
|
552
|
+
const amms = res.filter((a, i) => i % 3 == 1);
|
|
553
|
+
const controllers = res.filter((a, i) => i % 3 == 2);
|
|
554
|
+
if (collaterals.length > 0) {
|
|
555
|
+
for (const collateral of collaterals)
|
|
556
|
+
this.setContract(collateral, ERC20ABI);
|
|
557
|
+
calls = [];
|
|
558
|
+
for (const collateral of collaterals) {
|
|
559
|
+
calls.push(this.contracts[collateral].multicallContract.symbol(), this.contracts[collateral].multicallContract.decimals());
|
|
578
560
|
}
|
|
579
|
-
|
|
561
|
+
const res = (yield this.multicallProvider.all(calls)).map((x) => {
|
|
562
|
+
if (typeof x === "string")
|
|
563
|
+
return x.toLowerCase();
|
|
564
|
+
return x;
|
|
565
|
+
});
|
|
566
|
+
calls = [];
|
|
567
|
+
for (const amm of amms) {
|
|
568
|
+
this.setContract(amm, llammaABI);
|
|
569
|
+
calls.push(this.contracts[amm].multicallContract.A());
|
|
570
|
+
}
|
|
571
|
+
const AParams = (yield this.multicallProvider.all(calls)).map((x) => {
|
|
572
|
+
return Number(x);
|
|
573
|
+
});
|
|
574
|
+
for (let i = 0; i < collaterals.length; i++) {
|
|
575
|
+
const is_eth = collaterals[i] === this.constants.WETH;
|
|
576
|
+
const [collateral_symbol, collateral_decimals] = res.splice(0, 2);
|
|
577
|
+
if (i >= collaterals.length - 3) {
|
|
578
|
+
this.setContract(controllers[i], controllerV2ABI);
|
|
579
|
+
}
|
|
580
|
+
else {
|
|
581
|
+
this.setContract(controllers[i], controllerABI);
|
|
582
|
+
}
|
|
580
583
|
this.setContract(controllers[i], controllerABI);
|
|
584
|
+
const monetary_policy_address = (yield this.contracts[controllers[i]].contract.monetary_policy(this.constantOptions)).toLowerCase();
|
|
585
|
+
this.setContract(monetary_policy_address, MonetaryPolicy2ABI);
|
|
586
|
+
const _llammaId = is_eth ? "eth" : collateral_symbol.toLowerCase();
|
|
587
|
+
let llammaId = _llammaId;
|
|
588
|
+
let j = 2;
|
|
589
|
+
while (llammaId in this.constants.LLAMMAS)
|
|
590
|
+
llammaId = _llammaId + j++;
|
|
591
|
+
this.constants.LLAMMAS[llammaId] = {
|
|
592
|
+
amm_address: amms[i],
|
|
593
|
+
controller_address: controllers[i],
|
|
594
|
+
monetary_policy_address,
|
|
595
|
+
collateral_address: is_eth ? "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" : collaterals[i],
|
|
596
|
+
leverage_zap: "0x0000000000000000000000000000000000000000",
|
|
597
|
+
deleverage_zap: "0x0000000000000000000000000000000000000000",
|
|
598
|
+
collateral_symbol: is_eth ? "ETH" : collateral_symbol,
|
|
599
|
+
collateral_decimals,
|
|
600
|
+
min_bands: 4,
|
|
601
|
+
max_bands: 50,
|
|
602
|
+
default_bands: 10,
|
|
603
|
+
A: AParams[i],
|
|
604
|
+
monetary_policy_abi: MonetaryPolicy2ABI,
|
|
605
|
+
};
|
|
581
606
|
}
|
|
582
|
-
this.setContract(controllers[i], controllerABI);
|
|
583
|
-
const monetary_policy_address = (yield this.contracts[controllers[i]].contract.monetary_policy(this.constantOptions)).toLowerCase();
|
|
584
|
-
this.setContract(monetary_policy_address, MonetaryPolicy2ABI);
|
|
585
|
-
const _llammaId = is_eth ? "eth" : collateral_symbol.toLowerCase();
|
|
586
|
-
let llammaId = _llammaId;
|
|
587
|
-
let j = 2;
|
|
588
|
-
while (llammaId in this.constants.LLAMMAS)
|
|
589
|
-
llammaId = _llammaId + j++;
|
|
590
|
-
this.constants.LLAMMAS[llammaId] = {
|
|
591
|
-
amm_address: amms[i],
|
|
592
|
-
controller_address: controllers[i],
|
|
593
|
-
monetary_policy_address,
|
|
594
|
-
collateral_address: is_eth ? "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" : collaterals[i],
|
|
595
|
-
leverage_zap: "0x0000000000000000000000000000000000000000",
|
|
596
|
-
deleverage_zap: "0x0000000000000000000000000000000000000000",
|
|
597
|
-
collateral_symbol: is_eth ? "ETH" : collateral_symbol,
|
|
598
|
-
collateral_decimals,
|
|
599
|
-
min_bands: 4,
|
|
600
|
-
max_bands: 50,
|
|
601
|
-
default_bands: 10,
|
|
602
|
-
A: AParams[i],
|
|
603
|
-
monetary_policy_abi: MonetaryPolicy2ABI,
|
|
604
|
-
};
|
|
605
607
|
}
|
|
606
608
|
}
|
|
607
609
|
this.constants.DECIMALS = extractDecimals(this.constants.LLAMMAS);
|
|
@@ -245,10 +245,10 @@ export class MintMarketTemplate {
|
|
|
245
245
|
this.deleverageZap = llammaData.deleverage_zap;
|
|
246
246
|
this.healthCalculator = llammaData.health_calculator_zap;
|
|
247
247
|
this.collateralSymbol = llammaData.collateral_symbol;
|
|
248
|
-
this.collateralDecimals = llammaData.collateral_decimals;
|
|
248
|
+
this.collateralDecimals = Number(llammaData.collateral_decimals);
|
|
249
249
|
this.coins = ["crvUSD", llammaData.collateral_symbol];
|
|
250
250
|
this.coinAddresses = [llamalend.crvUsdAddress, llammaData.collateral_address];
|
|
251
|
-
this.coinDecimals = [18, llammaData.collateral_decimals];
|
|
251
|
+
this.coinDecimals = [18, Number(llammaData.collateral_decimals)];
|
|
252
252
|
this.minBands = llammaData.min_bands;
|
|
253
253
|
this.maxBands = llammaData.max_bands;
|
|
254
254
|
this.defaultBands = llammaData.default_bands;
|
|
@@ -377,7 +377,7 @@ export class MintMarketTemplate {
|
|
|
377
377
|
const _i = i - min_band;
|
|
378
378
|
let collateral = formatUnits(_bands[(2 * _i) + 1]);
|
|
379
379
|
collateral = collateral.split(".")[0] + "." +
|
|
380
|
-
(collateral.split(".")[1] || "0").slice(0, this.
|
|
380
|
+
(collateral.split(".")[1] || "0").slice(0, this.coinDecimals[1]);
|
|
381
381
|
bands[i] = {
|
|
382
382
|
stablecoin: formatUnits(_bands[2 * _i]),
|
|
383
383
|
collateral,
|
package/package.json
CHANGED
package/src/llamalend.ts
CHANGED
|
@@ -395,84 +395,86 @@ class Llamalend implements ILlamalend {
|
|
|
395
395
|
|
|
396
396
|
// TODO Put it in a separate method
|
|
397
397
|
// Fetch new llammas
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
factoryMulticallContract.collaterals(i),
|
|
408
|
-
factoryMulticallContract.amms(i),
|
|
409
|
-
factoryMulticallContract.controllers(i)
|
|
410
|
-
);
|
|
411
|
-
}
|
|
412
|
-
const res: string[] = (await this.multicallProvider.all(calls) as string[]).map((c) => c.toLowerCase());
|
|
413
|
-
const collaterals = res.filter((a, i) => i % 3 == 0) as string[];
|
|
414
|
-
const amms = res.filter((a, i) => i % 3 == 1) as string[];
|
|
415
|
-
const controllers = res.filter((a, i) => i % 3 == 2) as string[];
|
|
416
|
-
|
|
417
|
-
if (collaterals.length > 0) {
|
|
418
|
-
for (const collateral of collaterals) this.setContract(collateral, ERC20ABI);
|
|
419
|
-
|
|
420
|
-
calls = [];
|
|
421
|
-
for (const collateral of collaterals) {
|
|
398
|
+
if(this.chainId === 1) {
|
|
399
|
+
this.setContract(this.constants.FACTORY, FactoryABI);
|
|
400
|
+
const factoryContract = this.contracts[this.constants.FACTORY].contract;
|
|
401
|
+
const factoryMulticallContract = this.contracts[this.constants.FACTORY].multicallContract;
|
|
402
|
+
|
|
403
|
+
const N1 = Object.keys(this.constants.LLAMMAS).length;
|
|
404
|
+
const N2 = await factoryContract.n_collaterals(this.constantOptions);
|
|
405
|
+
let calls = [];
|
|
406
|
+
for (let i = N1; i < N2; i++) {
|
|
422
407
|
calls.push(
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
408
|
+
factoryMulticallContract.collaterals(i),
|
|
409
|
+
factoryMulticallContract.amms(i),
|
|
410
|
+
factoryMulticallContract.controllers(i)
|
|
411
|
+
);
|
|
426
412
|
}
|
|
427
|
-
const res = (await this.multicallProvider.all(calls)).map((
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
413
|
+
const res: string[] = (await this.multicallProvider.all(calls) as string[]).map((c) => c.toLowerCase());
|
|
414
|
+
const collaterals = res.filter((a, i) => i % 3 == 0) as string[];
|
|
415
|
+
const amms = res.filter((a, i) => i % 3 == 1) as string[];
|
|
416
|
+
const controllers = res.filter((a, i) => i % 3 == 2) as string[];
|
|
417
|
+
|
|
418
|
+
if (collaterals.length > 0) {
|
|
419
|
+
for (const collateral of collaterals) this.setContract(collateral, ERC20ABI);
|
|
420
|
+
|
|
421
|
+
calls = [];
|
|
422
|
+
for (const collateral of collaterals) {
|
|
423
|
+
calls.push(
|
|
424
|
+
this.contracts[collateral].multicallContract.symbol(),
|
|
425
|
+
this.contracts[collateral].multicallContract.decimals()
|
|
426
|
+
)
|
|
427
|
+
}
|
|
428
|
+
const res = (await this.multicallProvider.all(calls)).map((x) => {
|
|
429
|
+
if (typeof x === "string") return x.toLowerCase();
|
|
430
|
+
return x;
|
|
431
|
+
});
|
|
431
432
|
|
|
432
|
-
|
|
433
|
+
calls = [];
|
|
433
434
|
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
435
|
+
for(const amm of amms) {
|
|
436
|
+
this.setContract(amm, llammaABI);
|
|
437
|
+
calls.push(
|
|
438
|
+
this.contracts[amm].multicallContract.A()
|
|
439
|
+
)
|
|
440
|
+
}
|
|
440
441
|
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
442
|
+
const AParams = (await this.multicallProvider.all(calls)).map((x) => {
|
|
443
|
+
return Number(x)
|
|
444
|
+
});
|
|
444
445
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
446
|
+
for (let i = 0; i < collaterals.length; i++) {
|
|
447
|
+
const is_eth = collaterals[i] === this.constants.WETH;
|
|
448
|
+
const [collateral_symbol, collateral_decimals] = res.splice(0, 2) as [string, number];
|
|
448
449
|
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
450
|
+
if (i >= collaterals.length - 3) {
|
|
451
|
+
this.setContract(controllers[i], controllerV2ABI);
|
|
452
|
+
} else {
|
|
453
|
+
this.setContract(controllers[i], controllerABI);
|
|
454
|
+
}
|
|
454
455
|
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
456
|
+
this.setContract(controllers[i], controllerABI);
|
|
457
|
+
const monetary_policy_address = (await this.contracts[controllers[i]].contract.monetary_policy(this.constantOptions)).toLowerCase();
|
|
458
|
+
this.setContract(monetary_policy_address, MonetaryPolicy2ABI);
|
|
459
|
+
const _llammaId: string = is_eth ? "eth" : collateral_symbol.toLowerCase();
|
|
460
|
+
let llammaId = _llammaId
|
|
461
|
+
let j = 2;
|
|
462
|
+
while (llammaId in this.constants.LLAMMAS) llammaId = _llammaId + j++;
|
|
463
|
+
this.constants.LLAMMAS[llammaId] = {
|
|
464
|
+
amm_address: amms[i],
|
|
465
|
+
controller_address: controllers[i],
|
|
466
|
+
monetary_policy_address,
|
|
467
|
+
collateral_address: is_eth ? "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee" : collaterals[i],
|
|
468
|
+
leverage_zap: "0x0000000000000000000000000000000000000000",
|
|
469
|
+
deleverage_zap: "0x0000000000000000000000000000000000000000",
|
|
470
|
+
collateral_symbol: is_eth ? "ETH" : collateral_symbol,
|
|
471
|
+
collateral_decimals,
|
|
472
|
+
min_bands: 4,
|
|
473
|
+
max_bands: 50,
|
|
474
|
+
default_bands: 10,
|
|
475
|
+
A: AParams[i],
|
|
476
|
+
monetary_policy_abi: MonetaryPolicy2ABI,
|
|
477
|
+
}
|
|
476
478
|
}
|
|
477
479
|
}
|
|
478
480
|
}
|
|
@@ -129,10 +129,10 @@ export class MintMarketTemplate {
|
|
|
129
129
|
this.deleverageZap = llammaData.deleverage_zap;
|
|
130
130
|
this.healthCalculator = llammaData.health_calculator_zap;
|
|
131
131
|
this.collateralSymbol = llammaData.collateral_symbol;
|
|
132
|
-
this.collateralDecimals = llammaData.collateral_decimals;
|
|
132
|
+
this.collateralDecimals = Number(llammaData.collateral_decimals);
|
|
133
133
|
this.coins = ["crvUSD", llammaData.collateral_symbol];
|
|
134
134
|
this.coinAddresses = [llamalend.crvUsdAddress, llammaData.collateral_address];
|
|
135
|
-
this.coinDecimals = [18, llammaData.collateral_decimals];
|
|
135
|
+
this.coinDecimals = [18, Number(llammaData.collateral_decimals)];
|
|
136
136
|
this.minBands = llammaData.min_bands;
|
|
137
137
|
this.maxBands = llammaData.max_bands;
|
|
138
138
|
this.defaultBands = llammaData.default_bands;
|
|
@@ -324,7 +324,7 @@ export class MintMarketTemplate {
|
|
|
324
324
|
const _i = i - min_band
|
|
325
325
|
let collateral = formatUnits(_bands[(2 * _i) + 1]);
|
|
326
326
|
collateral = collateral.split(".")[0] + "." +
|
|
327
|
-
(collateral.split(".")[1] || "0").slice(0, this.
|
|
327
|
+
(collateral.split(".")[1] || "0").slice(0, this.coinDecimals[1]);
|
|
328
328
|
bands[i] = {
|
|
329
329
|
stablecoin: formatUnits(_bands[2 * _i]),
|
|
330
330
|
collateral,
|