@collabland/staking-contracts
Version:
Staking contracts supported by Collab.Land
60 lines • 2.44 kB
JavaScript
import { __decorate, __metadata } from "tslib";
import { BindingScope, extensionFor, injectable } from '@loopback/core';
import { BigNumber } from 'ethers';
import { STAKING_ADAPTERS_EXTENSION_POINT } from '../keys.js';
import { BaseStakingContractAdapter } from '../staking.js';
import { PlanetxStakingV1__factory } from '../types/factories/PlanetxStakingV1__factory.js';
var AssetNames;
(function (AssetNames) {
AssetNames["X_DROIDS"] = "X-Droids";
AssetNames["X_KEYS"] = "X-Keys";
})(AssetNames || (AssetNames = {}));
let PlanetXStakingV1ContractAdapter = class PlanetXStakingV1ContractAdapter extends BaseStakingContractAdapter {
constructor() {
super();
this.contractName = 'PlanetXStakingV1';
/**
* The contract address
*/
this.contractAddress = '0x8005e7626a079e07F16CC59c01e1Be6Cb54d1d24';
/**
* Assets that can be staked to this contract
*/
this.supportedAssets = [
{
name: AssetNames.X_DROIDS,
asset: 'ERC721:0x72C916aA1d33aa2b9fCf7a7A146d22EFD22cdDE8',
},
{
asset: 'ERC721:0xbcbba981bff1e9530cbca0f40f67aa85f8944038',
name: AssetNames.X_KEYS,
},
];
this.contract = PlanetxStakingV1__factory.connect(this.contractAddress, this.provider);
}
/**
* Get staked token ids for the given owner
* @param owner - Owner address
* @returns
*/
async getStakedTokenIds(owner, assetName) {
assetName = assetName ?? AssetNames.X_DROIDS;
const tokenIds = await this.contract['getStakedTokens(address,address)'](owner, this.supportedAssets.find(a => a.name === assetName).asset.split(':')[1]);
return tokenIds;
}
async getStakedTokenBalance(owner, assetName) {
assetName = assetName ?? AssetNames.X_DROIDS;
const ids = await this.getStakedTokenIds(owner, assetName);
return BigNumber.from(ids.length);
}
};
PlanetXStakingV1ContractAdapter = __decorate([
injectable({
scope: BindingScope.SINGLETON, // Mark the adapter as a singleton
},
// Mark it as an extension to staking contracts service
extensionFor(STAKING_ADAPTERS_EXTENSION_POINT)),
__metadata("design:paramtypes", [])
], PlanetXStakingV1ContractAdapter);
export { PlanetXStakingV1ContractAdapter };
//# sourceMappingURL=planetx.v1.adapter.js.map