Smart Contract
ContractFactoryTemplate
A.befbaccb5032a457.ContractFactoryTemplate
1import NonFungibleToken from 0x1d7e57aa55817448
2import MetadataViews from 0x1d7e57aa55817448
3import ViewResolver from 0x1d7e57aa55817448
4
5import FlowtyDrops from 0xbefbaccb5032a457
6import BaseNFT from 0xbefbaccb5032a457
7import BaseCollection from 0xbefbaccb5032a457
8import NFTMetadata from 0xbefbaccb5032a457
9import UniversalCollection from 0xbefbaccb5032a457
10import ContractBorrower from 0xbefbaccb5032a457
11
12import AddressUtils from 0xa340dc0a4ec828ab
13
14access(all) contract interface ContractFactoryTemplate {
15 access(all) fun createContract(acct: auth(Contracts) &Account, name: String, params: {String: AnyStruct}, initializeIdentifier: String)
16
17 access(all) fun getContractAddresses(): {String: Address} {
18 let d: {String: Address} = {
19 "NonFungibleToken": AddressUtils.parseAddress(Type<&{NonFungibleToken}>())!,
20 "MetadataViews": AddressUtils.parseAddress(Type<&MetadataViews>())!,
21 "ViewResolver": AddressUtils.parseAddress(Type<&{ViewResolver}>())!,
22 "FlowtyDrops": AddressUtils.parseAddress(Type<&FlowtyDrops>())!,
23 "BaseNFT": AddressUtils.parseAddress(Type<&{BaseNFT}>())!,
24 "BaseCollection": AddressUtils.parseAddress(Type<&{BaseCollection}>())!,
25 "NFTMetadata": AddressUtils.parseAddress(Type<&NFTMetadata>())!,
26 "UniversalCollection": AddressUtils.parseAddress(Type<&UniversalCollection>())!,
27 "BaseCollection": AddressUtils.parseAddress(Type<&{BaseCollection}>())!,
28 "AddressUtils": AddressUtils.parseAddress(Type<&AddressUtils>())!,
29 "ContractBorrower": AddressUtils.parseAddress(Type<ContractBorrower>())!
30 }
31
32 return d
33 }
34
35 access(all) fun importLine(name: String, addr: Address): String {
36 return "import ".concat(name).concat(" from ").concat(addr.toString()).concat("\n")
37 }
38
39 access(all) fun generateImports(names: [String]): String {
40 let addresses = self.getContractAddresses()
41 var imports = ""
42 for n in names {
43 imports = imports.concat(self.importLine(name: n, addr: addresses[n] ?? panic("missing contract import address: ".concat(n))))
44 }
45
46 return imports
47 }
48}