UNPKG

@collabland/staking-contracts

Version:
60 lines 2.44 kB
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