@collabland/staking-contracts
Version:
Staking contracts supported by Collab.Land
74 lines • 2.96 kB
JavaScript
// 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