UNPKG

@collabland/staking-contracts

Version:
74 lines 2.96 kB
// Copyright Abridged, Inc. 2022. All Rights Reserved. // Node module: @collabland/staking-contracts // This file is licensed under the MIT License. // License text available at https://opensource.org/licenses/MIT import { __decorate } from "tslib"; import { BindingScope, extensionFor, injectable } from '@loopback/core'; import { Contract, Provider } from 'ethcall'; import { BigNumber } from 'ethers'; import { STAKING_ADAPTERS_EXTENSION_POINT } from '../keys.js'; import { BaseStakingContractAdapter } from '../staking.js'; import { E4cRangerStaking__factory } from '../types/factories/E4cRangerStaking__factory.js'; class E4CStakingContractAdapter extends BaseStakingContractAdapter { async init() { if (this.ecProvider == null) { this.contract = new Contract(this.contractAddress, E4cRangerStaking__factory.abi); this.ecProvider = new Provider(this.chainId, this.provider); } } async getStakedTokenIds(owner) { await this.init(); const items = new Array(650); for (let i = 0; i < 650; i++) { items[i] = i + 1; } const owners = await this.ecProvider.all(items.map(i => this.contract.originalOwner(i))); const tokens = []; for (let i = 0; i < owners.length; i++) { if (owners[i] === owner) tokens.push(BigNumber.from(i + 1)); } return tokens; } async getStakedTokenBalance(owner) { const ids = await this.getStakedTokenIds(owner); return BigNumber.from(ids.length); } } let E4CGoldStakingContractAdapter = class E4CGoldStakingContractAdapter extends E4CStakingContractAdapter { constructor() { super(...arguments); this.contractName = 'EC4Gold'; this.contractAddress = '0x9c18beA91AE053397918410311dbB89295baE18b'; this.supportedAssets = [ { asset: 'ERC721:0xbA265B93519E6473F34F46ee35F4B23970F41a3f', }, ]; } }; E4CGoldStakingContractAdapter = __decorate([ injectable({ scope: BindingScope.SINGLETON, }, extensionFor(STAKING_ADAPTERS_EXTENSION_POINT)) ], E4CGoldStakingContractAdapter); export { E4CGoldStakingContractAdapter }; let E4CRangerStakingContractAdapter = class E4CRangerStakingContractAdapter extends E4CStakingContractAdapter { constructor() { super(...arguments); this.contractName = 'EC4Ranger'; this.contractAddress = '0xadf4343f4e8eb6faf88c06a97ed6e0c229566e1d'; this.supportedAssets = [ { asset: 'ERC721:0xC17Aa29c43e4cE0c349749C8986a03B2734813fa', }, ]; } }; E4CRangerStakingContractAdapter = __decorate([ injectable({ scope: BindingScope.SINGLETON, }, extensionFor(STAKING_ADAPTERS_EXTENSION_POINT)) ], E4CRangerStakingContractAdapter); export { E4CRangerStakingContractAdapter }; //# sourceMappingURL=e4c-ranger-staking.adapter.js.map