@silvana-one/nft 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (236) hide show
  1. package/README.md +1400 -0
  2. package/dist/node/admin/advanced.d.ts +469 -0
  3. package/dist/node/admin/advanced.js +525 -0
  4. package/dist/node/admin/advanced.js.map +1 -0
  5. package/dist/node/admin/index.d.ts +1 -0
  6. package/dist/node/admin/index.js +2 -0
  7. package/dist/node/admin/index.js.map +1 -0
  8. package/dist/node/contracts/admin.d.ts +140 -0
  9. package/dist/node/contracts/admin.js +336 -0
  10. package/dist/node/contracts/admin.js.map +1 -0
  11. package/dist/node/contracts/collection.d.ts +551 -0
  12. package/dist/node/contracts/collection.js +1049 -0
  13. package/dist/node/contracts/collection.js.map +1 -0
  14. package/dist/node/contracts/index.d.ts +3 -0
  15. package/dist/node/contracts/index.js +4 -0
  16. package/dist/node/contracts/index.js.map +1 -0
  17. package/dist/node/contracts/nft.d.ts +76 -0
  18. package/dist/node/contracts/nft.js +329 -0
  19. package/dist/node/contracts/nft.js.map +1 -0
  20. package/dist/node/contracts.d.ts +709 -0
  21. package/dist/node/contracts.js +61 -0
  22. package/dist/node/contracts.js.map +1 -0
  23. package/dist/node/index.cjs +5032 -0
  24. package/dist/node/index.d.ts +8 -0
  25. package/dist/node/index.js +9 -0
  26. package/dist/node/index.js.map +1 -0
  27. package/dist/node/interfaces/admin.d.ts +102 -0
  28. package/dist/node/interfaces/admin.js +2 -0
  29. package/dist/node/interfaces/admin.js.map +1 -0
  30. package/dist/node/interfaces/approval.d.ts +57 -0
  31. package/dist/node/interfaces/approval.js +62 -0
  32. package/dist/node/interfaces/approval.js.map +1 -0
  33. package/dist/node/interfaces/collection.d.ts +57 -0
  34. package/dist/node/interfaces/collection.js +2 -0
  35. package/dist/node/interfaces/collection.js.map +1 -0
  36. package/dist/node/interfaces/encoding.d.ts +24 -0
  37. package/dist/node/interfaces/encoding.js +32 -0
  38. package/dist/node/interfaces/encoding.js.map +1 -0
  39. package/dist/node/interfaces/events.d.ts +833 -0
  40. package/dist/node/interfaces/events.js +106 -0
  41. package/dist/node/interfaces/events.js.map +1 -0
  42. package/dist/node/interfaces/index.d.ts +10 -0
  43. package/dist/node/interfaces/index.js +11 -0
  44. package/dist/node/interfaces/index.js.map +1 -0
  45. package/dist/node/interfaces/ownable.d.ts +94 -0
  46. package/dist/node/interfaces/ownable.js +12 -0
  47. package/dist/node/interfaces/ownable.js.map +1 -0
  48. package/dist/node/interfaces/owner.d.ts +61 -0
  49. package/dist/node/interfaces/owner.js +101 -0
  50. package/dist/node/interfaces/owner.js.map +1 -0
  51. package/dist/node/interfaces/pausable.d.ts +74 -0
  52. package/dist/node/interfaces/pausable.js +14 -0
  53. package/dist/node/interfaces/pausable.js.map +1 -0
  54. package/dist/node/interfaces/types.d.ts +2297 -0
  55. package/dist/node/interfaces/types.js +507 -0
  56. package/dist/node/interfaces/types.js.map +1 -0
  57. package/dist/node/interfaces/update.d.ts +53 -0
  58. package/dist/node/interfaces/update.js +58 -0
  59. package/dist/node/interfaces/update.js.map +1 -0
  60. package/dist/node/marketplace/auction.d.ts +775 -0
  61. package/dist/node/marketplace/auction.js +430 -0
  62. package/dist/node/marketplace/auction.js.map +1 -0
  63. package/dist/node/marketplace/bid.d.ts +254 -0
  64. package/dist/node/marketplace/bid.js +260 -0
  65. package/dist/node/marketplace/bid.js.map +1 -0
  66. package/dist/node/marketplace/index.d.ts +5 -0
  67. package/dist/node/marketplace/index.js +6 -0
  68. package/dist/node/marketplace/index.js.map +1 -0
  69. package/dist/node/marketplace/nft-shares.d.ts +1083 -0
  70. package/dist/node/marketplace/nft-shares.js +398 -0
  71. package/dist/node/marketplace/nft-shares.js.map +1 -0
  72. package/dist/node/marketplace/offer.d.ts +192 -0
  73. package/dist/node/marketplace/offer.js +132 -0
  74. package/dist/node/marketplace/offer.js.map +1 -0
  75. package/dist/node/marketplace/types.d.ts +374 -0
  76. package/dist/node/marketplace/types.js +33 -0
  77. package/dist/node/marketplace/types.js.map +1 -0
  78. package/dist/node/metadata/index.d.ts +3 -0
  79. package/dist/node/metadata/index.js +4 -0
  80. package/dist/node/metadata/index.js.map +1 -0
  81. package/dist/node/metadata/metadata.d.ts +337 -0
  82. package/dist/node/metadata/metadata.js +439 -0
  83. package/dist/node/metadata/metadata.js.map +1 -0
  84. package/dist/node/metadata/text.d.ts +44 -0
  85. package/dist/node/metadata/text.js +42 -0
  86. package/dist/node/metadata/text.js.map +1 -0
  87. package/dist/node/metadata/tree.d.ts +75 -0
  88. package/dist/node/metadata/tree.js +85 -0
  89. package/dist/node/metadata/tree.js.map +1 -0
  90. package/dist/node/vk.d.ts +42 -0
  91. package/dist/node/vk.js +45 -0
  92. package/dist/node/vk.js.map +1 -0
  93. package/dist/node/zkprogram-example/game.d.ts +76 -0
  94. package/dist/node/zkprogram-example/game.js +108 -0
  95. package/dist/node/zkprogram-example/game.js.map +1 -0
  96. package/dist/node/zkprogram-example/index.d.ts +2 -0
  97. package/dist/node/zkprogram-example/index.js +3 -0
  98. package/dist/node/zkprogram-example/index.js.map +1 -0
  99. package/dist/node/zkprogram-example/update.d.ts +76 -0
  100. package/dist/node/zkprogram-example/update.js +85 -0
  101. package/dist/node/zkprogram-example/update.js.map +1 -0
  102. package/dist/tsconfig.tsbuildinfo +1 -0
  103. package/dist/tsconfig.web.tsbuildinfo +1 -0
  104. package/dist/web/admin/advanced.d.ts +469 -0
  105. package/dist/web/admin/advanced.js +525 -0
  106. package/dist/web/admin/advanced.js.map +1 -0
  107. package/dist/web/admin/index.d.ts +1 -0
  108. package/dist/web/admin/index.js +2 -0
  109. package/dist/web/admin/index.js.map +1 -0
  110. package/dist/web/contracts/admin.d.ts +140 -0
  111. package/dist/web/contracts/admin.js +336 -0
  112. package/dist/web/contracts/admin.js.map +1 -0
  113. package/dist/web/contracts/collection.d.ts +551 -0
  114. package/dist/web/contracts/collection.js +1049 -0
  115. package/dist/web/contracts/collection.js.map +1 -0
  116. package/dist/web/contracts/index.d.ts +3 -0
  117. package/dist/web/contracts/index.js +4 -0
  118. package/dist/web/contracts/index.js.map +1 -0
  119. package/dist/web/contracts/nft.d.ts +76 -0
  120. package/dist/web/contracts/nft.js +329 -0
  121. package/dist/web/contracts/nft.js.map +1 -0
  122. package/dist/web/contracts.d.ts +709 -0
  123. package/dist/web/contracts.js +61 -0
  124. package/dist/web/contracts.js.map +1 -0
  125. package/dist/web/index.d.ts +8 -0
  126. package/dist/web/index.js +9 -0
  127. package/dist/web/index.js.map +1 -0
  128. package/dist/web/interfaces/admin.d.ts +102 -0
  129. package/dist/web/interfaces/admin.js +2 -0
  130. package/dist/web/interfaces/admin.js.map +1 -0
  131. package/dist/web/interfaces/approval.d.ts +57 -0
  132. package/dist/web/interfaces/approval.js +62 -0
  133. package/dist/web/interfaces/approval.js.map +1 -0
  134. package/dist/web/interfaces/collection.d.ts +57 -0
  135. package/dist/web/interfaces/collection.js +2 -0
  136. package/dist/web/interfaces/collection.js.map +1 -0
  137. package/dist/web/interfaces/encoding.d.ts +24 -0
  138. package/dist/web/interfaces/encoding.js +32 -0
  139. package/dist/web/interfaces/encoding.js.map +1 -0
  140. package/dist/web/interfaces/events.d.ts +833 -0
  141. package/dist/web/interfaces/events.js +106 -0
  142. package/dist/web/interfaces/events.js.map +1 -0
  143. package/dist/web/interfaces/index.d.ts +10 -0
  144. package/dist/web/interfaces/index.js +11 -0
  145. package/dist/web/interfaces/index.js.map +1 -0
  146. package/dist/web/interfaces/ownable.d.ts +94 -0
  147. package/dist/web/interfaces/ownable.js +12 -0
  148. package/dist/web/interfaces/ownable.js.map +1 -0
  149. package/dist/web/interfaces/owner.d.ts +61 -0
  150. package/dist/web/interfaces/owner.js +101 -0
  151. package/dist/web/interfaces/owner.js.map +1 -0
  152. package/dist/web/interfaces/pausable.d.ts +74 -0
  153. package/dist/web/interfaces/pausable.js +14 -0
  154. package/dist/web/interfaces/pausable.js.map +1 -0
  155. package/dist/web/interfaces/types.d.ts +2297 -0
  156. package/dist/web/interfaces/types.js +507 -0
  157. package/dist/web/interfaces/types.js.map +1 -0
  158. package/dist/web/interfaces/update.d.ts +53 -0
  159. package/dist/web/interfaces/update.js +58 -0
  160. package/dist/web/interfaces/update.js.map +1 -0
  161. package/dist/web/marketplace/auction.d.ts +775 -0
  162. package/dist/web/marketplace/auction.js +430 -0
  163. package/dist/web/marketplace/auction.js.map +1 -0
  164. package/dist/web/marketplace/bid.d.ts +254 -0
  165. package/dist/web/marketplace/bid.js +260 -0
  166. package/dist/web/marketplace/bid.js.map +1 -0
  167. package/dist/web/marketplace/index.d.ts +5 -0
  168. package/dist/web/marketplace/index.js +6 -0
  169. package/dist/web/marketplace/index.js.map +1 -0
  170. package/dist/web/marketplace/nft-shares.d.ts +1083 -0
  171. package/dist/web/marketplace/nft-shares.js +398 -0
  172. package/dist/web/marketplace/nft-shares.js.map +1 -0
  173. package/dist/web/marketplace/offer.d.ts +192 -0
  174. package/dist/web/marketplace/offer.js +132 -0
  175. package/dist/web/marketplace/offer.js.map +1 -0
  176. package/dist/web/marketplace/types.d.ts +374 -0
  177. package/dist/web/marketplace/types.js +33 -0
  178. package/dist/web/marketplace/types.js.map +1 -0
  179. package/dist/web/metadata/index.d.ts +3 -0
  180. package/dist/web/metadata/index.js +4 -0
  181. package/dist/web/metadata/index.js.map +1 -0
  182. package/dist/web/metadata/metadata.d.ts +337 -0
  183. package/dist/web/metadata/metadata.js +439 -0
  184. package/dist/web/metadata/metadata.js.map +1 -0
  185. package/dist/web/metadata/text.d.ts +44 -0
  186. package/dist/web/metadata/text.js +42 -0
  187. package/dist/web/metadata/text.js.map +1 -0
  188. package/dist/web/metadata/tree.d.ts +75 -0
  189. package/dist/web/metadata/tree.js +85 -0
  190. package/dist/web/metadata/tree.js.map +1 -0
  191. package/dist/web/vk.d.ts +42 -0
  192. package/dist/web/vk.js +45 -0
  193. package/dist/web/vk.js.map +1 -0
  194. package/dist/web/zkprogram-example/game.d.ts +76 -0
  195. package/dist/web/zkprogram-example/game.js +108 -0
  196. package/dist/web/zkprogram-example/game.js.map +1 -0
  197. package/dist/web/zkprogram-example/index.d.ts +2 -0
  198. package/dist/web/zkprogram-example/index.js +3 -0
  199. package/dist/web/zkprogram-example/index.js.map +1 -0
  200. package/dist/web/zkprogram-example/update.d.ts +76 -0
  201. package/dist/web/zkprogram-example/update.js +85 -0
  202. package/dist/web/zkprogram-example/update.js.map +1 -0
  203. package/package.json +65 -0
  204. package/src/admin/advanced.ts +601 -0
  205. package/src/admin/index.ts +1 -0
  206. package/src/contracts/admin.ts +301 -0
  207. package/src/contracts/collection.ts +1172 -0
  208. package/src/contracts/index.ts +3 -0
  209. package/src/contracts/nft.ts +344 -0
  210. package/src/contracts.ts +107 -0
  211. package/src/index.ts +8 -0
  212. package/src/interfaces/admin.ts +127 -0
  213. package/src/interfaces/approval.ts +99 -0
  214. package/src/interfaces/collection.ts +68 -0
  215. package/src/interfaces/encoding.ts +32 -0
  216. package/src/interfaces/events.ts +115 -0
  217. package/src/interfaces/index.ts +10 -0
  218. package/src/interfaces/ownable.ts +32 -0
  219. package/src/interfaces/owner.ts +143 -0
  220. package/src/interfaces/pausable.ts +41 -0
  221. package/src/interfaces/types.ts +623 -0
  222. package/src/interfaces/update.ts +104 -0
  223. package/src/marketplace/auction.ts +527 -0
  224. package/src/marketplace/bid.ts +294 -0
  225. package/src/marketplace/index.ts +5 -0
  226. package/src/marketplace/nft-shares.ts +388 -0
  227. package/src/marketplace/offer.ts +153 -0
  228. package/src/marketplace/types.ts +33 -0
  229. package/src/metadata/index.ts +3 -0
  230. package/src/metadata/metadata.ts +603 -0
  231. package/src/metadata/text.ts +60 -0
  232. package/src/metadata/tree.ts +128 -0
  233. package/src/vk.ts +64 -0
  234. package/src/zkprogram-example/game.ts +136 -0
  235. package/src/zkprogram-example/index.ts +2 -0
  236. package/src/zkprogram-example/update.ts +98 -0
