harmony-marketplace-sdk
v0.1.2
Published
Harmony Marketplace SDK provides a collection of interfaces to interact with HRC721, HRC1155 and any Smart Contracts that extends those standards.
Downloads
12
Maintainers
Readme
Harmony Marketplace SDK
Harmony Marketplace SDK provides a collection of interfaces to interact with HRC721, HRC1155 and any Smart Contracts that extends those standards. This library was based on @harmony-js
Install
npm i harmony-marketplace-sdk
Usage
Node
// JavaScript
const { HRC721 } = require('harmony-marketplace-sdk')
// TypeScript
import { HRC721 } from 'harmony-marketplace-sdk'
Browser
Include the ESM module (harmony-marketplace-sdk.esm.js) and import using:
<script type="module">
import { HRC721 } from './harmony-marketplace-sdk.esm.js'
</script>
Wallet
Harmony Marketplace SDK provides three implementations of Wallet which help to create a Signer from a private key or mnemonic effortless.
Private Key
Implementation of the Wallet that uses a private key.
import { HttpProvider, WSProvider } from '@harmony-js/network'
import { PrivateKey, HarmonyShards, HARMONY_RPC_SHARD_0_URL, HARMONY_RPC_WS } from 'harmony-marketplace-sdk'
const privateKey = '45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
// Using a HttpProvider with a string url.
const pk = new PrivateKey(new HttpProvider('https://api.harmony.one'), privateKey)
// Using a HttpProvider with a const from Harmony Marketplace SDK.
const pk = new PrivateKey(new HttpProvider(HARMONY_RPC_SHARD_0_URL), privateKey)
// Using a WSProvider with a string url.
const pk = new PrivateKey(new WSProvider('wss://ws.s0.t.hmny.io'), privateKey)
// Using a WSProvider with a const from Harmony Marketplace SDK.
const pk = new PrivateKey(new WSProvider(HARMONY_RPC_WS), privateKey)
// Using a provider with a pre-configuration from Harmony Marketplace SDK.
const pk = new PrivateKey(HarmonyShards.SHARD_0, privateKey)
Mnemonic Key
Implementation of the Wallet that uses a list of words for the mnemonic key.
import { HttpProvider, WSProvider } from '@harmony-js/network'
import { MnemonicKey, HarmonyShards, HARMONY_RPC_SHARD_0_URL, HARMONY_RPC_WS } from 'harmony-marketplace-sdk'
const mnemonic = 'glory seat canal seven erosion asset guilt perfect fluid dice floor unfold'
// Using a HttpProvider with a string url.
const mnemonicKey = new MnemonicKey(new HttpProvider('https://api.harmony.one'), { mnemonic })
// Using a HttpProvider with a const from Harmony Marketplace SDK.
const mnemonicKey = new MnemonicKey(new HttpProvider(HARMONY_RPC_SHARD_0_URL), { mnemonic })
// Using a WSProvider with a string url.
const mnemonicKey = new MnemonicKey(new WSProvider('wss://ws.s0.t.hmny.io'), { mnemonic })
// Using a WSProvider with a const from Harmony Marketplace SDK.
const mnemonicKey = new MnemonicKey(new WSProvider(HARMONY_RPC_WS), { mnemonic })
// Using a provider with a pre-configuration from Harmony Marketplace SDK.
const mnemonicKey = new MnemonicKey(HarmonyShards.SHARD_0, { mnemonic })
Simple Key
Implementation of the Wallet that does not use any pk or mnemonic.
import { HttpProvider, WSProvider } from '@harmony-js/network'
import { Key, HarmonyShards, HARMONY_RPC_SHARD_0_URL, HARMONY_RPC_WS } from 'harmony-marketplace-sdk'
// Using a HttpProvider with a string url.
const key = new Key(new HttpProvider('https://api.harmony.one'))
// Using a HttpProvider with a const from Harmony Marketplace SDK.
const key = new Key(new HttpProvider(HARMONY_RPC_SHARD_0_URL))
// Using a WSProvider with a string url.
const key = new Key(new WSProvider('wss://ws.s0.t.hmny.io'))
// Using a WSProvider with a const from Harmony Marketplace SDK.
const key = new Key(new WSProvider(HARMONY_RPC_WS))
// Using a provider with a pre-configuration from Harmony Marketplace SDK.
const key = new Key(HarmonyShards.SHARD_0)
// Add Private key manually
key.addByPrivateKey('45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e')
HD Key
Implementation of a hierarchical deterministic (HD) wallet that uses a mnemonic to generate the derivative addresses.
import { HttpProvider, WSProvider } from '@harmony-js/network'
import { HDKey, HarmonyShards, HARMONY_RPC_SHARD_0_URL, HARMONY_RPC_WS } from 'harmony-marketplace-sdk'
const options = {
mnemonic: 'glory seat canal seven erosion asset guilt perfect fluid dice floor unfold',
index: 0,
numberOfAddresses: 1,
shardId: 0,
gasLimit: '1000000',
gasPrice: '2000000000',
}
// Using a HttpProvider with a string url.
const key = new HDKey(new HttpProvider('https://api.harmony.one'), options)
// Using a HttpProvider with a const from Harmony Marketplace SDK.
const key = new HDKey(new HttpProvider(HARMONY_RPC_SHARD_0_URL), options)
// Using a WSProvider with a string url.
const key = new HDKey(new WSProvider('wss://ws.s0.t.hmny.io'), options)
// Using a WSProvider with a const from Harmony Marketplace SDK.
const key = new HDKey(new WSProvider(HARMONY_RPC_WS), options)
// Using a provider with a pre-configuration from Harmony Marketplace SDK.
const key = new HDKey(HarmonyShards.SHARD_0, options)
Metamask Provider
Implementation a subclass of HttpProvider that takes window.ethereum as a parameter, each method of HttpProvider is implemented by this subclass by cascading the request appropriately to window.ethereum
import detectEthereumProvider from '@metamask/detect-provider'
import { MetamaskProvider } from 'harmony-marketplace-sdk'
const provider = await detectEthereumProvider()
// Using a MetamaskProvider with window or a detected provider.
const key = new Key(new MetamaskProvider(window.ethereum || provider))
Base Token
The BaseToken
is an extension over a regular Contract which is the Harmony recomendation for interact with smart contracts. This abstract class contains the core functionality for interact with Harmony Smart Contracts.
HRC20 API
The HRC20
implements the abstract class Base Token.
NOTE: The harmony explorer will look for a specific list of functions and events to identify HRC20 tokens. You can validate if the bytecode of your HRC20 is valid here.
Expected Methods: | Method | Description | | ------------- | ------------- | | totalSupply | Total amount of tokens stored by the contract. | | balanceOf | Returns the amount of tokens owned by account. | | transfer | Moves amount tokens from the caller’s account to another account. | | allowance | Returns the remaining number of tokens that spender will be allowed to spend on behalf of owner through transferFrom | | approve | Sets amount as the allowance of spender over the caller’s tokens. | | transferFrom | Moves amount tokens from an account to another account using the allowance mechanism. | | symbol | Returns the symbol of the token. | | name | Returns the name of the token. | | decimals | Returns the decimals places of the token. | | mint | Creates amount tokens and assigns them to account. | | burn | Destroys amount tokens from account. | | burnFrom | Destroys amount tokens from an account. |
Expected Events | Event | Description | | ------------- | ------------- | | Transfer | Emitted when a token id is transferred from an address to another. | | Approval | Emitted when owner enables approved to manage the tokenId token. |
You can find an example of HRC20 in this address 0x...0a0a.
Initializing
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// A contract instance with options
const contract = new HRC20('0x...00', ABI, wallet, {
data: '0x',
shardID: 0,
address: '0x...00',
defaultAccount: wallet.getAccount('0x...00'),
defaultBlock: 'lastest',
defaultGas: '21000',
defaultGasPrice: '1',
transactionBlockTimeout: 2000,
transactionConfirmationBlocks: '10',
transactionPollingTimeout: 200,
})
Methods
totalSupply(txOptions?: ITransactionOptions): Promise<BN>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns the totalSupply as a BN instance
const totalSupply = await contract.totalSupply()
balanceOf(address: string, txOptions?: ITransactionOptions): Promise<BN>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a BN instance.
const balance = await contract.balanceOf('0x...01')
transfer(to: string, amount: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.transfer('0x...01', '1')
allowance(owner: string, spender: string, txOptions?: ITransactionOptions): Promise<BN>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a BN instance.
const tx = await contract.allowance('0x...01', '0x...02')
approve(spender: string, amount: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.approve('0x...01', 100)
transferFrom(from: string, to: string, amount: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.transferFrom('0x...01', '0x...02', 100)
symbol(txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a string value.
const symbol = await contract.symbol()
name(txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a string value.
const name = await contract.name()
decimals(txOptions?: ITransactionOptions): Promise<number>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a number value.
const name = await contract.decimals() // 18
mint(account: string, amount: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.mint('0x...01', 10)
burn(amount: number, txOptions?: ITransactionOptions)
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.burn(10)
burnFrom(account: string, amount: number, txOptions?: ITransactionOptions)
import { PrivateKey, HarmonyShards, HRC20 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC20('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.burnFrom('0x...01', 10)
HRC721 API
The HRC721
implements the abstract class Base Token.
NOTE: The harmony explorer will look for a specific list of functions and events to identify HRC721 tokens. You can validate if the bytecode of your HRC71 is valid here.
Expected Methods: | Method | Description | | ------------- | ------------- | | balanceOf | The number of tokens in owner's account. | | ownerOf | The owner of a token. | | safeTransferFrom | Safely transfers a token from an address to another. | | transferFrom | Transfers a token from an address to another address. | | approve | Gives permission to an account to transfer a token to another account. | | getApproved | Returns the account approved for a token. | | setApprovalForAll | Approve or remove operator as an operator for the caller. | | isApprovedForAll | Returns if the operator is allowed to manage all of the assets of an account. | | totalSupply | Total amount of tokens stored by the contract. | | tokenURI | The Uniform Resource Identifier (URI) for a token. | | symbol | The token collection symbol. | | name | The token collection name. | | mint | Mints a token with the given id and transfers it to an address. | | safeMint | Safely mints a token and transfers it to an address. | | burn | Destroys a token |
Expected Events | Event | Description | | ------------- | ------------- | | Transfer | Emitted when a token id is transferred from an address to another. | | Approval | Emitted when an account enables another account to manage a token. |
You can find an example of HRC721 in this address 0x...0a0a.
Initializing
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// A contract instance with options
const contract = new HRC721('0x...00', ABI, wallet, {
data: '0x',
shardID: 0,
address: '0x...00',
defaultAccount: wallet.getAccount('0x...00'),
defaultBlock: 'lastest',
defaultGas: '21000',
defaultGasPrice: '1',
transactionBlockTimeout: 2000,
transactionConfirmationBlocks: '10',
transactionPollingTimeout: 200,
})
Methods
balanceOf(address: string, txOptions?: ITransactionOptions): Promise<BN>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a BN instance.
const balance = await contract.balanceOf('0x...01')
ownerOf(tokenId: BNish, txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns an address.
const owner = await contract.ownerOf('1')
safeTransferFrom(from: string, to: string, tokenId: BNish, data?: any, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.safeTransferFrom('0x...01', '0x...02', '1')
transferFrom(from: string, to: string, tokenId: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.transferFrom('0x...01', '0x...02', '1')
approve(to: string, tokenId: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.approve('0x...01', '1')
getApproved(tokenId: BNish, txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns an address.
const address = await contract.getApproved('1')
setApprovalForAll(addressOperator: string, approved: boolean, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.setApprovalForAll('0x...01', true)
isApprovedForAll(owner: string, operator: string, txOptions?: ITransactionOptions): Promise<boolean>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a boolean
const isApproved = await contract.isApprovedForAll('0x...01', '0x...02')
totalSupply(txOptions?: ITransactionOptions): Promise<BN>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a number value.
const supply = await contract.totalSupply()
tokenURI(tokenId: BNish, txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a string value.
const uri = await contract.tokenURI('10')
#### symbol(txOptions?: ITransactionOptions): Promise<string>
<p>Returns the token collection symbol.</p>
```ts
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a string value.
const symbol = await contract.symbol()
name(txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a string value.
const name = await contract.name()
mint(account: string, tokenId: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.mint('0x...01', '1')
safeMint(to: string, tokenId: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.mint('0x...01', '1')
burn(tokenId: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC721 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC721('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.burn('1')
HRC1155 API
The HRC1155
implements the abstract class Base Token.
NOTE: The harmony explorer will look for a specific list of functions and events to identify HRC1155 tokens. You can validate if the bytecode of your HRC1155 is valid here.
Expected Methods: | Method | Description | | ------------- | ------------- | | balanceOf | Returns the amount of tokens of a token type (id) owned by an account. | | balanceOfBatch | Batched version of balanceOf. | | safeTransferFrom | Transfers the amount of tokens of a token type (id) from an address to another address. | | safeBatchTransferFrom | Batched version of safeTransferFrom. | | setApprovalForAll | Grants or revokes permission to an operator to transfer the caller’s tokens. | | isApprovedForAll | Returns true if an operator is approved to transfer the tokens of an account. | | owner | Returns the address of the current contract owner. | | tokenURIPrefix | Returns the token URI prefix | | contractURI | Returns a URL for the storefront-level metadata for your contract. | | tokenURI | Returns the Uniform Resource Identifier (URI) for a token. | | totalSupply | Total amount of tokens with a given token id | | symbol | Returns the token collection symbol. | | name | Returns the token collection name. | | mint | Creates the amount of tokens of a token type (id), and assigns them to an account. | | mintBatch | Batched version of mint |
Expected Events | Event | Description | | ------------- | ------------- | | TransferSingle | Emitted when a token id are transferred from an address to another by operator. | | TransferBatch | Emitted when a token ids are transferred from an address to another by operator. |
You can find an example of HRC1155 in this address 0x...b264.
Initializing
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// A contract instance with options
const contract = new HRC1155('0x...00', ABI, wallet, {
data: '0x',
shardID: 0,
address: '0x...00',
defaultAccount: wallet.getAccount('0x...00'),
defaultBlock: 'lastest',
defaultGas: '21000',
defaultGasPrice: '1',
transactionBlockTimeout: 2000,
transactionConfirmationBlocks: '10',
transactionPollingTimeout: 200,
})
Methods
balanceOf(address: string, id: BNish, txOptions?: ITransactionOptions): Promise<BN>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a BN instance.
const balance = await contract.balanceOf('0x...01', '1')
balanceOfBatch(accounts: string[], ids: BNish[], txOptions?: ITransactionOptions): Promise<BN[]>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns an array of BN instance.
const balances = await contract.balanceOfBatch(['0x...01', '0x...02'], ['1', '2'])
safeTransferFrom(from: string, to: string, id: BNish, amount: BNish, data: any, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.safeTransferFrom('0x...01', '0x...02', '1', '1', [])
safeBatchTransferFrom(from: string, to: string, ids: BNish[], amounts: BNish[], data: any, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.safeBatchTransferFrom('0x...01', '0x...02', ['1', '2'], ['1', '1'], [])
setApprovalForAll(addressOperator: string, approved: boolean, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.setApprovalForAll('0x...01', true)
isApprovedForAll(owner: string, operator: string, txOptions?: ITransactionOptions): Promise<boolean>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns an boolean value.
const isApproved = await contract.isApprovedForAll('0x...01', '0x...02')
owner(txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns an address.
const owner = await contract.owner()
tokenURIPrefix(txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns an string value.
const uri = await contract.tokenURIPrefix()
contractURI(txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns an string value.
const uri = await contract.contractURI()
totalSupply(id: BNish, txOptions?: ITransactionOptions): Promise<BN>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a number value.
const total = await contract.totalSupply('1')
tokenURI(tokenId: BNish, txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a string value.
const uri = await contract.tokenURI('1')
symbol(txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a string value.
const symbol = await contract.symbol()
name(txOptions?: ITransactionOptions): Promise<string>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a string value.
const name = await contract.name()
mint(account: string, tokenId: BNish, amount: BNish, txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.mint('0x...01', '1', '10')
mintBatch(account: string, tokenIds: BNish[], amounts: BNish[], txOptions?: ITransactionOptions): Promise<Transaction>
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const wallet = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
// A contract instance
const contract = new HRC1155('0x...00', ABI, wallet)
// returns a Harmony Transaction instance.
const tx = await contract.mintBatch('0x...01', ['1', '2', '3'], ['10', '5', '20'])
BridgeToken API
Harmony -> Ethereum way bridge
Initializing
import { PrivateKey, HarmonyShards, HRC1155 } from 'harmony-marketplace-sdk'
import * as ABI from './abi.json'
const ethOwner = new Wallet(
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e',
new EtherscanProvider(
{ chainId: 1 },
API_KEY,
)
)
const hmyOwner = new PrivateKey(
HarmonyShards.SHARD_0,
'45e497bd45a9049bcb649016594489ac67b9f052a6cdf5cb74ee2427a60bf25e'
)
const bridge = new BridgeHRC20Token(hmyOwner, ethOwner)
const token = new HRC20('0x...00', ABI, hmyOwner)
const sender = hmyOwner.accounts[0].toLowerCase()
const recipient = ethOwner.address.toLowerCase()
const tokenInfo = { amount: 1000000000 }
// Send tokens from Harmony to Ethereum
const { addr, receiptId } = await bridge.sendToken(
BridgeType.HMY_TO_ETH,
sender,
recipient,
token,
tokenInfo,
)
// Send tokens from Ethereum to Harmony
const { addr, receiptId } = await bridge.sendToken(
BridgeType.ETH_TO_HMY,
sender,
recipient,
token,
tokenInfo,
)
Development
Install all the dependencies:
npmn ci
Copy the .env.sample
file to .env
cp .env.sample .env
Configure the environment variables
# An Etherscan API key. This is need it for use the bridge contracts.
API_KEY=
# A private key
TEST_PK_1=
# A private key
TEST_PK_2=
# A private key for the end 2 end test
MASTER_PRIVATE_KEY=
# A private key for the end 2 end test
OWNER_PRIVATE_KEY=
# A test seed for the unit test
TEST_SEED="pablo diego jose francisco de paula juan nepomuceno maria ruiz y picasso"
In the project directory, you can run:
npm run test
Running the unit tests.
npm run test:cov
Running the test coverage.
npm run test:e2e
Running the end to end test.
npm run test:lint
Running the lint.
Change Log
See Changelog for more information.
Contributing
Contributions welcome! See Contributing.
Collaborators
Acknowledgements
This project was kindly sponsored by Harmony.
License
Licensed under the MIT - see the LICENSE file for details.