Skip to content

Commit

Permalink
feat: add NFTWEscrow contract
Browse files Browse the repository at this point in the history
Signed-off-by: Raymond Feng <[email protected]>
  • Loading branch information
raymondfeng committed Aug 13, 2022
1 parent be09491 commit 8fb69ec
Show file tree
Hide file tree
Showing 4 changed files with 897 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/adapters/mtg.adapter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,17 @@ export class MtgStakingContractAdapter extends BaseStakingContractAdapter {
return records[0];
}

async getStakedTokenBalance(
provider: providers.Provider,
owner: string,
): Promise<BigNumber> {
const contract = MtgStaking__factory.connect(
this.contractAddress,
provider,
);
return contract.numOfTokenStaked(owner);
}

async getStakingAsset(provider: providers.Provider): Promise<AssetName> {
const contract = MtgStaking__factory.connect(
this.contractAddress,
Expand Down
78 changes: 78 additions & 0 deletions src/adapters/nftw-escrow.adapter.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
// 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 {AssetName} from '@collabland/chain';
import {pMap} from '@collabland/common';
import {BindingScope, extensionFor, injectable} from '@loopback/core';
import {BigNumber, providers} from 'ethers';
import {STAKING_ADAPTERS_EXTENSION_POINT} from '../keys';
import {BaseStakingContractAdapter} from '../staking';
import {MtgStaking__factory} from '../types/factories/MtgStaking__factory';
import {NftwEscrow__factory} from '../types/factories/NftwEscrow__factory';
import {NftwEscrow} from '../types/NftwEscrow';

@injectable(
{
scope: BindingScope.SINGLETON,
},
extensionFor(STAKING_ADAPTERS_EXTENSION_POINT),
)
export class NFTWEscrowStakingContractAdapter extends BaseStakingContractAdapter {
contractAddress = '0x69f0b8c5e94f6b64d832b7d9b15f3a88cb2f6f4b';

async getStakedTokenIds(
provider: providers.Provider,
owner: string,
): Promise<BigNumber[]> {
const contract = NftwEscrow__factory.connect(
this.contractAddress,
provider,
);
const tokenIdsByOwner: Record<string, BigNumber[]> =
await this.getTokenIdsByOwner(contract);
return tokenIdsByOwner[owner];
}

private async getTokenIdsByOwner(contract: NftwEscrow) {
const tokenIdsByOwner: Record<string, BigNumber[]> = {};
const tokenIds = new Array<number>(10001);
for (let i = 1; i <= 10000; i++) {
tokenIds[i - 1] = i;
}
await pMap(tokenIds, async i => {
const tokenId = BigNumber.from(i);
const info = await contract.getWorldInfo(tokenId);
tokenIdsByOwner[info.owner] = tokenIdsByOwner[info.owner] ?? [];
tokenIdsByOwner[info.owner].push(tokenId);
});
return tokenIdsByOwner;
}

async getStakedTokenBalance(
provider: providers.Provider,
owner: string,
): Promise<BigNumber> {
const contract = MtgStaking__factory.connect(
this.contractAddress,
provider,
);
return contract.numOfTokenStaked(owner);
}

async getStakingAsset(provider: providers.Provider): Promise<AssetName> {
/*
const contract = NftwEscrow__factory.connect(
this.contractAddress,
provider,
);
*/
// NFTW_ERC721
// const asset = await contract.name();
return new AssetName({
namespace: 'ERC721',
reference: 'NFTW',
});
}
}
1 change: 1 addition & 0 deletions src/component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ export class StakingContractsComponent implements Component {
RirsuStakingContractAdapter,
RoboStakingContractAdapter,
SkyFarmContractAdapter,
// NFTWEscrowStakingContractAdapter,
];
constructor() {}
}
Loading

0 comments on commit 8fb69ec

Please sign in to comment.