@flowtyio/flow-contracts 0.1.0-beta.2 → 0.1.0-beta.21

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 (44) hide show
  1. package/contracts/Burner.cdc +44 -0
  2. package/contracts/FlowStorageFees.cdc +15 -15
  3. package/contracts/FlowToken.cdc +29 -78
  4. package/contracts/FungibleToken.cdc +80 -53
  5. package/contracts/FungibleTokenMetadataViews.cdc +13 -25
  6. package/contracts/MetadataViews.cdc +107 -50
  7. package/contracts/NonFungibleToken.cdc +110 -60
  8. package/contracts/TokenForwarding.cdc +19 -11
  9. package/contracts/ViewResolver.cdc +20 -16
  10. package/contracts/dapper/DapperUtilityCoin.cdc +106 -39
  11. package/contracts/dapper/FlowUtilityToken.cdc +107 -40
  12. package/contracts/dapper/TopShot.cdc +323 -259
  13. package/contracts/dapper/TopShotLocking.cdc +41 -15
  14. package/contracts/dapper/offers/DapperOffersV2.cdc +36 -40
  15. package/contracts/dapper/offers/OffersV2.cdc +52 -51
  16. package/contracts/dapper/offers/Resolver.cdc +13 -12
  17. package/contracts/emerald-city/FLOAT.cdc +259 -254
  18. package/contracts/example/ExampleNFT.cdc +419 -0
  19. package/contracts/example/ExampleToken.cdc +302 -0
  20. package/contracts/find/FindViews.cdc +357 -353
  21. package/contracts/flow-utils/AddressUtils.cdc +20 -23
  22. package/contracts/flow-utils/ArrayUtils.cdc +10 -11
  23. package/contracts/flow-utils/ScopedFTProviders.cdc +27 -19
  24. package/contracts/flow-utils/ScopedNFTProviders.cdc +31 -26
  25. package/contracts/flow-utils/StringUtils.cdc +24 -37
  26. package/contracts/hybrid-custody/CapabilityDelegator.cdc +29 -26
  27. package/contracts/hybrid-custody/CapabilityFactory.cdc +21 -18
  28. package/contracts/hybrid-custody/CapabilityFilter.cdc +42 -24
  29. package/contracts/hybrid-custody/HybridCustody.cdc +303 -242
  30. package/contracts/hybrid-custody/factories/FTAllFactory.cdc +16 -4
  31. package/contracts/hybrid-custody/factories/FTBalanceFactory.cdc +16 -4
  32. package/contracts/hybrid-custody/factories/FTProviderFactory.cdc +17 -5
  33. package/contracts/hybrid-custody/factories/FTReceiverBalanceFactory.cdc +16 -4
  34. package/contracts/hybrid-custody/factories/FTReceiverFactory.cdc +16 -4
  35. package/contracts/hybrid-custody/factories/FTVaultFactory.cdc +45 -0
  36. package/contracts/hybrid-custody/factories/NFTCollectionFactory.cdc +45 -0
  37. package/contracts/hybrid-custody/factories/NFTCollectionPublicFactory.cdc +16 -4
  38. package/contracts/hybrid-custody/factories/NFTProviderAndCollectionPublicFactory.cdc +16 -4
  39. package/contracts/hybrid-custody/factories/NFTProviderFactory.cdc +16 -4
  40. package/contracts/lost-and-found/LostAndFound.cdc +14 -14
  41. package/contracts/nft-catalog/NFTCatalog.cdc +60 -64
  42. package/contracts/nft-catalog/NFTCatalogAdmin.cdc +28 -27
  43. package/flow.json +38 -1
  44. package/package.json +1 -1
@@ -1,10 +1,22 @@
1
1
  import "CapabilityFactory"
2
2
  import "FungibleToken"
3
3
 
4
- pub contract FTAllFactory {
5
- pub struct Factory: CapabilityFactory.Factory {
6
- pub fun getCapability(acct: &AuthAccount, path: CapabilityPath): Capability {
7
- return acct.getCapability<&{FungibleToken.Provider, FungibleToken.Balance, FungibleToken.Receiver}>(path)
4
+ access(all) contract FTAllFactory {
5
+ access(all) struct Factory: 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.Provider, FungibleToken.Receiver, FungibleToken.Balance}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<auth(FungibleToken.Withdraw) &{FungibleToken.Provider, FungibleToken.Receiver, FungibleToken.Balance}>
13
+ }
14
+
15
+ return nil
16
+ }
17
+
18
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19
+ return nil
8
20
  }
