UNPKG

@collabland/staking-contracts

Version:
67 lines 2.49 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 { getEnvVar } from '@collabland/common'; import { BindingScope, extensionFor, injectable } from '@loopback/core'; import { BigNumber } from 'ethers'; import { gql, request } from 'graphql-request'; import { STAKING_ADAPTERS_EXTENSION_POINT } from '../keys.js'; import { BaseStakingContractAdapter } from '../staking.js'; // graphql query const query = gql ` query fetchStakedNFTs($id: ID!) { staker(id: $id) { stakedNfts(first: 1000) { id } } } `; let AngelBlockStakingContractAdapter = class AngelBlockStakingContractAdapter extends BaseStakingContractAdapter { constructor() { super(...arguments); /** * The contract address */ this.contractAddress = '0xa95f94b920b1a49b655019265715f026b064bc86'; /** * Assets that can be staked to this contract */ this.supportedAssets = [ { asset: 'ERC721:0x459ea67815b4720e55ec7dfd93687c9d2924eb79', }, ]; } /** * Get staked token ids for the given owner * @param owner - Owner address * @returns */ async getStakedTokenIds(owner) { // subgraph query key const apiKey = getEnvVar('ANGEL_BLOCK_SUBGRAPH_API_KEY'); if (typeof apiKey !== 'string') { throw new Error(`API key for AngelBlock subgraph is missing.`); } // subgraph id const subgraphId = 'Gzd5KzH5rceQSy3oo4y3bYcGMc9jwwnrhFuZ27JDhh7z'; // fetching owner staked nfts const response = await request(`https://gateway.thegraph.com/api/${encodeURIComponent(apiKey)}/subgraphs/id/${subgraphId}`, query, { id: owner }); // return array of BigNumbers return response.staker ? response.staker.stakedNfts.map(nft => BigNumber.from(nft.id)) : []; } }; AngelBlockStakingContractAdapter = __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)) ], AngelBlockStakingContractAdapter); export { AngelBlockStakingContractAdapter }; //# sourceMappingURL=ab.adapter.js.map