@@ -0,0 +1,301 @@
1
+ import {
2
+ Bool,
3
+ DeployArgs,
4
+ method,
5
+ Permissions,
6
+ PublicKey,
7
+ SmartContract,
8
+ State,
9
+ state,
10
+ VerificationKey,
11
+ UInt64,
12
+ Field,
13
+ AccountUpdate,
14
+ UInt32,
15
+ } from "o1js";
16
+ import {
17
+ MintRequest,
18
+ NFTState,
19
+ NFTAdminBase,
20
+ MintParamsOption,
21
+ PausableContract,
22
+ PauseEvent,
23
+ OwnershipChangeEvent,
24
+ OwnableContract,
25
+ TransferEvent,
26
+ } from "../interfaces/index.js";
27
+ export { NFTAdmin, NFTAdminDeployProps };
28
+
29
+ interface NFTAdminDeployProps extends Exclude<DeployArgs, undefined> {
30
+ admin: PublicKey;
31
+ uri: string;
32
+ canBePaused?: Bool;
33
+ allowChangeRoyalty?: Bool;
34
+ allowChangeTransferFee?: Bool;
35
+ isPaused?: Bool;
36
+ }
37
+
38
+ /**
39
+ * The **NFTAdmin** contract serves as the foundational administrative layer for NFT collections on the Mina Protocol.
40
+ * It provides essential functionalities such as contract upgrades, pausing and resuming operations, and ownership management.
41
+ * This contract can be extended by custom admin contracts to implement specific administrative logic,
42
+ * ensuring flexibility while maintaining a standardized interface.
43
+ */
44
+ class NFTAdmin
45
+ extends SmartContract
46
+ implements NFTAdminBase, PausableContract, OwnableContract
47
+ {
48
+ /**
49
+ * The public key of the contract's administrator.
50
+ * This account has the authority to perform administrative actions such as pausing the contract or upgrading the verification key.
51
+ */
52
+ @state(PublicKey) admin = State<PublicKey>();
53
+
54
+ /**
55
+ * A boolean flag indicating whether the contract is currently paused.
56
+ * When `true`, certain operations are disabled.
57
+ */
58
+ @state(Bool) isPaused = State<Bool>();
59
+
60
+ /**
61
+ * A boolean flag indicating whether the contract has the ability to be paused.
62
+ * This allows for disabling the pause functionality if desired.
63
+ */
64
+ @state(Bool) canBePaused = State<Bool>();
65
+
66
+ /**
67
+ * A boolean flag indicating whether the contract has the ability to change the royalty fee.
68
+ */
69
+ @state(Bool) allowChangeRoyalty = State<Bool>();
70
+
71
+ /**
72
+ * A boolean flag indicating whether the contract has the ability to change the transfer fee.
73
+ */
74
+ @state(Bool) allowChangeTransferFee = State<Bool>();
75
+
76
+ /**
77
+ * Deploys the contract with initial settings.
78
+ * @param props - Deployment properties including admin, upgradeAuthority, uri, canPause, and isPaused.
79
+ */
80
+ async deploy(props: NFTAdminDeployProps) {
81
+ await super.deploy(props);
82
+ this.admin.set(props.admin);
83
+ this.isPaused.set(props.isPaused ?? Bool(false));
84
+ this.canBePaused.set(props.canBePaused ?? Bool(true));
85
+ this.allowChangeRoyalty.set(props.allowChangeRoyalty ?? Bool(false));
86
+ this.allowChangeTransferFee.set(
87
+ props.allowChangeTransferFee ?? Bool(false)
88
+ );
89
+ this.account.zkappUri.set(props.uri);
90
+ this.account.permissions.set({
91
+ ...Permissions.default(),
92
+ // Allow the upgrade authority to set the verification key
93
+ // even when there is no protocol upgrade
94
+ setVerificationKey:
95
+ Permissions.VerificationKey.proofDuringCurrentVersion(),
96
+ setPermissions: Permissions.impossible(),
97
+ access: Permissions.proof(),
98
+ send: Permissions.proof(),
99
+ setZkappUri: Permissions.none(),
100
+ setTokenSymbol: Permissions.none(),
101
+ });
102
+ }
103
+
104
+ /**
105
+ * Contract events emitted during various operations.
106
+ */
107
+ events = {
108
+ /** Emitted when the verification key is upgraded. */
109
+ upgradeVerificationKey: Field,
110
+ /** Emitted when the contract is paused. */
111
+ pause: PauseEvent,
112
+ /** Emitted when the contract is resumed. */
113
+ resume: PauseEvent,
114
+ /** Emitted when ownership of the contract changes. */
115
+ ownershipChange: OwnershipChangeEvent,
116
+ };
117
+
118
+ /**
119
+ * Ensures that the transaction is authorized by the contract owner.
120
+ * @returns A signed `AccountUpdate` from the admin.
121
+ */
122
+ async ensureOwnerSignature(): Promise<AccountUpdate> {
123
+ const admin = this.admin.getAndRequireEquals();
124
+ const adminUpdate = AccountUpdate.createSigned(admin);
125
+ adminUpdate.body.useFullCommitment = Bool(true); // Prevent memo and fee change
126
+ return adminUpdate;
127
+ }
128
+
129
+ /**
130
+ * Upgrades the contract's verification key after validating with the upgrade authority.
131
+ * @param vk - The new verification key to upgrade to.
132
+ */
133
+ @method
134
+ async upgradeVerificationKey(vk: VerificationKey) {
135
+ await this.ensureOwnerSignature();
136
+
137
+ // Set the new verification key
138
+ this.account.verificationKey.set(vk);
139
+
140
+ // Emit the upgrade event
141
+ this.emitEvent("upgradeVerificationKey", vk.hash);
142
+ }
143
+
144
+ /**
145
+ * Determines whether minting is allowed for the given request.
146
+ * Returns mint parameters if allowed, or none if not allowed.
147
+ * @param mintRequest - The minting request details.
148
+ * @returns A `MintParamsOption` indicating if minting is permitted.
149
+ */
150
+ @method.returns(MintParamsOption)
151
+ async canMint(mintRequest: MintRequest): Promise<MintParamsOption> {
152
+ // Only the creator can mint by default
153
+ return MintParamsOption.none();
154
+ }
155
+
156
+ /**
157
+ * Checks whether the NFT state can be updated.
158
+ * Typically returns true if the contract is not paused.
159
+ * @param input - The current state of the NFT.
160
+ * @param output - The desired new state of the NFT.
161
+ * @returns A `Bool` indicating whether the update is allowed.
162
+ */
163
+ @method.returns(Bool)
164
+ async canUpdate(input: NFTState, output: NFTState): Promise<Bool> {
165
+ return Bool(true);
166
+ }
167
+
168
+ /**
169
+ * Determines whether a transfer between the specified addresses is permitted.
170
+ * @param transferEvent - The transfer event details.
171
+ * @returns A `Bool` indicating whether the transfer is allowed.
172
+ */
173
+ @method.returns(Bool)
174
+ async canTransfer(transferEvent: TransferEvent): Promise<Bool> {
175
+ return Bool(true);
176
+ }
177
+
178
+ /**
179
+ * Pauses the contract, disabling certain administrative actions.
180
+ * Can only be called by the admin if `canPause` is `true`.
181
+ */
182
+ @method
183
+ async pause(): Promise<void> {
184
+ await this.ensureOwnerSignature();
185
+ this.canBePaused.getAndRequireEquals().assertTrue();
186
+ this.isPaused.set(Bool(true));
187
+ this.emitEvent("pause", new PauseEvent({ isPaused: Bool(true) }));
188
+ }
189
+
190
+ /**
191
+ * Resumes the contract, re-enabling administrative actions.
192
+ * Can only be called by the admin if `canPause` is `true`.
193
+ */
194
+ @method
195
+ async resume(): Promise<void> {
196
+ await this.ensureOwnerSignature();
197
+ this.canBePaused.getAndRequireEquals().assertTrue();
198
+ this.isPaused.set(Bool(false));
199
+ this.emitEvent("resume", new PauseEvent({ isPaused: Bool(false) }));
200
+ }
201
+
202
+ /**
203
+ * Transfers ownership of the contract to a new admin.
204
+ * @param to - The public key of the new owner.
205
+ * @returns The public key of the previous owner.
206
+ */
207
+ @method.returns(PublicKey)
208
+ async transferOwnership(to: PublicKey): Promise<PublicKey> {
209
+ const isPaused = this.isPaused.getAndRequireEquals();
210
+ isPaused.assertTrue("Contract is paused");
211
+ await this.ensureOwnerSignature();
212
+ const from = this.admin.getAndRequireEquals();
213
+ this.admin.set(to);
214
+ this.emitEvent(
215
+ "ownershipChange",
216
+ new OwnershipChangeEvent({
217
+ from,
218
+ to,
219
+ })
220
+ );
221
+ return from;
222
+ }
223
+
224
+ @method.returns(Bool)
225
+ async canChangeVerificationKey(
226
+ vk: VerificationKey,
227
+ address: PublicKey,
228
+ tokenId: Field
229
+ ): Promise<Bool> {
230
+ await this.ensureOwnerSignature();
231
+ return Bool(true);
232
+ }
233
+
234
+ /**
235
+ * Determines if the name can be changed for a Collection.
236
+ */
237
+ @method.returns(Bool)
238
+ async canChangeName(name: Field): Promise<Bool> {
239
+ return Bool(false);
240
+ }
241
+
242
+ /**
243
+ * Determines if the creator can be changed for a Collection.
244
+ */
245
+ @method.returns(Bool)
246
+ async canChangeCreator(creator: PublicKey): Promise<Bool> {
247
+ return Bool(false);
248
+ }
249
+
250
+ /**
251
+ * Determines if the base URI can be changed for a Collection.
252
+ */
253
+ @method.returns(Bool)
254
+ async canChangeBaseUri(baseUri: Field): Promise<Bool> {
255
+ return Bool(false);
256
+ }
257
+
258
+ /**
259
+ * Determines if the royalty fee can be changed for a Collection.
260
+ */
261
+ @method.returns(Bool)
262
+ async canChangeRoyalty(royaltyFee: UInt32): Promise<Bool> {
263
+ await this.ensureOwnerSignature();
264
+ return this.allowChangeRoyalty.getAndRequireEquals();
265
+ }
266
+
267
+ /**
268
+ * Determines if the transfer fee can be changed for a Collection.
269
+ */
270
+ @method.returns(Bool)
271
+ async canChangeTransferFee(transferFee: UInt64): Promise<Bool> {
272
+ await this.ensureOwnerSignature();
273
+ return this.allowChangeTransferFee.getAndRequireEquals();
274
+ }
275
+
276
+ /**
277
+ * Determines if the admin contract can be changed for a Collection.
278
+ */
279
+ @method.returns(Bool)
280
+ async canSetAdmin(admin: PublicKey): Promise<Bool> {
281
+ return Bool(false);
282
+ }
283
+
284
+ /**
285
+ * Determines if the collection can be paused.
286
+ */
287
+ @method.returns(Bool)
288
+ async canPause(): Promise<Bool> {
289
+ await this.ensureOwnerSignature();
290
+ return this.canBePaused.getAndRequireEquals();
291
+ }
292
+
293
+ /**
294
+ * Determines if the collection can be resumed.
295
+ */
296
+ @method.returns(Bool)
297
+ async canResume(): Promise<Bool> {
298
+ await this.ensureOwnerSignature();
299
+ return this.canBePaused.getAndRequireEquals();
300
+ }
301
+ }