mirror of
https://github.com/oceanprotocol/ocean.js.git
synced 2024-11-26 20:39:05 +01:00
* Add confidential EVM flag when creating a datatoken 4. * Add comments. * fix lint. * fix lint. * Add chain id check to bundled functions. * Updating CodeExamples.md * Updating ComputeExamples.md * Used config object. * Added check for sapphire confidential EVM. Fix tests. * Added sapphire wrap signer for all contracts. * Make network mandatory field. * Undo making network mandatory. * refactor condition. * refactor condition. * Add condition when creating NFT. * Refactor with sdk. * fix lint. * tweak. * tweak. * Created protected function to get vthe signer according to the sdk from config. * Fix lint. Add check for sdk within the config. * Fix lint. * Updating CodeExamples.md * Updating ComputeExamples.md --------- Co-authored-by: GitHub Actions Bot <>
198 lines
6.1 KiB
TypeScript
198 lines
6.1 KiB
TypeScript
import { Signer } from 'ethers'
|
|
import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json'
|
|
import { sendTx } from '../utils'
|
|
import { AbiItem, ReceiptOrEstimate } from '../@types'
|
|
import { Config } from '../config'
|
|
import { SmartContractWithAddress } from './SmartContractWithAddress'
|
|
|
|
export class AccessListContract extends SmartContractWithAddress {
|
|
public abiEnterprise: AbiItem[]
|
|
|
|
getDefaultAbi() {
|
|
return AccessList.abi as AbiItem[]
|
|
}
|
|
|
|
/**
|
|
* Instantiate AccessList class
|
|
* @param {string} address The contract address.
|
|
* @param {Signer} signer The signer object.
|
|
* @param {string | number} [network] Network id or name
|
|
* @param {Config} [config] The configuration object.
|
|
* @param {AbiItem[]} [abi] ABI array of the smart contract
|
|
* @param {AbiItem[]} abiEnterprise Enterprise ABI array of the smart contract
|
|
*/
|
|
constructor(
|
|
address: string,
|
|
signer: Signer,
|
|
network?: string | number,
|
|
config?: Config,
|
|
abi?: AbiItem[]
|
|
) {
|
|
super(address, signer, network, config, abi)
|
|
this.abi = abi || this.getDefaultAbi()
|
|
}
|
|
|
|
/**
|
|
* Get Token Uri
|
|
* @return {Promise<string>} Token URI
|
|
*/
|
|
public async getTokenUri(tokenId: number): Promise<string> {
|
|
return await this.contract.tokenURI(tokenId)
|
|
}
|
|
|
|
/**
|
|
* Get Owner
|
|
* @return {Promise<string>} Owner
|
|
*/
|
|
public async getOwner(): Promise<string> {
|
|
return await this.contract.owner()
|
|
}
|
|
|
|
/**
|
|
* Get Id
|
|
* @return {Promise<string>} Id
|
|
*/
|
|
public async getId(): Promise<number> {
|
|
return await this.contract.getId()
|
|
}
|
|
|
|
/**
|
|
* Get Name of Access list
|
|
* @return {Promise<string>} Name
|
|
*/
|
|
public async getName(): Promise<string> {
|
|
return await this.contract.name()
|
|
}
|
|
|
|
/**
|
|
* Get Symbol of Access list
|
|
* @return {Promise<string>} Symbol
|
|
*/
|
|
public async getSymbol(): Promise<string> {
|
|
return await this.contract.symbol()
|
|
}
|
|
|
|
/**
|
|
* Get Address Balance for access list token
|
|
* @param {String} address user adress
|
|
* @return {Promise<String>} balance Number of datatokens. Will be converted from wei
|
|
*/
|
|
public async balance(address: string): Promise<string> {
|
|
const balance = await this.contract.balanceOf(address)
|
|
return await this.unitsToAmount(null, balance, 18)
|
|
}
|
|
|
|
/**
|
|
* Add address to access list
|
|
* @param {String} user Minter address
|
|
* @param {String} tokenUri tokenURI
|
|
* @param {Boolean} estimateGas if True, return gas estimate
|
|
* @return {Promise<ReceiptOrEstimate>} returns the transaction receipt or the estimateGas value
|
|
*/
|
|
public async mint<G extends boolean = false>(
|
|
user: string,
|
|
tokenUri: string,
|
|
estimateGas?: G
|
|
): Promise<ReceiptOrEstimate<G>> {
|
|
const estGas = await this.contract.estimateGas.mint(user, tokenUri)
|
|
if (estimateGas) return <ReceiptOrEstimate<G>>estGas
|
|
const trxReceipt = await sendTx(
|
|
estGas,
|
|
this.getSignerAccordingSdk(),
|
|
this.config?.gasFeeMultiplier,
|
|
this.contract.mint,
|
|
user,
|
|
tokenUri
|
|
)
|
|
return <ReceiptOrEstimate<G>>trxReceipt
|
|
}
|
|
|
|
/**
|
|
* Batch add addresses to the access list
|
|
* @param {String} users Minter addresses
|
|
* @param {String} tokenUris tokenURI
|
|
* @param {Boolean} estimateGas if True, return gas estimate
|
|
* @return {Promise<ReceiptOrEstimate>} returns the transaction receipt or the estimateGas value
|
|
*/
|
|
public async batchMint<G extends boolean = false>(
|
|
users: Array<string>,
|
|
tokenUris: Array<string>,
|
|
estimateGas?: G
|
|
): Promise<ReceiptOrEstimate<G>> {
|
|
const estGas = await this.contract.estimateGas.batchMint(users, tokenUris)
|
|
if (estimateGas) return <ReceiptOrEstimate<G>>estGas
|
|
const trxReceipt = await sendTx(
|
|
estGas,
|
|
this.getSignerAccordingSdk(),
|
|
this.config?.gasFeeMultiplier,
|
|
this.contract.batchMint,
|
|
users,
|
|
tokenUris
|
|
)
|
|
return <ReceiptOrEstimate<G>>trxReceipt
|
|
}
|
|
|
|
/**
|
|
* Delete address from access list
|
|
* @param {Number} tokenId token ID
|
|
* @param {Boolean} estimateGas if True, return gas estimate
|
|
* @return {Promise<ReceiptOrEstimate>} returns the transaction receipt or the estimateGas value
|
|
*/
|
|
public async burn<G extends boolean = false>(
|
|
tokenId: number,
|
|
estimateGas?: G
|
|
): Promise<ReceiptOrEstimate<G>> {
|
|
const estGas = await this.contract.estimateGas.burn(tokenId)
|
|
if (estimateGas) return <ReceiptOrEstimate<G>>estGas
|
|
const trxReceipt = await sendTx(
|
|
estGas,
|
|
this.getSignerAccordingSdk(),
|
|
this.config?.gasFeeMultiplier,
|
|
this.contract.burn,
|
|
tokenId
|
|
)
|
|
return <ReceiptOrEstimate<G>>trxReceipt
|
|
}
|
|
|
|
/**
|
|
* Transfer Ownership of an access list, called by owner of access list
|
|
* @param {Number} newOwner new owner of the access list
|
|
* @param {Boolean} estimateGas if True, return gas estimate
|
|
* @return {Promise<ReceiptOrEstimate>} returns the transaction receipt or the estimateGas value
|
|
*/
|
|
public async transferOwnership<G extends boolean = false>(
|
|
newOwner: string,
|
|
estimateGas?: G
|
|
): Promise<ReceiptOrEstimate<G>> {
|
|
const estGas = await this.contract.estimateGas.transferOwnership(newOwner)
|
|
if (estimateGas) return <ReceiptOrEstimate<G>>estGas
|
|
const trxReceipt = await sendTx(
|
|
estGas,
|
|
this.getSignerAccordingSdk(),
|
|
this.config?.gasFeeMultiplier,
|
|
this.contract.transferOwnership,
|
|
newOwner
|
|
)
|
|
return <ReceiptOrEstimate<G>>trxReceipt
|
|
}
|
|
|
|
/**
|
|
* Renounce Ownership of an access list, called by owner of access list
|
|
* @param {Boolean} estimateGas if True, return gas estimate
|
|
* @return {Promise<ReceiptOrEstimate>} returns the transaction receipt or the estimateGas value
|
|
*/
|
|
public async renounceOwnership<G extends boolean = false>(
|
|
estimateGas?: G
|
|
): Promise<ReceiptOrEstimate<G>> {
|
|
const estGas = await this.contract.estimateGas.renounceOwnership()
|
|
if (estimateGas) return <ReceiptOrEstimate<G>>estGas
|
|
const trxReceipt = await sendTx(
|
|
estGas,
|
|
this.getSignerAccordingSdk(),
|
|
this.config?.gasFeeMultiplier,
|
|
this.contract.renounceOwnership
|
|
)
|
|
return <ReceiptOrEstimate<G>>trxReceipt
|
|
}
|
|
}
|