Smart Contract
FTVaultFactory
A.d8a7e05a7ac670c0.FTVaultFactory
1import CapabilityFactory from 0xd8a7e05a7ac670c0
2import FungibleToken from 0xf233dcee88fe0abe
3
4access(all) contract FTVaultFactory {
5 access(all) struct WithdrawFactory: CapabilityFactory.Factory {
6 access(all) view fun getCapability(acct: auth(Capabilities) &Account, controllerID: UInt64): Capability? {
7 if let con = acct.capabilities.storage.getController(byCapabilityID: controllerID) {
8 if !con.capability.check<auth(FungibleToken.Withdraw) &{FungibleToken.Vault}>() {
9 return nil
10 }
11
12 return con.capability as! Capability<auth(FungibleToken.Withdraw) &{FungibleToken.Vault}>
13 }
14
15 return nil
16 }
17
18 access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19 return nil
20 }
21 }
22
23 access(all) struct Factory: CapabilityFactory.Factory {
24 access(all) view fun getCapability(acct: auth(Capabilities) &Account, controllerID: UInt64): Capability? {
25 if let con = acct.capabilities.storage.getController(byCapabilityID: controllerID) {
26 if !con.capability.check<&{FungibleToken.Vault}>() {
27 return nil
28 }
29
30 return con.capability as! Capability<&{FungibleToken.Vault}>
31 }
32
33 return nil
34 }
35
36 access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
37 let cap = acct.capabilities.get<&{FungibleToken.Vault}>(path)
38 if !cap.check() {
39 return nil
40 }
41
42 return cap
43
44 }
45 }
46}