9
21
  }
10
22
  }
@@ -1,10 +1,22 @@
1
1
  import "CapabilityFactory"
2
2
  import "FungibleToken"
3
3
 
4
- pub contract FTBalanceFactory {
5
- pub struct Factory: CapabilityFactory.Factory {
6
- pub fun getCapability(acct: &AuthAccount, path: CapabilityPath): Capability {
7
- return acct.getCapability<&{FungibleToken.Balance}>(path)
4
+ access(all) contract FTBalanceFactory {
5
+ access(all) struct Factory: 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<&{FungibleToken.Balance}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<&{FungibleToken.Balance}>
13
+ }
14
+
15
+ return nil
16
+ }
17
+
18
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19
+ return acct.capabilities.get<&{FungibleToken.Balance}>(path)
8
20
  }
9
21
  }
10
22
  }
@@ -1,10 +1,22 @@
1
1
  import "CapabilityFactory"
2
2
  import "FungibleToken"
3
3
 
4
- pub contract FTProviderFactory {
5
- pub struct Factory: CapabilityFactory.Factory {
6
- pub fun getCapability(acct: &AuthAccount, path: CapabilityPath): Capability {
7
- return acct.getCapability<&{FungibleToken.Provider}>(path)
4
+ access(all) contract FTProviderFactory {
5
+ access(all) struct Factory: 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.Provider}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<auth(FungibleToken.Withdraw) &{FungibleToken.Provider}>
13
+ }
14
+
15
+ return nil
16
+ }
17
+
18
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19
+ return nil
8
20
  }
9
21
  }
10
- }
22
+ }
@@ -1,10 +1,22 @@
1
1
  import "CapabilityFactory"
2
2
  import "FungibleToken"
3
3
 
4
- pub contract FTReceiverBalanceFactory {
5
- pub struct Factory: CapabilityFactory.Factory {
6
- pub fun getCapability(acct: &AuthAccount, path: CapabilityPath): Capability {
7
- return acct.getCapability<&{FungibleToken.Receiver, FungibleToken.Balance}>(path)
4
+ access(all) contract FTReceiverBalanceFactory {
5
+ access(all) struct Factory: 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<&{FungibleToken.Receiver, FungibleToken.Balance}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<&{FungibleToken.Receiver, FungibleToken.Balance}>
13
+ }
14
+
15
+ return nil
16
+ }
17
+
18
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19
+ return acct.capabilities.get<&{FungibleToken.Receiver, FungibleToken.Balance}>(path)
8
20
  }
9
21
  }
10
22
  }
@@ -1,10 +1,22 @@
1
1
  import "CapabilityFactory"
2
2
  import "FungibleToken"
3
3
 
4
- pub contract FTReceiverFactory {
5
- pub struct Factory: CapabilityFactory.Factory {
6
- pub fun getCapability(acct: &AuthAccount, path: CapabilityPath): Capability {
7
- return acct.getCapability<&{FungibleToken.Receiver}>(path)
4
+ access(all) contract FTReceiverFactory {
5
+ access(all) struct Factory: 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<&{FungibleToken.Receiver}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<&{FungibleToken.Receiver}>
13
+ }
14
+
15
+ return nil
16
+ }
17
+
18
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19
+ return acct.capabilities.get<&{FungibleToken.Receiver}>(path)
8
20
  }
9
21
  }
10
22
  }
@@ -0,0 +1,45 @@
1
+ import "CapabilityFactory"
2
+ import "FungibleToken"
3
+
4
+ access(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
+ }
@@ -0,0 +1,45 @@
1
+ import "CapabilityFactory"
2
+ import "NonFungibleToken"
3
+
4
+ access(all) contract NFTProviderAndCollectionFactory {
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(NonFungibleToken.Withdraw) &{NonFungibleToken.Collection}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<auth(NonFungibleToken.Withdraw) &{NonFungibleToken.Collection}>
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<&{NonFungibleToken.Collection}>() {
27
+ return nil
28
+ }
29
+
30
+ return con.capability as! Capability<&{NonFungibleToken.Collection}>
31
+ }
32
+
33
+ return nil
34
+ }
35
+
36
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
37
+ let cap = acct.capabilities.get<&{NonFungibleToken.Collection}>(path)
38
+ if !cap.check() {
39
+ return nil
40
+ }
41
+
42
+ return cap
43
+ }
44
+ }
45
+ }
@@ -1,10 +1,22 @@
1
1
  import "CapabilityFactory"
