@etherisc/gif-next 0.0.2-f0d86c2-077 → 0.0.2-f2b0fa2-473

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 (360) hide show
  1. package/README.md +176 -11
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +1 -1
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +168 -28
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +610 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +1 -1
  7. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +121 -28
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +74 -181
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +55 -177
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +447 -60
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +519 -70
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +2 -2
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +2 -2
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  44. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +4 -0
  45. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +101 -0
  46. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +4 -0
  47. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +1119 -0
  48. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +4 -0
  49. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +1082 -0
  50. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +234 -1749
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{base/ServiceBase.sol/ServiceBase.json → IInstanceService.sol/IInstanceService.json} +182 -61
  54. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/Instance.sol/Instance.json +2415 -1152
  56. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  57. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +917 -0
  58. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1257 -0
  60. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +703 -0
  62. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +424 -0
  64. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +224 -43
  66. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +1 -1
  67. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +51 -1
  68. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  69. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +45 -127
  70. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  72. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +55 -245
  73. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  74. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +4 -4
  75. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  76. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +211 -0
  77. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  78. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  79. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  80. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IDistribution.sol/IDistribution.json} +2 -2
  81. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  82. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  83. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  84. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  85. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  86. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  87. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  88. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  89. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +381 -77
  91. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +1 -1
  92. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +177 -75
  93. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
  95. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +235 -50
  97. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  98. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +325 -51
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  100. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +186 -12
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  102. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +190 -51
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  104. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +872 -0
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  106. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  107. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  108. package/artifacts/contracts/registry/Registry.sol/Registry.json +380 -139
  109. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1261 -0
  111. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +504 -0
  113. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  114. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  115. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  116. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  117. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  118. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  119. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  120. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +117 -37
  121. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  122. package/artifacts/contracts/{instance/base → shared}/IService.sol/IService.json +175 -54
  123. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  124. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -14
  125. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  126. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  127. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  128. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  129. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +190 -37
  131. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  132. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/RegisterableUpgradable.sol/RegisterableUpgradable.json} +199 -83
  133. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  134. package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
  135. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  136. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  137. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  138. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  139. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  140. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -14
  141. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  142. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  143. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  144. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +204 -36
  145. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  146. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  147. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  148. package/artifacts/contracts/test/TestService.sol/TestService.json +283 -62
  149. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  150. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  151. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  152. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  153. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  154. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +103 -23
  155. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  156. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  157. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  158. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  159. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  160. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  161. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  162. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  163. package/artifacts/contracts/types/Fee.sol/FeeLib.json +52 -13
  164. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  165. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  166. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  167. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  168. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  169. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  170. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  171. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  172. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  174. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  175. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  176. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  177. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  178. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  180. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  181. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  182. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +15 -2
  184. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  185. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  186. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  188. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/Version.sol/VersionLib.json +40 -2
  190. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
  192. package/contracts/components/BaseComponent.sol +20 -22
  193. package/contracts/components/Distribution.sol +166 -0
  194. package/contracts/components/IBaseComponent.sol +8 -3
  195. package/contracts/components/IDistributionComponent.sol +43 -0
  196. package/contracts/components/IPoolComponent.sol +14 -9
  197. package/contracts/components/IProductComponent.sol +25 -9
  198. package/contracts/components/Pool.sol +115 -30
  199. package/contracts/components/Product.sol +212 -32
  200. package/contracts/experiment/cloning/Cloner.sol +47 -0
  201. package/contracts/instance/AccessManagedSimple.sol +114 -0
  202. package/contracts/instance/AccessManagerSimple.sol +682 -0
  203. package/contracts/instance/IAccessManagerSimple.sol +391 -0
  204. package/contracts/instance/IInstance.sol +17 -41
  205. package/contracts/instance/IInstanceService.sol +17 -0
  206. package/contracts/instance/Instance.sol +420 -52
  207. package/contracts/instance/InstanceAccessManager.sol +288 -0
  208. package/contracts/instance/InstanceReader.sol +280 -0
  209. package/contracts/instance/InstanceService.sol +102 -0
  210. package/contracts/instance/InstanceServiceManager.sol +56 -0
  211. package/contracts/instance/base/ComponentServiceBase.sol +15 -8
  212. package/contracts/instance/base/IInstanceBase.sol +11 -2
  213. package/contracts/instance/base/IKeyValueStore.sol +13 -13
  214. package/contracts/instance/base/ILifecycle.sol +3 -3
  215. package/contracts/instance/base/KeyValueStore.sol +53 -37
  216. package/contracts/instance/base/Lifecycle.sol +16 -11
  217. package/contracts/instance/module/IAccess.sol +38 -0
  218. package/contracts/instance/module/IBundle.sol +19 -0
  219. package/contracts/instance/module/IDistribution.sol +39 -0
  220. package/contracts/instance/module/IPolicy.sol +45 -0
  221. package/contracts/instance/module/IRisk.sol +11 -0
  222. package/contracts/instance/module/ISetup.sol +43 -0
  223. package/contracts/instance/module/ITreasury.sol +23 -0
  224. package/contracts/instance/service/ComponentOwnerService.sol +244 -97
  225. package/contracts/instance/service/IComponentOwnerService.sol +1 -3
  226. package/contracts/instance/service/IDistributionService.sol +12 -0
  227. package/contracts/instance/service/IPoolService.sol +8 -1
  228. package/contracts/instance/service/IProductService.sol +56 -7
  229. package/contracts/registry/ChainNft.sol +80 -37
  230. package/contracts/registry/IRegistry.sol +28 -28
  231. package/contracts/registry/IRegistryService.sol +35 -0
  232. package/contracts/registry/ITransferInterceptor.sol +6 -0
  233. package/contracts/registry/Registry.sol +315 -273
  234. package/contracts/registry/RegistryService.sol +439 -0
  235. package/contracts/registry/RegistryServiceManager.sol +64 -0
  236. package/contracts/shared/ContractDeployerLib.sol +72 -0
  237. package/contracts/shared/INftOwnable.sol +22 -0
  238. package/contracts/shared/IRegisterable.sol +8 -15
  239. package/contracts/{instance/base → shared}/IService.sol +3 -3
  240. package/contracts/shared/IVersionable.sol +55 -11
  241. package/contracts/shared/NftOwnable.sol +136 -0
  242. package/contracts/shared/ProxyManager.sol +94 -0
  243. package/contracts/shared/Registerable.sol +62 -59
  244. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  245. package/contracts/shared/Service.sol +54 -0
  246. package/contracts/shared/TokenHandler.sol +27 -0
  247. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  248. package/contracts/shared/Versionable.sol +113 -55
  249. package/contracts/test/TestFee.sol +2 -2
  250. package/contracts/test/TestRegisterable.sol +5 -6
  251. package/contracts/test/TestRoleId.sol +1 -1
  252. package/contracts/test/TestService.sol +5 -13
  253. package/contracts/types/DistributorType.sol +55 -0
  254. package/contracts/types/Fee.sol +10 -5
  255. package/contracts/types/Key32.sol +8 -3
  256. package/contracts/types/NumberId.sol +52 -0
  257. package/contracts/types/ObjectType.sol +51 -14
  258. package/contracts/types/Referral.sol +85 -0
  259. package/contracts/types/RiskId.sol +43 -0
  260. package/contracts/types/RoleId.sol +54 -10
  261. package/contracts/types/StateId.sol +1 -1
  262. package/contracts/types/Timestamp.sol +7 -3
  263. package/contracts/types/UFixed.sol +128 -12
  264. package/contracts/types/Version.sol +9 -0
  265. package/package.json +4 -3
  266. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  267. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  268. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  269. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  270. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  271. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  272. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  273. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  274. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  275. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  276. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  277. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  278. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  279. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  280. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  281. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  282. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  283. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  284. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  285. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  286. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  287. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  288. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  289. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  290. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  291. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  292. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  293. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  294. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  295. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  296. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  297. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  298. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  299. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  300. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  301. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  302. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  303. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  304. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  305. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  306. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  307. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  308. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  309. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  310. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  311. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  312. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  313. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  314. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  315. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  316. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  317. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  318. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  319. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  320. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  321. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  322. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  323. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  324. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +0 -24
  325. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  326. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  327. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  328. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  329. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  330. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  331. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  332. package/contracts/experiment/statemachine/README.md +0 -112
  333. package/contracts/instance/IInstanceLinked.sol +0 -8
  334. package/contracts/instance/base/InstanceBase.sol +0 -80
  335. package/contracts/instance/base/ModuleBase.sol +0 -52
  336. package/contracts/instance/base/ServiceBase.sol +0 -37
  337. package/contracts/instance/module/access/Access.sol +0 -149
  338. package/contracts/instance/module/access/IAccess.sol +0 -53
  339. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  340. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  341. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  342. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  343. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  344. package/contracts/instance/module/component/IComponent.sol +0 -53
  345. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  346. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  347. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  348. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  349. package/contracts/instance/module/risk/IRisk.sol +0 -10
  350. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  351. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  352. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  353. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  354. package/contracts/instance/service/PoolService.sol +0 -123
  355. package/contracts/instance/service/ProductService.sol +0 -354
  356. package/contracts/registry/IChainNft.sol +0 -21
  357. package/contracts/registry/IRegistryLinked.sol +0 -8
  358. package/contracts/shared/IOwnable.sol +0 -6
  359. package/contracts/test/TestPool.sol +0 -22
  360. package/contracts/test/TestProduct.sol +0 -44
