@sovryn-zero/lib-ethers
Version:
Sovryn Zero SDK Ethers-based implementation
86 lines • 5.86 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports._connectToContracts = exports._priceFeedIsTestnet = exports._LiquityContract = void 0;
const contracts_1 = require("@ethersproject/contracts");
const ActivePool_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/ActivePool.json"));
const BorrowerOperations_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/BorrowerOperations.json"));
const TroveManager_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/TroveManager.json"));
const TroveManagerRedeemOps_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/TroveManagerRedeemOps.json"));
const ZUSDToken_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/ZUSDToken.json"));
const IERC20_json_1 = __importDefault(require("@sovryn-zero/contracts/artifacts/contracts/Dependencies/IERC20.sol/IERC20.json"));
const CollSurplusPool_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/CollSurplusPool.json"));
const CommunityIssuance_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/CommunityIssuance.json"));
const DefaultPool_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/DefaultPool.json"));
const ZEROToken_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/ZEROToken.json"));
const HintHelpers_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/HintHelpers.json"));
const ZEROStaking_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/ZEROStaking.json"));
const MultiTroveGetter_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/MultiTroveGetter.json"));
const PriceFeed_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/PriceFeed.json"));
const PriceFeedTestnet_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynTestnet/PriceFeedTestnet.json"));
const SortedTroves_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/SortedTroves.json"));
const StabilityPool_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/StabilityPool.json"));
const GasPool_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/GasPool.json"));
const LiquityBaseParams_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/LiquityBaseParams.json"));
const FeeDistributor_json_1 = __importDefault(require("@sovryn-zero/contracts/deployment/rskSovrynMainnet/FeeDistributor.json"));
const buildEstimatedFunctions = (estimateFunctions, functions) => Object.fromEntries(Object.keys(estimateFunctions).map(functionName => [
functionName,
async (overrides, adjustEstimate, ...args) => {
if (overrides.gasLimit === undefined) {
const estimatedGas = await estimateFunctions[functionName](...args, overrides);
overrides = {
...overrides,
gasLimit: adjustEstimate(estimatedGas).add(10000),
};
}
return functions[functionName](...args, overrides);
}
]));
class _LiquityContract extends contracts_1.Contract {
constructor(addressOrName, contractInterface, signerOrProvider) {
super(addressOrName, contractInterface, signerOrProvider);
// this.estimateAndCall = buildEstimatedFunctions(this.estimateGas, this);
this.estimateAndPopulate = buildEstimatedFunctions(this.estimateGas, this.populateTransaction);
}
extractEvents(logs, name) {
return logs
.filter(log => log.address === this.address)
.map(log => this.interface.parseLog(log))
.filter(e => e.name === name);
}
}
exports._LiquityContract = _LiquityContract;
/** @internal */
const _priceFeedIsTestnet = (priceFeed) => "setPrice" in priceFeed;
exports._priceFeedIsTestnet = _priceFeedIsTestnet;
const getAbi = (priceFeedIsTestnet) => ({
activePool: ActivePool_json_1.default.abi,
borrowerOperations: BorrowerOperations_json_1.default.abi,
troveManager: TroveManager_json_1.default.abi,
troveManagerRedeemOps: TroveManagerRedeemOps_json_1.default.abi,
zusdToken: ZUSDToken_json_1.default.abi,
nueToken: IERC20_json_1.default.abi,
communityIssuance: CommunityIssuance_json_1.default.abi,
defaultPool: DefaultPool_json_1.default.abi,
zeroToken: ZEROToken_json_1.default.abi,
hintHelpers: HintHelpers_json_1.default.abi,
zeroStaking: ZEROStaking_json_1.default.abi,
multiTroveGetter: MultiTroveGetter_json_1.default.abi,
priceFeed: priceFeedIsTestnet ? PriceFeedTestnet_json_1.default.abi : PriceFeed_json_1.default.abi,
sortedTroves: SortedTroves_json_1.default.abi,
stabilityPool: StabilityPool_json_1.default.abi,
gasPool: GasPool_json_1.default.abi,
collSurplusPool: CollSurplusPool_json_1.default.abi,
liquityBaseParams: LiquityBaseParams_json_1.default.abi,
feeDistributor: FeeDistributor_json_1.default.abi,
});
const mapLiquityContracts = (contracts, f) => Object.fromEntries(Object.entries(contracts).map(([key, t]) => [key, f(t, key)]));
/** @internal */
const _connectToContracts = (signerOrProvider, { addresses, _priceFeedIsTestnet }) => {
const abi = getAbi(_priceFeedIsTestnet);
return mapLiquityContracts(addresses, (address, key) => new _LiquityContract(address, abi[key], signerOrProvider));
};
exports._connectToContracts = _connectToContracts;
//# sourceMappingURL=contracts.js.map