53 lines
1.6 KiB
TypeScript
53 lines
1.6 KiB
TypeScript
import { Address, log } from '@graphprotocol/graph-ts'
|
|
import { Nft, Token } from '../../@types/schema'
|
|
import { ERC20 } from '../../@types/templates/ERC20Template/ERC20'
|
|
import { ERC20Template, ERC721Template } from '../../@types/templates'
|
|
import { addNft } from './globalUtils'
|
|
|
|
export function createToken(address: Address, isDatatoken: boolean): Token {
|
|
log.debug('started creating token with address: {}', [address.toHexString()])
|
|
if (isDatatoken) {
|
|
ERC20Template.create(address)
|
|
}
|
|
const token = new Token(address.toHexString())
|
|
const contract = ERC20.bind(address)
|
|
token.name = contract.name()
|
|
token.symbol = contract.symbol()
|
|
token.address = address.toHexString()
|
|
token.isDatatoken = isDatatoken
|
|
token.decimals = contract.decimals()
|
|
token.save()
|
|
return token
|
|
}
|
|
|
|
export function getToken(address: Address, isDatatoken: boolean): Token {
|
|
let newToken = Token.load(address.toHexString())
|
|
if (newToken === null) {
|
|
newToken = createToken(address, isDatatoken)
|
|
}
|
|
return newToken
|
|
}
|
|
|
|
export function createNftToken(address: Address): Nft {
|
|
log.debug('started creating nft token with address: {}', [
|
|
address.toHexString()
|
|
])
|
|
ERC721Template.create(address)
|
|
const token = new Nft(address.toHexString())
|
|
// const contract = ERC721Template.bind(address)
|
|
token.name = ''
|
|
token.symbol = ''
|
|
token.address = address.toHexString()
|
|
token.save()
|
|
addNft()
|
|
return token
|
|
}
|
|
|
|
export function getNftToken(address: Address): Nft {
|
|
let newToken = Nft.load(address.toHexString())
|
|
if (newToken === null) {
|
|
newToken = createNftToken(address)
|
|
}
|
|
return newToken
|
|
}
|