@@ -1,16 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
- import {IChainNft} from "./IChainNft.sol";
5
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
6
6
 
7
- contract ChainNft is ERC721Enumerable, IChainNft {
8
- string public constant NAME = "Dezentralized Insurance Protocol Registry";
9
- string public constant SYMBOL = "DIPR";
7
+ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
8
+
9
+ contract ChainNft is ERC721Enumerable {
10
+
11
+ // constants
12
+ string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
+ string public constant SYMBOL = "DIPNFT";
10
14
 
11
15
  uint256 public constant PROTOCOL_NFT_ID = 1101;
12
16
  uint256 public constant GLOBAL_REGISTRY_ID = 2101;
13
17
 
18
+ // custom errors
19
+ error CallerNotRegistry(address caller);
20
+ error RegistryAddressZero();
21
+ error NftUriEmpty();
22
+ error NftUriAlreadySet();
23
+
24
+ // contract state
25
+
26
+ // remember interceptors
27
+ mapping(uint256 tokenId => address interceptor) private _interceptor;
28
+
14
29
  // remember token uri
15
30
  mapping(uint256 tokenId => string uri) private _uri;
16
31
 
@@ -25,50 +40,79 @@ contract ChainNft is ERC721Enumerable, IChainNft {
25
40
  uint256 internal _totalMinted;
26
41
 
27
42
  modifier onlyRegistry() {
28
- require(msg.sender == _registry, "ERROR:NFT-001:CALLER_NOT_REGISTRY");
43
+ if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
29
44
  _;
30
45
  }
31
46
 
32
47
  constructor(address registry) ERC721(NAME, SYMBOL) {
33
- require(registry != address(0), "ERROR:NFT-010:REGISTRY_ZERO");
48
+ if (registry == address(0)) { revert RegistryAddressZero(); }
34
49
 
35
50
  _registry = registry;
36
-
37
51
  _chainIdInt = block.chainid;
38
- _chainIdDigits = _countDigits(_chainIdInt);
52
+ _chainIdDigits = 0;
53
+
54
+ // count digis
55
+ uint256 num = _chainIdInt;
56
+ while (num != 0) {
57
+ _chainIdDigits++;
58
+ num /= 10;
59
+ }
60
+
39
61
  _chainIdMultiplier = 10 ** _chainIdDigits;
40
- _idNext = 3;
62
+ _idNext = 4;
41
63
  }
42
64
 
65
+ /**
66
+ * @dev mints a token for a specified token id
67
+ * not part of the IRegistry interface only needed for
68
+ * initial registry setup (protocol and global registry objects)
69
+ */
70
+ function mint(address to, uint256 tokenId) external onlyRegistry {
71
+ _totalMinted++;
72
+ _safeMint(to, tokenId);
73
+ }
74
+
75
+
43
76
  /**
44
77
  * @dev mints the next token to register new objects
78
+ * non-zero transferInterceptors are recorded and called during nft token transfers.
79
+ * the contract receiving such a notification may decides to revert or record the transfer
45
80
  */
46
81
  function mint(
47
82
  address to,
83
+ address interceptor,
48
84
  string memory uri
49
- ) external override onlyRegistry returns (uint256 tokenId) {
85
+ ) public onlyRegistry returns (uint256 tokenId) {
50
86
  tokenId = _getNextTokenId();
51
87
 
88
+ if (interceptor != address(0)) {
89
+ _interceptor[tokenId] = interceptor;
90
+ }
91
+
52
92
  if (bytes(uri).length > 0) {
53
93
  _uri[tokenId] = uri;
54
94
  }
55
95
 
56
- _safeMint(to, tokenId);
57
96
  _totalMinted++;
97
+ _safeMint(to, tokenId);
58
98
  }
59
99
 
100
+
60
101
  /**
61
- * @dev mints a token for a specified token id
62
- * not part of the IRegistry interface only needed for
63
- * initial registry setup (protocol and global registry objects)
64
- */
65
- function mint(address to, uint256 tokenId) external onlyRegistry {
66
- _totalMinted++;
67
- _safeMint(to, tokenId);
102
+ * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
103
+ * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
104
+ */
105
+ function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
106
+ super.transferFrom(from, to, tokenId);
107
+
108
+ if (_interceptor[tokenId] != address(0)) {
109
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
110
+ }
68
111
  }
69
112
 
70
- function burn(uint256 tokenId) external override onlyRegistry {
71
- _requireMinted(tokenId);
113
+
114
+ function burn(uint256 tokenId) external onlyRegistry {
115
+ _requireOwned(tokenId);
72
116
  _burn(tokenId);
73
117
  delete _uri[tokenId];
74
118
  }
@@ -76,29 +120,36 @@ contract ChainNft is ERC721Enumerable, IChainNft {
76
120
  function setURI(
77
121
  uint256 tokenId,
78
122
  string memory uri
79
- ) external override onlyRegistry {
80
- require(bytes(uri).length > 0, "ERROR:CRG-011:URI_EMPTY");
123
+ ) external onlyRegistry {
124
+ if (bytes(uri).length == 0) { revert NftUriEmpty(); }
125
+ if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
81
126
 
82
- _requireMinted(tokenId);
127
+ _requireOwned(tokenId);
83
128
  _uri[tokenId] = uri;
84
129
  }
85
130
 
86
- function exists(uint256 tokenId) external view override returns (bool) {
87
- return _exists(tokenId);
131
+ function exists(uint256 tokenId) external view returns (bool) {
132
+ return _ownerOf(tokenId) != address(0);
88
133
  }
89
134
 
90
135
  function tokenURI(
91
136
  uint256 tokenId
92
137
  ) public view override returns (string memory) {
93
- _requireMinted(tokenId);
138
+ // gif generally does not revert for view functions
139
+ // this is an exception to keep the openzeppelin nft semantics
140
+ _requireOwned(tokenId);
94
141
  return _uri[tokenId];
95
142
  }
96
143
 
97
- function getRegistryAddress() external view override returns (address) {
144
+ function getInterceptor(uint256 tokenId) external view returns (address) {
145
+ return _interceptor[tokenId];
146
+ }
147
+
148
+ function getRegistryAddress() external view returns (address) {
98
149
  return _registry;
99
150
  }
100
151
 
101
- function totalMinted() external view override returns (uint256) {
152
+ function totalMinted() external view returns (uint256) {
102
153
  return _totalMinted;
103
154
  }
104
155
 
@@ -148,12 +199,4 @@ contract ChainNft is ERC721Enumerable, IChainNft {
148
199
  id = calculateTokenId(_idNext);
149
200
  _idNext++;
150
201
  }
151
-
152
- function _countDigits(uint256 num) private pure returns (uint256 count) {
153
- count = 0;
154
- while (num != 0) {
155
- count++;
156
- num /= 10;
157
- }
158
- }
159
202
  }
@@ -1,57 +1,57 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
 
6
+ import {ChainNft} from "./ChainNft.sol";
6
7
  import {NftId} from "../types/NftId.sol";
7
8
  import {ObjectType} from "../types/ObjectType.sol";
8
9
  import {VersionPart} from "../types/Version.sol";
9
- import {IChainNft} from "./IChainNft.sol";
10
10
 
11
11
  interface IRegistry is IERC165 {
12
+
13
+ event LogRegistration(ObjectInfo info);
14
+
15
+ event LogServiceNameRegistration(string serviceName, VersionPart majorVersion);
16
+
17
+
12
18
  struct ObjectInfo {
13
19
  NftId nftId;
14
20
  NftId parentNftId;
15
21
  ObjectType objectType;
22
+ bool isInterceptor;
16
23
  address objectAddress;
17
24
  address initialOwner;
18
25
  bytes data;
19
- }
26
+ }// TODO delete nftId and initialOwner(if not used) from struct
20
27
 
21
- function register(address objectAddress) external returns (NftId nftId);
28
+ function register(ObjectInfo memory info) external returns (NftId nftId);
29
+
22
30
 
23
- function registerObjectForInstance(
24
- NftId parentNftid,
25
- ObjectType objectType,
26
- address initialOwner,
27
- bytes memory data
28
- ) external returns (NftId nftId);
31
+ function getObjectCount() external view returns (uint256);
29
32
 
30
- function getServiceAddress(string memory serviceName, VersionPart majorVersion) external view returns (address serviceAddress);
33
+ function getNftId(address objectAddress) external view returns (NftId nftId);
31
34
 
32
- function getObjectCount() external view returns (uint256);
35
+ function ownerOf(NftId nftId) external view returns (address);
33
36
 
34
- function getNftId() external view returns (NftId nftId);
37
+ function ownerOf(address contractAddress) external view returns (address);
35
38
 
36
- function getNftId(
37
- address objectAddress
38
- ) external view returns (NftId nftId);
39
+ function getObjectInfo(NftId nftId) external view returns (ObjectInfo memory info);
39
40
 
40
- function getObjectInfo(
41
- NftId nftId
42
- ) external view returns (ObjectInfo memory info);
41
+ function getObjectInfo(address object) external view returns (ObjectInfo memory info);
43
42
 
44
- function getName(
45
- NftId nftId
46
- ) external view returns (string memory name);
43
+ function isRegistered(NftId nftId) external view returns (bool);
47
44
 
48
- function getProtocolOwner() external view returns (address);
45
+ function isRegistered(address contractAddress) external view returns (bool);
49
46
 
50
- function getOwner(NftId nftId) external view returns (address ownerAddress);
47
+ function getServiceName(NftId nftId) external view returns (string memory name);
51
48
 
52
- function isRegistered(NftId nftId) external view returns (bool);
49
+ function getServiceAddress(
50
+ string memory serviceName,
51
+ VersionPart majorVersion
52
+ ) external view returns (address serviceAddress);
53
53
 
54
- function isRegistered(address objectAddress) external view returns (bool);
54
+ function getChainNft() external view returns (ChainNft);
55
55
 
56
- function getChainNft() external view returns (IChainNft);
57
- }
56
+ function getOwner() external view returns (address);
57
+ }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../types/NftId.sol";
5
+ import {ObjectType} from "../types/ObjectType.sol";
6
+ import {RoleId} from "../types/RoleId.sol";
7
+ import {IService} from "../shared/IService.sol";
8
+ import {IRegistry} from "./IRegistry.sol";
9
+
10
+ import {IRegisterable} from "../shared/IRegisterable.sol";
11
+ import {IBaseComponent} from "../components/IBaseComponent.sol";
12
+
13
+ interface IRegistryService is IService {
14
+
15
+ function registerToken(address tokenAddress) external returns(NftId nftId);
16
+
17
+ function registerService(IService service) external returns(IRegistry.ObjectInfo memory info, bytes memory data);
18
+
19
+ function registerInstance(IRegisterable instance)
20
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
21
+
22
+ function registerProduct(IBaseComponent product, address owner)
23
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
24
+
25
+ function registerPool(IBaseComponent pool, address owner)
26
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
27
+
28
+ function registerDistribution(IBaseComponent distribution, address owner)
29
+ external returns(IRegistry.ObjectInfo memory info, bytes memory data);
30
+
31
+ function registerPolicy(IRegistry.ObjectInfo memory info) external returns(NftId nftId); // -> easy to upgrade
32
+
33
+ function registerBundle(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
34
+ }
35
+
@@ -0,0 +1,6 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ interface ITransferInterceptor {
5
+ function nftTransferFrom(address from, address to, uint256 tokenId) external;
6
+ }