Smart Contract

FanTopPermission

A.86185fba578bc773.FanTopPermission

Deployed

16h ago
Feb 28, 2026, 02:31:19 AM UTC

Dependents

0 imports
1import FanTopToken from 0x86185fba578bc773
2
3/*
4 DEPRECATED
5 */
6access(all) contract FanTopPermission {
7    access(all) enum Role: UInt8 {
8        access(all) case owner
9        access(all) case admin
10        access(all) case operator
11        access(all) case minter
12    }
13
14    access(all) event PermissionAdded(target: Address, role: UInt8)
15    access(all) event PermissionRemoved(target: Address, role: UInt8)
16
17    access(all) let receiverStoragePath: StoragePath
18    access(all) let receiverPublicPath: PublicPath
19
20    access(all) resource Owner {
21    }
22
23    access(all) resource Admin {
24    }
25
26    access(all) resource Operator {
27    }
28
29    access(all) resource Minter {
30    }
31
32    access(all) resource interface Receiver {
33    }
34
35    access(all) resource Holder: Receiver {
36        access(contract) let recipient: Address
37        access(self) let roles: { Role: Capability }
38
39        access(contract) init(recipient: Address) {
40            self.recipient = recipient
41            self.roles = {}
42        }
43    }
44
45    access(self) let permissions: { Address: { Role: Bool } }
46    access(self) let capabilities: { Role: Capability }
47
48    init() {
49        self.receiverStoragePath = /storage/FanTopPermission
50        self.receiverPublicPath = /public/FanTopPermission
51
52        self.permissions = {}
53        self.account.storage.save<@Owner>(<- create Owner(), to: /storage/FanTopOwner)
54        self.account.storage.save<@Admin>(<- create Admin(), to: /storage/FanTopAdmin)
55        self.account.storage.save<@Operator>(<- create Operator(), to: /storage/FanTopOperator)
56        self.account.storage.save<@Minter>(<- create Minter(), to: /storage/FanTopMinter)
57
58        self.capabilities = {}
59        self.capabilities[Role.admin] = self.account.capabilities.storage.issue<&Admin>(/storage/FanTopAdmin)
60        self.capabilities[Role.operator] = self.account.capabilities.storage.issue<&Operator>(/storage/FanTopOperator)
61        self.capabilities[Role.minter] = self.account.capabilities.storage.issue<&Minter>(/storage/FanTopMinter)
62    }
63}
64