Smart Contract
IEVMBridgeNFTMinter
A.1e4aa0b87d10b141.IEVMBridgeNFTMinter
1import NonFungibleToken from 0x1d7e57aa55817448
2
3/// Contract interface enabling FlowEVMBridge to mint NFTs from implementing bridge contracts.
4///
5access(all)
6contract interface IEVMBridgeNFTMinter {
7
8 access(all) event Minted(type: String, id: UInt64, uuid: UInt64, evmID: UInt256, tokenURI: String, minter: Address)
9 access(all) event TokenURIUpdated(evmID: UInt256, newURI: String, updater: Address)
10
11 /// Account-only method to mint an NFT
12 ///
13 access(account)
14 fun mintNFT(id: UInt256, tokenURI: String): @{NonFungibleToken.NFT} {
15 post {
16 emit Minted(
17 type: result.getType().identifier,
18 id: result.id,
19 uuid: result.uuid,
20 evmID: id,
21 tokenURI: tokenURI,
22 minter: self.account.address
23 )
24 }
25 }
26
27 /// Allows the bridge to update the URI of bridged NFTs. This assumes that the EVM-defining project may contain
28 /// logic (onchain or offchain) which updates NFT metadata in the source ERC721 contract. On bridging, the URI can
29 /// then be updated in this contract to reflect the source ERC721 contract's metadata.
30 ///
31 access(account)
32 fun updateTokenURI(evmID: UInt256, newURI: String) {
33 post {
34 emit TokenURIUpdated(evmID: evmID, newURI: newURI, updater: self.account.address)
35 }
36 }
37}
38