github.com/nspcc-dev/neo-go@v0.105.2-0.20240517133400-6be757af3eba/pkg/smartcontract/manifest/standard/nep11.go (about) 1 package standard 2 3 import ( 4 "github.com/nspcc-dev/neo-go/pkg/smartcontract" 5 "github.com/nspcc-dev/neo-go/pkg/smartcontract/manifest" 6 ) 7 8 // Nep11Base is a Standard containing common NEP-11 methods. 9 var Nep11Base = &Standard{ 10 Base: DecimalTokenBase, 11 Manifest: manifest.Manifest{ 12 ABI: manifest.ABI{ 13 Methods: []manifest.Method{ 14 { 15 Name: "balanceOf", 16 Parameters: []manifest.Parameter{ 17 {Name: "owner", Type: smartcontract.Hash160Type}, 18 }, 19 ReturnType: smartcontract.IntegerType, 20 Safe: true, 21 }, 22 { 23 Name: "tokensOf", 24 Parameters: []manifest.Parameter{ 25 {Name: "owner", Type: smartcontract.Hash160Type}, 26 }, 27 ReturnType: smartcontract.InteropInterfaceType, 28 Safe: true, 29 }, 30 { 31 Name: "transfer", 32 Parameters: []manifest.Parameter{ 33 {Name: "to", Type: smartcontract.Hash160Type}, 34 {Name: "tokenId", Type: smartcontract.ByteArrayType}, 35 {Name: "data", Type: smartcontract.AnyType}, 36 }, 37 ReturnType: smartcontract.BoolType, 38 }, 39 }, 40 Events: []manifest.Event{ 41 { 42 Name: "Transfer", 43 Parameters: []manifest.Parameter{ 44 {Name: "from", Type: smartcontract.Hash160Type}, 45 {Name: "to", Type: smartcontract.Hash160Type}, 46 {Name: "amount", Type: smartcontract.IntegerType}, 47 {Name: "tokenId", Type: smartcontract.ByteArrayType}, 48 }, 49 }, 50 }, 51 }, 52 }, 53 Optional: []manifest.Method{ 54 { 55 Name: "properties", 56 Parameters: []manifest.Parameter{ 57 {Name: "tokenId", Type: smartcontract.ByteArrayType}, 58 }, 59 ReturnType: smartcontract.MapType, 60 Safe: true, 61 }, 62 { 63 Name: "tokens", 64 ReturnType: smartcontract.InteropInterfaceType, 65 Safe: true, 66 }, 67 }, 68 } 69 70 // Nep11NonDivisible is a NEP-11 non-divisible Standard. 71 var Nep11NonDivisible = &Standard{ 72 Base: Nep11Base, 73 Manifest: manifest.Manifest{ 74 ABI: manifest.ABI{ 75 Methods: []manifest.Method{ 76 { 77 Name: "ownerOf", 78 Parameters: []manifest.Parameter{ 79 {Name: "tokenId", Type: smartcontract.ByteArrayType}, 80 }, 81 ReturnType: smartcontract.Hash160Type, 82 Safe: true, 83 }, 84 }, 85 }, 86 }, 87 } 88 89 // Nep11Divisible is a NEP-11 divisible Standard. 90 var Nep11Divisible = &Standard{ 91 Base: Nep11Base, 92 Manifest: manifest.Manifest{ 93 ABI: manifest.ABI{ 94 Methods: []manifest.Method{ 95 { 96 Name: "balanceOf", 97 Parameters: []manifest.Parameter{ 98 {Name: "owner", Type: smartcontract.Hash160Type}, 99 {Name: "tokenId", Type: smartcontract.ByteArrayType}, 100 }, 101 ReturnType: smartcontract.IntegerType, 102 Safe: true, 103 }, 104 { 105 Name: "ownerOf", 106 Parameters: []manifest.Parameter{ 107 {Name: "tokenId", Type: smartcontract.ByteArrayType}, 108 }, 109 ReturnType: smartcontract.InteropInterfaceType, // iterator 110 Safe: true, 111 }, 112 { 113 Name: "transfer", 114 Parameters: []manifest.Parameter{ 115 {Name: "from", Type: smartcontract.Hash160Type}, 116 {Name: "to", Type: smartcontract.Hash160Type}, 117 {Name: "amount", Type: smartcontract.IntegerType}, 118 {Name: "tokenId", Type: smartcontract.ByteArrayType}, 119 {Name: "data", Type: smartcontract.AnyType}, 120 }, 121 ReturnType: smartcontract.BoolType, 122 }, 123 }, 124 }, 125 }, 126 }