diff --git a/src/contracts/factories/NFTFactory.ts b/src/contracts/factories/NFTFactory.ts index f4e0ef69..4a69f7a1 100644 --- a/src/contracts/factories/NFTFactory.ts +++ b/src/contracts/factories/NFTFactory.ts @@ -1,8 +1,7 @@ -import { Contract } from 'web3-eth-contract' import Web3 from 'web3' import { TransactionReceipt } from 'web3-core' import { AbiItem } from 'web3-utils' -import defaultFactory721Abi from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' +import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' import { LoggerInstance, getFairGasPrice, @@ -10,11 +9,9 @@ import { getFreCreationParams, getErcCreationParams, getPoolCreationParams, - setContractDefaults, estimateGas, ZERO_ADDRESS } from '../../utils' -import { Config, ConfigHelper } from '../../config' import { FreCreationParams, Erc20CreateParams, @@ -24,38 +21,14 @@ import { Template, TokenOrder } from '../../@types' +import { SmartContractWithAddress } from '..' /** * Provides an interface for NFT Factory contract */ -export class NftFactory { - public factory721Address: string - public factory721Abi: AbiItem | AbiItem[] - public web3: Web3 - public config: Config - public factory721: Contract - - /** - * Instantiate Datatokens. - * @param {String} factory721Address - * @param {AbiItem | AbiItem[]} factory721ABI - * @param {Web3} web3 - */ - constructor( - factory721Address: string, - web3: Web3, - network?: string | number, - factory721Abi?: AbiItem | AbiItem[], - config?: Config - ) { - this.factory721Address = factory721Address - this.factory721Abi = factory721Abi || (defaultFactory721Abi.abi as AbiItem[]) - this.web3 = web3 - this.config = config || new ConfigHelper().getConfig(network || 'unknown') - this.factory721 = setContractDefaults( - new this.web3.eth.Contract(this.factory721Abi, this.factory721Address), - this.config - ) +export class NftFactory extends SmartContractWithAddress { + getDefaultAbi(): AbiItem | AbiItem[] { + return ERC721Factory.abi as AbiItem[] } /** @@ -67,7 +40,7 @@ export class NftFactory { public async estGasCreateNFT(address: string, nftData: NftCreateData): Promise { return estimateGas( address, - this.factory721.methods.deployERC721Contract, + this.contract.methods.deployERC721Contract, nftData.name, nftData.symbol, nftData.templateIndex, @@ -105,7 +78,7 @@ export class NftFactory { } const estGas = await estimateGas( address, - this.factory721.methods.deployERC721Contract, + this.contract.methods.deployERC721Contract, nftData.name, nftData.symbol, nftData.templateIndex, @@ -117,7 +90,7 @@ export class NftFactory { ) // Invoke createToken function of the contract - const trxReceipt = await this.factory721.methods + const trxReceipt = await this.contract.methods .deployERC721Contract( nftData.name, nftData.symbol, @@ -147,7 +120,7 @@ export class NftFactory { * @return {Promise} Number of NFT created from this factory */ public async getCurrentNFTCount(): Promise { - const trxReceipt = await this.factory721.methods.getCurrentNFTCount().call() + const trxReceipt = await this.contract.methods.getCurrentNFTCount().call() return trxReceipt } @@ -155,7 +128,7 @@ export class NftFactory { * @return {Promise} Number of DTs created from this factory */ public async getCurrentTokenCount(): Promise { - const trxReceipt = await this.factory721.methods.getCurrentTokenCount().call() + const trxReceipt = await this.contract.methods.getCurrentTokenCount().call() return trxReceipt } @@ -163,7 +136,7 @@ export class NftFactory { * @return {Promise} Factory Owner address */ public async getOwner(): Promise { - const trxReceipt = await this.factory721.methods.owner().call() + const trxReceipt = await this.contract.methods.owner().call() return trxReceipt } @@ -171,7 +144,7 @@ export class NftFactory { * @return {Promise} Number of NFT Template added to this factory */ public async getCurrentNFTTemplateCount(): Promise { - const count = await this.factory721.methods.getCurrentNFTTemplateCount().call() + const count = await this.contract.methods.getCurrentNFTTemplateCount().call() return count } @@ -179,7 +152,7 @@ export class NftFactory { * @return {Promise} Number of ERC20 Template added to this factory */ public async getCurrentTokenTemplateCount(): Promise { - const count = await this.factory721.methods.getCurrentTemplateCount().call() + const count = await this.contract.methods.getCurrentTemplateCount().call() return count } @@ -195,7 +168,7 @@ export class NftFactory { if (index === 0) { throw new Error(`Template index cannot be ZERO`) } - const template = await this.factory721.methods.getNFTTemplate(index).call() + const template = await this.contract.methods.getNFTTemplate(index).call() return template } @@ -204,7 +177,7 @@ export class NftFactory { * @return {Promise