2
2
  import "NonFungibleToken"
3
3
 
4
- pub contract NFTCollectionPublicFactory {
5
- pub struct Factory: CapabilityFactory.Factory {
6
- pub fun getCapability(acct: &AuthAccount, path: CapabilityPath): Capability {
7
- return acct.getCapability<&{NonFungibleToken.CollectionPublic}>(path)
4
+ access(all) contract NFTCollectionPublicFactory {
5
+ access(all) struct Factory: 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<&{NonFungibleToken.CollectionPublic}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<&{NonFungibleToken.CollectionPublic}>
13
+ }
14
+
15
+ return nil
16
+ }
17
+
18
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19
+ return acct.capabilities.get<&{NonFungibleToken.CollectionPublic}>(path)
8
20
  }
9
21
  }
10
22
  }
@@ -1,10 +1,22 @@
1
1
  import "CapabilityFactory"
2
2
  import "NonFungibleToken"
3
3
 
4
- pub contract NFTProviderAndCollectionFactory {
5
- pub struct Factory: CapabilityFactory.Factory {
6
- pub fun getCapability(acct: &AuthAccount, path: CapabilityPath): Capability {
7
- return acct.getCapability<&{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>(path)
4
+ access(all) contract NFTProviderAndCollectionPublicFactory {
5
+ access(all) struct Factory: 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(NonFungibleToken.Withdraw) &{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<auth(NonFungibleToken.Withdraw) &{NonFungibleToken.Provider, NonFungibleToken.CollectionPublic}>
13
+ }
14
+
15
+ return nil
16
+ }
17
+
18
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19
+ return nil
8
20
  }
9
21
  }
10
22
  }
@@ -1,10 +1,22 @@
1
1
  import "CapabilityFactory"
2
2
  import "NonFungibleToken"
3
3
 
4
- pub contract NFTProviderFactory {
5
- pub struct Factory: CapabilityFactory.Factory {
6
- pub fun getCapability(acct: &AuthAccount, path: CapabilityPath): Capability {
7
- return acct.getCapability<&{NonFungibleToken.Provider}>(path)
4
+ access(all) contract NFTProviderFactory {
5
+ access(all) struct Factory: 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(NonFungibleToken.Withdraw) &{NonFungibleToken.Provider}>() {
9
+ return nil
10
+ }
11
+
12
+ return con.capability as! Capability<auth(NonFungibleToken.Withdraw) &{NonFungibleToken.Provider}>
13
+ }
14
+
15
+ return nil
16
+ }
17
+
18
+ access(all) view fun getPublicCapability(acct: &Account, path: PublicPath): Capability? {
19
+ return nil
8
20
  }
9
21
  }
10
22
  }
@@ -125,7 +125,7 @@ access(all) contract LostAndFound {
125
125
  if self.type.isSubtype(of: Type<@{NonFungibleToken.NFT}>()) {
126
126
  let ref = (&self.item as &AnyResource?)!
127
127
  let nft = ref as! &{NonFungibleToken.NFT}
128
- return nft.getID()
128
+ return nft.id
129
129
  }
130
130
  return nil
131
131
  }
@@ -135,7 +135,7 @@ access(all) contract LostAndFound {
135
135
  if self.type.isSubtype(of: Type<@{FungibleToken.Vault}>()) {
136
136
  let ref = (&self.item as &AnyResource?)!
137
137
  let ft = ref as! &{FungibleToken.Vault}
138
- return ft.getBalance()
138
+ return ft.balance
139
139
  }
140
140
  return nil
141
141
  }
@@ -149,8 +149,8 @@ access(all) contract LostAndFound {
149
149
  var redeemableItem <- self.item <- nil
150
150
  let cap = receiver.borrow<&AnyResource>()!
151
151
 
152
- if cap.isInstance(Type<@{NonFungibleToken.Collection}>()) {
153
- let target = receiver.borrow<&{NonFungibleToken.Collection}>()!
152
+ if cap.isInstance(Type<@{NonFungibleToken.CollectionPublic}>()) {
153
+ let target = receiver.borrow<&{NonFungibleToken.CollectionPublic}>()!
154
154
  let token <- redeemableItem as! @{NonFungibleToken.NFT}?
155
155
  self.redeemed = true
156
156
  emit TicketRedeemed(redeemer: self.redeemer, ticketID: self.uuid, type: token.getType())
@@ -391,8 +391,8 @@ access(all) contract LostAndFound {
391
391
  }
392
392
  }
393
393
 
394
- access(contract) fun getFlowProvider(): auth(FungibleToken.Withdrawable) &FlowToken.Vault {
395
- return self.account.storage.borrow<auth(FungibleToken.Withdrawable) &FlowToken.Vault>(from: /storage/flowTokenVault)!
394
+ access(contract) fun getFlowProvider(): auth(FungibleToken.Withdraw) &FlowToken.Vault {
395
+ return self.account.storage.borrow<auth(FungibleToken.Withdraw) &FlowToken.Vault>(from: /storage/flowTokenVault)!
396
396
  }
397
397
 
398
398
  // ShelfManager is a light-weight wrapper to get our shelves into storage.
@@ -422,7 +422,7 @@ access(all) contract LostAndFound {
422
422
  item: @AnyResource,
423
423
  memo: String?,
424
424
  display: MetadataViews.Display?,
425
- storagePayment: auth(FungibleToken.Withdrawable) &{FungibleToken.Vault},
425
+ storagePayment: auth(FungibleToken.Withdraw) &{FungibleToken.Vault},
426
426
  flowTokenRepayment: Capability<&FlowToken.Vault>?
427
427
  ) : UInt64 {
428
428
  pre {
@@ -566,9 +566,9 @@ access(all) contract LostAndFound {
566
566
  memo: String?,
567
567
  display: MetadataViews.Display?
568
568
  ) {
569
- if cap.check<&{NonFungibleToken.Collection}>() {
569
+ if cap.check<&{NonFungibleToken.CollectionPublic}>() {
570
570
  let nft <- item as! @{NonFungibleToken.NFT}
571
- cap.borrow<&{NonFungibleToken.Collection}>()!.deposit(token: <-nft)
571
+ cap.borrow<&{NonFungibleToken.CollectionPublic}>()!.deposit(token: <-nft)
572
572
  } else if cap.check<&{FungibleToken.Receiver}>() {
573
573
  let vault <- item as! @{FungibleToken.Vault}
574
574
  cap.borrow<&{FungibleToken.Receiver}>()!.deposit(from: <-vault)
@@ -598,7 +598,7 @@ access(all) contract LostAndFound {
598
598
  init(_ flowTokenRepayment: Capability<&FlowToken.Vault>, lowBalanceThreshold: UFix64?) {
599
599
  self.flowTokenRepayment = flowTokenRepayment
600
600
 
601
- let vault <- FlowToken.createEmptyVault()
601
+ let vault <- FlowToken.createEmptyVault(vaultType: Type<@FlowToken.Vault>())
602
602
  self.flowTokenVault <- vault
603
603
  self.lowBalanceThreshold = lowBalanceThreshold
604
604
  }
@@ -713,7 +713,7 @@ access(all) contract LostAndFound {
713
713
  item: @AnyResource,
714
714
  memo: String?,
715
715
  display: MetadataViews.Display?,
716
- storagePayment: auth(FungibleToken.Withdrawable) &{FungibleToken.Vault},
716
+ storagePayment: auth(FungibleToken.Withdraw) &{FungibleToken.Vault},
717
717
  flowTokenRepayment: Capability<&FlowToken.Vault>?
718
718
  ) : UInt64 {
719
719
  pre {
@@ -730,12 +730,12 @@ access(all) contract LostAndFound {
730
730
  cap: Capability,
731
731
  memo: String?,
732
732
  display: MetadataViews.Display?,
733
- storagePayment: auth(FungibleToken.Withdrawable) &{FungibleToken.Vault},
733
+ storagePayment: auth(FungibleToken.Withdraw) &{FungibleToken.Vault},
734
734
  flowTokenRepayment: Capability<&FlowToken.Vault>
735
735
  ) {
736
- if cap.check<&{NonFungibleToken.Collection}>() {
736
+ if cap.check<&{NonFungibleToken.CollectionPublic}>() {
737
737
  let nft <- item as! @{NonFungibleToken.NFT}
738
- cap.borrow<&{NonFungibleToken.Collection}>()!.deposit(token: <-nft)
738
+ cap.borrow<&{NonFungibleToken.CollectionPublic}>()!.deposit(token: <-nft)
739
739
  } else if cap.check<&{FungibleToken.Receiver}>() {
740
740
  let vault <- item as! @{FungibleToken.Vault}
741
741
  cap.borrow<&{FungibleToken.Receiver}>()!.deposit(from: <-vault)