@etherisc/gif-next 0.0.2-851536d → 0.0.2-86f4673-518

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 (421) hide show
  1. package/README.md +436 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +735 -30
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1140 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +292 -224
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +708 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +894 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +813 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1216 -76
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +1148 -102
  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/Require.sol/Require.json +2 -2
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  28. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  30. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  32. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  33. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  39. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  40. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  41. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  42. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  43. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  44. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  45. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  46. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  47. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  48. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  49. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  50. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  51. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  52. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  54. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  55. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  56. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1592 -476
  58. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  59. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +674 -0
  60. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  61. package/artifacts/contracts/instance/Instance.sol/Instance.json +2653 -518
  62. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  63. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1386 -0
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1260 -0
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +610 -0
  70. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  71. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  72. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +754 -0
  74. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  76. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  78. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  79. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  80. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  82. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  84. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  86. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  88. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  90. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  92. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/ISetup.sol/ISetup.json} +2 -2
  94. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  96. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1117 -0
  98. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1318 -0
  100. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +586 -0
  102. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +923 -0
  104. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +574 -0
  106. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +638 -0
  108. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +798 -0
  110. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +459 -0
  112. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +784 -0
  114. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +512 -0
  116. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +549 -0
  118. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1378 -0
  120. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +642 -0
  122. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +957 -0
  124. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +574 -0
  126. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +1007 -0
  128. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +574 -0
  130. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  131. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  132. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  133. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +519 -61
  134. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  135. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +999 -0
  136. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  138. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  139. package/artifacts/contracts/registry/Registry.sol/Registry.json +567 -75
  140. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  141. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  142. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  143. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1351 -0
  144. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +601 -0
  146. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  147. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  148. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  149. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +531 -0
  150. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  151. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  152. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  154. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  155. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +68 -70
  156. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  157. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -53
  158. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +214 -0
  160. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  161. package/artifacts/contracts/{instance/product/ProductService.sol/ProductModule.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +23 -29
  162. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IService.sol/IService.json +434 -0
  164. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  166. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  167. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +303 -0
  168. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  169. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +269 -0
  170. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  171. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +499 -0
  172. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  173. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +415 -0
  174. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  175. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +105 -0
  176. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  177. package/artifacts/contracts/shared/Service.sol/Service.json +627 -0
  178. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  179. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  180. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  181. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  182. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  183. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  184. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  185. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  186. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  187. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +446 -0
  188. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  189. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  190. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  191. package/artifacts/contracts/test/TestService.sol/TestService.json +759 -0
  192. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  193. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  194. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  195. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  196. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  197. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +286 -0
  198. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  199. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  200. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  201. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  202. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  204. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  206. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  208. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  210. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  212. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  213. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  214. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  215. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  216. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  218. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  220. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  222. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  224. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  226. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  227. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  228. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  229. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +77 -2
  230. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  231. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  232. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  233. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  234. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  235. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  236. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  237. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  238. package/contracts/components/Component.sol +205 -37
  239. package/contracts/components/Distribution.sol +156 -0
  240. package/contracts/components/IComponent.sol +50 -0
  241. package/contracts/components/IDistributionComponent.sol +47 -0
  242. package/contracts/components/IPoolComponent.sol +87 -0
  243. package/contracts/components/IProductComponent.sol +39 -0
  244. package/contracts/components/Pool.sol +242 -17
  245. package/contracts/components/Product.sol +244 -32
  246. package/contracts/experiment/cloning/Cloner.sol +47 -0
  247. package/contracts/experiment/errors/Require.sol +10 -5
  248. package/contracts/experiment/errors/Revert.sol +13 -8
  249. package/contracts/experiment/inheritance/A.sol +8 -11
  250. package/contracts/experiment/inheritance/B.sol +10 -5
  251. package/contracts/experiment/inheritance/C.sol +11 -5
  252. package/contracts/experiment/inheritance/IA.sol +2 -7
  253. package/contracts/experiment/inheritance/IB.sol +3 -2
  254. package/contracts/experiment/inheritance/IC.sol +4 -3
  255. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  256. package/contracts/experiment/statemachine/ISM.sol +25 -0
  257. package/contracts/experiment/statemachine/SM.sol +57 -0
  258. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  259. package/contracts/experiment/types/TypeA.sol +14 -9
  260. package/contracts/experiment/types/TypeB.sol +14 -9
  261. package/contracts/instance/BundleManager.sol +125 -0
  262. package/contracts/instance/Cloneable.sol +46 -0
  263. package/contracts/instance/IInstance.sol +67 -15
  264. package/contracts/instance/IInstanceService.sol +59 -0
  265. package/contracts/instance/Instance.sol +247 -43
  266. package/contracts/instance/InstanceAccessManager.sol +297 -0
  267. package/contracts/instance/InstanceReader.sol +293 -0
  268. package/contracts/instance/InstanceService.sol +433 -0
  269. package/contracts/instance/InstanceServiceManager.sol +54 -0
  270. package/contracts/instance/ObjectManager.sol +84 -0
  271. package/contracts/instance/base/ComponentService.sol +134 -0
  272. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  273. package/contracts/instance/base/ILifecycle.sol +30 -0
  274. package/contracts/instance/base/KeyValueStore.sol +172 -0
  275. package/contracts/instance/base/Lifecycle.sol +100 -0
  276. package/contracts/instance/module/IAccess.sol +47 -0
  277. package/contracts/instance/module/IBundle.sol +20 -0
  278. package/contracts/instance/module/IDistribution.sol +39 -0
  279. package/contracts/instance/module/IPolicy.sol +45 -0
  280. package/contracts/instance/module/IRisk.sol +11 -0
  281. package/contracts/instance/module/ISetup.sol +47 -0
  282. package/contracts/instance/module/ITreasury.sol +23 -0
  283. package/contracts/instance/service/ApplicationService.sol +268 -0
  284. package/contracts/instance/service/BundleService.sol +298 -0
  285. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  286. package/contracts/instance/service/DistributionService.sol +105 -0
  287. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  288. package/contracts/instance/service/IApplicationService.sol +82 -0
  289. package/contracts/instance/service/IBundleService.sol +54 -0
  290. package/contracts/instance/service/IDistributionService.sol +12 -0
  291. package/contracts/instance/service/IPolicyService.sol +88 -0
  292. package/contracts/instance/service/IPoolService.sol +20 -0
  293. package/contracts/instance/service/IProductService.sol +40 -0
  294. package/contracts/instance/service/PolicyService.sol +524 -0
  295. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  296. package/contracts/instance/service/PoolService.sol +109 -0
  297. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  298. package/contracts/instance/service/ProductService.sol +233 -0
  299. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  300. package/contracts/registry/ChainNft.sol +138 -109
  301. package/contracts/registry/IRegistry.sol +78 -49
  302. package/contracts/registry/IRegistryService.sol +65 -0
  303. package/contracts/registry/ITransferInterceptor.sol +6 -0
  304. package/contracts/registry/Registry.sol +396 -116
  305. package/contracts/registry/RegistryAccessManager.sol +216 -0
  306. package/contracts/registry/RegistryService.sol +261 -0
  307. package/contracts/registry/RegistryServiceManager.sol +62 -0
  308. package/contracts/registry/ReleaseManager.sol +332 -0
  309. package/contracts/registry/TokenRegistry.sol +113 -0
  310. package/contracts/shared/ContractDeployerLib.sol +72 -0
  311. package/contracts/shared/ERC165.sol +26 -0
  312. package/contracts/shared/INftOwnable.sol +28 -0
  313. package/contracts/shared/IPolicyHolder.sol +26 -0
  314. package/contracts/shared/IRegisterable.sol +15 -0
  315. package/contracts/shared/IRegistryLinked.sol +15 -0
  316. package/contracts/shared/IService.sol +16 -0
  317. package/contracts/shared/IVersionable.sol +96 -0
  318. package/contracts/shared/NftOwnable.sol +190 -0
  319. package/contracts/shared/PolicyHolder.sol +81 -0
  320. package/contracts/shared/ProxyManager.sol +95 -0
  321. package/contracts/shared/Registerable.sol +81 -0
  322. package/contracts/shared/RegistryLinked.sol +64 -0
  323. package/contracts/shared/Service.sol +60 -0
  324. package/contracts/shared/TokenHandler.sol +27 -0
  325. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  326. package/contracts/shared/Versionable.sol +148 -0
  327. package/contracts/test/TestFee.sol +25 -0
  328. package/contracts/test/TestRegisterable.sol +18 -0
  329. package/contracts/test/TestRoleId.sol +14 -0
  330. package/contracts/test/TestService.sol +25 -0
  331. package/contracts/test/TestToken.sol +26 -0
  332. package/contracts/test/TestVersion.sol +44 -0
  333. package/contracts/test/TestVersionable.sol +17 -0
  334. package/contracts/test/Usdc.sol +26 -0
  335. package/contracts/types/AddressSet.sol +58 -0
  336. package/contracts/types/Blocknumber.sol +76 -18
  337. package/contracts/types/ChainId.sol +18 -10
  338. package/contracts/types/DistributorType.sol +55 -0
  339. package/contracts/types/Fee.sol +56 -0
  340. package/contracts/types/Key32.sol +50 -0
  341. package/contracts/types/NftId.sol +48 -11
  342. package/contracts/types/NftIdSet.sol +62 -0
  343. package/contracts/types/NumberId.sol +52 -0
  344. package/contracts/types/ObjectType.sol +156 -0
  345. package/contracts/types/Referral.sol +85 -0
  346. package/contracts/types/RiskId.sol +43 -0
  347. package/contracts/types/RoleId.sol +90 -0
  348. package/contracts/types/StateId.sol +105 -0
  349. package/contracts/types/Timestamp.sol +89 -17
  350. package/contracts/types/UFixed.sol +193 -75
  351. package/contracts/types/Version.sol +107 -0
  352. package/package.json +21 -6
  353. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  354. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  355. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  356. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  357. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  358. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  359. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  360. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  361. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  362. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  363. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  364. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  365. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  366. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  367. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  368. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  369. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  370. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  371. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  372. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  373. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  374. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  375. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  376. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  377. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  378. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  379. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  380. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  381. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  382. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  384. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  386. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  387. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  389. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  391. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  393. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  394. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  396. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  397. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  398. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  399. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  400. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  401. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  402. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  403. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  404. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  405. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  406. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  407. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  408. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -440
  409. package/contracts/components/IPool.sol +0 -9
  410. package/contracts/components/IProduct.sol +0 -12
  411. package/contracts/instance/access/Access.sol +0 -218
  412. package/contracts/instance/access/IAccess.sol +0 -83
  413. package/contracts/instance/component/ComponentModule.sol +0 -248
  414. package/contracts/instance/component/IComponent.sol +0 -95
  415. package/contracts/instance/policy/IPolicy.sol +0 -66
  416. package/contracts/instance/policy/PolicyModule.sol +0 -107
  417. package/contracts/instance/pool/IPoolModule.sol +0 -41
  418. package/contracts/instance/pool/PoolModule.sol +0 -86
  419. package/contracts/instance/product/IProductService.sol +0 -46
  420. package/contracts/instance/product/ProductService.sol +0 -108
  421. package/contracts/registry/IChainNft.sol +0 -18
@@ -1,66 +1,278 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.19;
3
3
 
4
- import {IProductService} from "../instance/product/IProductService.sol";
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {IRisk} from "../instance/module/IRisk.sol";
7
+ import {IPolicyService} from "../instance/service/IPolicyService.sol";
8
+ import {IProductComponent} from "./IProductComponent.sol";
9
+ import {NftId, NftIdLib} from "../types/NftId.sol";
10
+ import {PRODUCT} from "../types/ObjectType.sol";
11
+ import {ReferralId} from "../types/Referral.sol";
12
+ import {RiskId, RiskIdLib} from "../types/RiskId.sol";
13
+ import {StateId} from "../types/StateId.sol";
14
+ import {Timestamp} from "../types/Timestamp.sol";
15
+ import {Fee} from "../types/Fee.sol";
5
16
  import {Component} from "./Component.sol";
6
- import {IProductComponent} from "./IProduct.sol";
7
- import {NftId} from "../types/NftId.sol";
8
17
 
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+
20
+ import {InstanceReader} from "../instance/InstanceReader.sol";
21
+ import {ISetup} from "../instance/module/ISetup.sol";
22
+ import {Pool} from "../components/Pool.sol";
23
+ import {Distribution} from "../components/Distribution.sol";
9
24
 
10
- contract Product is
11
- Component,
25
+ abstract contract Product is
26
+ Component,
12
27
  IProductComponent
13
28
  {
14
- IProductService private _productService;
15
- address private _pool;
29
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
30
+ bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
16
31
 
17
- constructor(
18
- address registry,
19
- address instance,
20
- address pool
32
+ struct ProductStorage {
33
+ IPolicyService _policyService;
34
+ Pool _pool;
35
+ Distribution _distribution;
36
+ Fee _initialProductFee;
37
+ Fee _initialProcessingFee;
38
+ TokenHandler _tokenHandler;
39
+ NftId _poolNftId;
40
+ NftId _distributionNftId;
41
+ }
42
+
43
+ function initializeProduct(
44
+ address registry,
45
+ NftId instanceNftId,
46
+ string memory name,
47
+ address token,
48
+ bool isInterceptor,
49
+ address pool,
50
+ address distribution,
51
+ Fee memory productFee,
52
+ Fee memory processingFee,
53
+ address initialOwner,
54
+ bytes memory data
21
55
  )
22
- Component(registry, instance)
23
- {
24
- _productService = _instance.getProductService();
25
- _pool = pool;
56
+ public
57
+ virtual
58
+ onlyInitializing()
59
+ {
60
+ initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, data);
61
+
62
+ ProductStorage storage $ = _getProductStorage();
63
+ // TODO add validation
64
+ $._policyService = getInstance().getPolicyService();
65
+ $._pool = Pool(pool);
66
+ $._distribution = Distribution(distribution);
67
+ $._initialProductFee = productFee;
68
+ $._initialProcessingFee = processingFee;
69
+ $._tokenHandler = new TokenHandler(token);
70
+ $._poolNftId = getRegistry().getNftId(pool);
71
+ $._distributionNftId = getRegistry().getNftId(distribution);
72
+
73
+ registerInterface(type(IProductComponent).interfaceId);
74
+ }
75
+
76
+
77
+ function calculatePremium(
78
+ uint256 sumInsuredAmount,
79
+ RiskId riskId,
80
+ uint256 lifetime,
81
+ bytes memory applicationData,
82
+ NftId bundleNftId,
83
+ ReferralId referralId
84
+ )
85
+ external
86
+ view
87
+ override
88
+ returns (uint256 premiumAmount)
89
+ {
90
+ (premiumAmount,,,,) = _getProductStorage()._policyService.calculatePremium(
91
+ riskId,
92
+ sumInsuredAmount,
93
+ lifetime,
94
+ applicationData,
95
+ bundleNftId,
96
+ referralId
97
+ );
98
+ }
99
+
100
+
101
+ function calculateNetPremium(
102
+ uint256 sumInsuredAmount,
103
+ RiskId riskId,
104
+ uint256 lifetime,
105
+ bytes memory applicationData
106
+ )
107
+ external
108
+ view
109
+ virtual override
110
+ returns (uint256 netPremiumAmount)
111
+ {
112
+ // default 10% of sum insured
113
+ return sumInsuredAmount / 10;
114
+ }
115
+
116
+ function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
117
+ return RiskIdLib.toRiskId(riskName);
118
+ }
119
+
120
+ function _createRisk(
121
+ RiskId id,
122
+ bytes memory data
123
+ ) internal {
124
+ getProductService().createRisk(
125
+ id,
126
+ data
127
+ );
128
+ }
129
+
130
+ function _updateRisk(
131
+ RiskId id,
132
+ bytes memory data
133
+ ) internal {
134
+ getProductService().updateRisk(
135
+ id,
136
+ data
137
+ );
138
+ }
139
+
140
+ function _updateRiskState(
141
+ RiskId id,
142
+ StateId state
143
+ ) internal {
144
+ getProductService().updateRiskState(
145
+ id,
146
+ state
147
+ );
148
+ }
149
+
150
+ function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
151
+ return getInstance().getInstanceReader().getRiskInfo(id);
26
152
  }
27
153
 
28
154
  function _createApplication(
29
155
  address applicationOwner,
156
+ RiskId riskId,
30
157
  uint256 sumInsuredAmount,
31
- uint256 premiumAmount,
32
158
  uint256 lifetime,
33
- NftId bundleNftId
159
+ bytes memory applicationData,
160
+ NftId bundleNftId,
161
+ ReferralId referralId
34
162
  )
35
163
  internal
36
- returns(NftId nftId)
164
+ returns (NftId nftId)
37
165
  {
38
- nftId = _productService.createApplication(
166
+ return _getProductStorage()._policyService.createApplication(
39
167
  applicationOwner,
168
+ riskId,
40
169
  sumInsuredAmount,
41
- premiumAmount,
42
170
  lifetime,
43
- bundleNftId
171
+ applicationData,
172
+ bundleNftId,
173
+ referralId
44
174
  );
45
175
  }
46
176
 
47
- function _underwrite(NftId nftId)
177
+ function _underwrite(
178
+ NftId policyNftId,
179
+ bool requirePremiumPayment,
180
+ Timestamp activateAt
181
+ )
182
+ internal
183
+ {
184
+ _getProductStorage()._policyService.underwrite(
185
+ policyNftId,
186
+ requirePremiumPayment,
187
+ activateAt);
188
+ }
189
+
190
+ function _collectPremium(
191
+ NftId policyNftId,
192
+ Timestamp activateAt
193
+ )
194
+ internal
195
+ {
196
+ _getProductStorage()._policyService.collectPremium(
197
+ policyNftId,
198
+ activateAt);
199
+ }
200
+
201
+ function _activate(
202
+ NftId policyNftId,
203
+ Timestamp activateAt
204
+ )
205
+ internal
206
+ {
207
+ _getProductStorage()._policyService.activate(
208
+ policyNftId,
209
+ activateAt);
210
+ }
211
+
212
+ function _close(
213
+ NftId policyNftId
214
+ )
48
215
  internal
49
216
  {
50
- _productService.underwrite(nftId);
217
+ _getProductStorage()._policyService.close(policyNftId);
218
+ }
219
+
220
+ function getPoolNftId() external view override returns (NftId poolNftId) {
221
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
222
+ }
223
+
224
+ function getDistributionNftId() external view override returns (NftId distributionNftId) {
225
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
226
+ }
227
+
228
+ // from product component
229
+ function setFees(
230
+ Fee memory productFee,
231
+ Fee memory processingFee
232
+ )
233
+ external
234
+ onlyOwner
235
+ restricted()
236
+ override
237
+ {
238
+ getProductService().setFees(productFee, processingFee);
51
239
  }
52
240
 
53
- function getPoolNftId() external view override returns(NftId poolNftId) {
54
- return _registry.getNftId(_pool);
241
+ function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
242
+ InstanceReader reader = getInstance().getInstanceReader();
243
+ setupInfo = reader.getProductSetupInfo(getNftId());
244
+
245
+ // fallback to initial setup info (wallet is always != address(0))
246
+ if(setupInfo.wallet == address(0)) {
247
+ setupInfo = _getInitialSetupInfo();
248
+ }
55
249
  }
56
250
 
57
- // from registerable
58
- function getType() public view override returns(uint256) {
59
- return _registry.PRODUCT();
251
+ function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
252
+ ProductStorage storage $ = _getProductStorage();
253
+
254
+ ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
255
+ ISetup.PoolSetupInfo memory poolSetupInfo = $._pool.getSetupInfo();
256
+
257
+ return ISetup.ProductSetupInfo(
258
+ getToken(),
259
+ $._tokenHandler,
260
+ $._distributionNftId,
261
+ $._poolNftId,
262
+ distributionSetupInfo.distributionFee,
263
+ $._initialProductFee,
264
+ $._initialProcessingFee,
265
+ poolSetupInfo.poolFee,
266
+ poolSetupInfo.stakingFee,
267
+ poolSetupInfo.performanceFee,
268
+ false,
269
+ getWallet()
270
+ );
60
271
  }
61
272
 
62
- // from registerable
63
- function getData() external view override returns(bytes memory data) {
64
- return bytes(abi.encode(getInstance().getNftId()));
273
+ function _getProductStorage() private pure returns (ProductStorage storage $) {
274
+ assembly {
275
+ $.slot := PRODUCT_STORAGE_LOCATION_V1
276
+ }
65
277
  }
66
- }
278
+ }
@@ -0,0 +1,47 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+
6
+
7
+ contract Cloner {
8
+
9
+ Mock1 public mock1;
10
+ Mock2 public mock2;
11
+
12
+ constructor() {
13
+ mock1 = new Mock1();
14
+ mock2 = new Mock2();
15
+ }
16
+
17
+ function createClone(address master)
18
+ external
19
+ returns (address cloned)
20
+ {
21
+ cloned = Clones.clone(master);
22
+ }
23
+ }
24
+
25
+
26
+ contract Mock1 {
27
+ function getValue() external virtual view returns (uint256) {
28
+ return 42;
29
+ }
30
+ }
31
+
32
+ contract Mock2 is Mock1 {
33
+ uint256 internal _value;
34
+
35
+ constructor() {
36
+ _value = 42;
37
+ }
38
+
39
+ function setValue(uint256 value) external virtual {
40
+ _value = value;
41
+ }
42
+
43
+ function getValue() external virtual override view returns (uint256) {
44
+ return _value;
45
+ }
46
+ }
47
+
@@ -2,7 +2,6 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  contract Require {
5
-
6
5
  error AsmallerThanB_S();
7
6
  error AsmallerThanB_M(uint a);
8
7
  error AsmallerThanB_L(uint a, uint b);
@@ -13,21 +12,27 @@ contract Require {
13
12
  _b = 42;
14
13
  }
15
14
 
16
- function isAlargerThanBRequire_S(uint a) external view returns(bool isLarger) {
15
+ function isAlargerThanBRequire_S(
16
+ uint a
17
+ ) external view returns (bool isLarger) {
17
18
  require(a > _b, "ERROR:ABC-001");
18
19
 
19
20
  return true;
20
21
  }
21
22
 
22
- function isAlargerThanBRequire_M(uint a) external view returns(bool isLarger) {
23
+ function isAlargerThanBRequire_M(
24
+ uint a
25
+ ) external view returns (bool isLarger) {
23
26
  require(a > _b, "ERROR:ABC-002:A_IS_SMALLER");
24
27
 
25
28
  return true;
26
29
  }
27
30
 
28
- function isAlargerThanBRequire_L(uint a) external view returns(bool isLarger) {
31
+ function isAlargerThanBRequire_L(
32
+ uint a
33
+ ) external view returns (bool isLarger) {
29
34
  require(a > _b, "ERROR:ABC-003:A_IS_SMALLER_THAN_B");
30
35
 
31
36
  return true;
32
37
  }
33
- }
38
+ }
@@ -2,7 +2,6 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  contract Revert {
5
-
6
5
  error AsmallerThanB_S();
7
6
  error AsmallerThanB_M(uint a);
8
7
  error AsmallerThanB_L(uint a, uint b);
@@ -13,27 +12,33 @@ contract Revert {
13
12
  _b = 42;
14
13
  }
15
14
 
16
- function isAlargerThanBRevert_S(uint a) external view returns(bool isLarger) {
17
- if(a <= _b) {
15
+ function isAlargerThanBRevert_S(
16
+ uint a
17
+ ) external view returns (bool isLarger) {
18
+ if (a <= _b) {
18
19
  revert AsmallerThanB_S();
19
20
  }
20
21
 
21
22
  return true;
22
23
  }
23
24
 
24
- function isAlargerThanBRevert_M(uint a) external view returns(bool isLarger) {
25
- if(a <= _b) {
25
+ function isAlargerThanBRevert_M(
26
+ uint a
27
+ ) external view returns (bool isLarger) {
28
+ if (a <= _b) {
26
29
  revert AsmallerThanB_M(a);
27
30
  }
28
31
 
29
32
  return true;
30
33
  }
31
34
 
32
- function isAlargerThanBRevert_L(uint a) external view returns(bool isLarger) {
33
- if(a <= _b) {
35
+ function isAlargerThanBRevert_L(
36
+ uint a
37
+ ) external view returns (bool isLarger) {
38
+ if (a <= _b) {
34
39
  revert AsmallerThanB_L(a, _b);
35
40
  }
36
41
 
37
42
  return true;
38
43
  }
39
- }
44
+ }
@@ -35,22 +35,19 @@ a.setC(20);
35
35
  */
36
36
 
37
37
  contract AShared is ISharedA {
38
-
39
38
  uint256 private _x;
40
39
 
41
40
  constructor() {
42
41
  _x = 42;
43
42
  }
44
43
 
45
- function getA() external view override returns(uint256) { return _x; }
46
- function setA(uint256 newA) external override { _x = newA; }
47
- }
48
-
49
- contract A is
50
- AShared,
51
- B,
52
- C,
53
- IA
54
- {
44
+ function getA() external view override returns (uint256) {
45
+ return _x;
46
+ }
55
47
 
48
+ function setA(uint256 newA) external override {
49
+ _x = newA;
50
+ }
56
51
  }
52
+
53
+ contract A is AShared, B, C, IA {}
@@ -5,7 +5,6 @@ import {ISharedA} from "./IA.sol";
5
5
  import {IB} from "./IB.sol";
6
6
 
7
7
  abstract contract B is ISharedA, IB {
8
-
9
8
  // names of private variables can be re-used in inheritance
10
9
  uint256 private _x;
11
10
 
@@ -14,10 +13,16 @@ abstract contract B is ISharedA, IB {
14
13
  }
15
14
 
16
15
  // access own state
17
- function getB() external view override returns(uint256) { return _x; }
18
- function setB(uint256 newB) external override { _x = newB; }
16
+ function getB() external view override returns (uint256) {
17
+ return _x;
18
+ }
19
19
 
20
- // access state from parent contract A
21
- function getAfromB() external view override returns(uint256) { return this.getA(); }
20
+ function setB(uint256 newB) external override {
21
+ _x = newB;
22
+ }
22
23
 
24
+ // access state from parent contract A
25
+ function getAfromB() external view override returns (uint256) {
26
+ return this.getA();
27
+ }
23
28
  }
@@ -6,7 +6,6 @@ import {IB} from "./IB.sol";
6
6
  import {IC} from "./IC.sol";
7
7
 
8
8
  abstract contract C is ISharedA, IC {
9
-
10
9
  uint256 private _x;
11
10
 
12
11
  constructor() {
@@ -14,14 +13,21 @@ abstract contract C is ISharedA, IC {
14
13
  }
15
14
 
16
15
  // access own state
17
- function getC() external view override returns(uint256) { return _x; }
18
- function setC(uint256 newC) external override { _x = newC; }
16
+ function getC() external view override returns (uint256) {
17
+ return _x;
18
+ }
19
+
20
+ function setC(uint256 newC) external override {
21
+ _x = newC;
22
+ }
19
23
 
20
24
  // access state from parent contract A
21
- function getAfromC() external view override returns(uint256) { return this.getA(); }
25
+ function getAfromC() external view override returns (uint256) {
26
+ return this.getA();
27
+ }
22
28
 
23
29
  // access state from other module B
24
- function getBfromC() external view override returns(uint256) {
30
+ function getBfromC() external view override returns (uint256) {
25
31
  IB b = IB(address(this));
26
32
  return b.getB();
27
33
  }
@@ -5,14 +5,9 @@ import {IB} from "./IB.sol";
5
5
  import {IC} from "./IC.sol";
6
6
 
7
7
  interface ISharedA {
8
+ function getA() external view returns (uint256);
8
9
 
9
- function getA() external view returns(uint256);
10
10
  function setA(uint256 newA) external;
11
11
  }
12
12
 
13
- interface IA is
14
- ISharedA,
15
- IB,
16
- IC
17
- {
18
- }
13
+ interface IA is ISharedA, IB, IC {}
@@ -2,8 +2,9 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  interface IB {
5
+ function getAfromB() external view returns (uint256);
6
+
7
+ function getB() external view returns (uint256);
5
8
 
6
- function getAfromB() external view returns(uint256);
7
- function getB() external view returns(uint256);
8
9
  function setB(uint256 newA) external;
9
10
  }
@@ -2,10 +2,11 @@
2
2
  pragma solidity ^0.8.19;
3
3
 
4
4
  interface IC {
5
+ function getAfromC() external view returns (uint256);
5
6
 
6
- function getAfromC() external view returns(uint256);
7
- function getBfromC() external view returns(uint256);
7
+ function getBfromC() external view returns (uint256);
8
+
9
+ function getC() external view returns (uint256);
8
10
 
9
- function getC() external view returns(uint256);
10
11
  function setC(uint256 newA) external;
11
12
  }
@@ -0,0 +1,27 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {ObjectType} from "../../types/ObjectType.sol";
5
+ import {StateId, toStateId, zeroStateId} from "../../types/StateId.sol";
6
+
7
+ contract LifeCycleModule {
8
+ mapping(ObjectType objectType => StateId initialState)
9
+ private _initialState;
10
+
11
+ mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
12
+ private _isValidTransition;
13
+
14
+ function getInitialState(
15
+ ObjectType objectType
16
+ ) external view returns (StateId) {
17
+ return _initialState[objectType];
18
+ }
19
+
20
+ function isValidTransition(
21
+ ObjectType objectType,
22
+ StateId fromId,
23
+ StateId toId
24
+ ) external view returns (bool) {
25
+ return _isValidTransition[objectType][fromId][toId];
26
+ }
27
+ }
@@ -0,0 +1,25 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {StateId} from "../../types/StateId.sol";
5
+
6
+ interface ISMEE {
7
+ error ErrorInitialStateUndefined();
8
+ error ErrorStartStateUndefined();
9
+ error ErrorNextStateUndefined();
10
+ error ErrorStateChangeInvalid(StateId currentStateId, StateId newStateId);
11
+
12
+ event LogInitialStateSet(StateId initialStateId);
13
+ event LogStateChanged(StateId oldStateId, StateId newStateId);
14
+ }
15
+
16
+ interface ISM is ISMEE {
17
+ function changeToState(StateId newStateId) external;
18
+
19
+ function isValidTransition(
20
+ StateId currentStateId,
21
+ StateId newStateId
22
+ ) external view returns (bool isValid);
23
+
24
+ function getState() external view returns (StateId currentStateId);
25
+ }