@etherisc/gif-next 0.0.2-fe77319 → 0.0.2-fe88ad7-208

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 (441) hide show
  1. package/README.md +364 -8
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +482 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +675 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/access/Access.sol/AccessModule.json → components/IBaseComponent.sol/IBaseComponent.json} +217 -220
  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 +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +275 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → components/IProductComponent.sol/IProductComponent.json} +81 -86
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +687 -40
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +612 -50
  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 +4 -0
  25. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +105 -0
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +4 -0
  27. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +105 -0
  28. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +4 -0
  29. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +128 -0
  30. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +4 -0
  31. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +42 -0
  32. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +4 -0
  33. package/artifacts/contracts/experiment/{B.sol → inheritance/B.sol}/B.json +2 -2
  34. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +4 -0
  35. package/artifacts/contracts/experiment/{C.sol → inheritance/C.sol}/C.json +2 -2
  36. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +4 -0
  37. package/artifacts/contracts/experiment/{IA.sol → inheritance/IA.sol}/IA.json +1 -1
  38. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +4 -0
  39. package/artifacts/contracts/experiment/{IA.sol → inheritance/IA.sol}/ISharedA.json +1 -1
  40. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +4 -0
  41. package/artifacts/contracts/experiment/{IB.sol → inheritance/IB.sol}/IB.json +1 -1
  42. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +4 -0
  43. package/artifacts/contracts/experiment/{IC.sol → inheritance/IC.sol}/IC.json +1 -1
  44. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  45. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  46. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  47. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  48. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  49. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  50. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  51. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  52. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  53. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  54. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +4 -0
  55. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +10 -0
  56. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +4 -0
  57. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +10 -0
  58. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  60. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
  62. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  63. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1314 -469
  66. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  67. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +570 -0
  70. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/Instance.sol/Instance.json +2531 -505
  72. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1047 -0
  74. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +963 -0
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +460 -0
  82. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
  84. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +532 -0
  86. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  88. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  90. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  92. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  94. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  96. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  97. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  102. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  105. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  106. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/ISetup.sol/ISetup.json} +2 -2
  108. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  110. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +945 -0
  112. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +432 -0
  114. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +814 -0
  116. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +693 -0
  118. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +420 -0
  120. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +669 -0
  122. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
  124. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
  126. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +664 -0
  128. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +499 -0
  130. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  131. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +536 -0
  132. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +993 -0
  134. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +464 -0
  136. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  137. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +727 -0
  138. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +420 -0
  140. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  141. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +777 -0
  142. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -0
  144. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
  145. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +771 -0
  146. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +449 -76
  148. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  149. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +976 -0
  150. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  151. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  152. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/Registry.sol/Registry.json +544 -79
  154. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  155. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  156. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  157. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1195 -0
  158. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +451 -0
  160. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +546 -0
  162. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  163. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -0
  164. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  165. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  166. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  167. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  168. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  170. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +201 -0
  172. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IService.sol/IService.json +421 -0
  174. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  176. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  177. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  178. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  180. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +274 -0
  182. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  183. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  184. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  185. package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
  186. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  187. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  188. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  189. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  190. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  191. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  192. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  193. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  194. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  195. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +305 -0
  196. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  197. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  198. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  199. package/artifacts/contracts/test/TestService.sol/TestService.json +600 -0
  200. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  201. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  202. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  203. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  204. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  205. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +286 -0
  206. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  207. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  208. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  209. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  210. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
  212. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +10 -0
  214. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  216. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  218. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  219. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  220. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +153 -0
  222. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  223. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  224. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  226. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  227. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  228. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  229. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  230. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  232. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  233. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  234. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  236. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
  237. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +249 -0
  238. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  239. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  240. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  241. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  242. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  243. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  244. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  245. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  246. package/contracts/components/BaseComponent.sol +159 -0
  247. package/contracts/components/Distribution.sol +163 -0
  248. package/contracts/components/IBaseComponent.sol +34 -0
  249. package/contracts/components/IDistributionComponent.sol +44 -0
  250. package/contracts/components/IPoolComponent.sol +66 -0
  251. package/contracts/components/IProductComponent.sol +35 -0
  252. package/contracts/components/Pool.sol +260 -18
  253. package/contracts/components/Product.sol +263 -36
  254. package/contracts/experiment/cloning/Cloner.sol +47 -0
  255. package/contracts/experiment/errors/Require.sol +38 -0
  256. package/contracts/experiment/errors/Revert.sol +44 -0
  257. package/contracts/experiment/{A.sol → inheritance/A.sol} +8 -11
  258. package/contracts/experiment/{B.sol → inheritance/B.sol} +10 -5
  259. package/contracts/experiment/{C.sol → inheritance/C.sol} +11 -5
  260. package/contracts/experiment/{IA.sol → inheritance/IA.sol} +2 -7
  261. package/contracts/experiment/{IB.sol → inheritance/IB.sol} +3 -2
  262. package/contracts/experiment/inheritance/IC.sol +12 -0
  263. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  264. package/contracts/experiment/statemachine/ISM.sol +25 -0
  265. package/contracts/experiment/statemachine/SM.sol +57 -0
  266. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  267. package/contracts/experiment/types/TypeA.sol +47 -0
  268. package/contracts/experiment/types/TypeB.sol +29 -0
  269. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  270. package/contracts/instance/BundleManager.sol +129 -0
  271. package/contracts/instance/Cloneable.sol +46 -0
  272. package/contracts/instance/IInstance.sol +57 -15
  273. package/contracts/instance/IInstanceBase.sol +26 -0
  274. package/contracts/instance/IInstanceService.sol +40 -0
  275. package/contracts/instance/Instance.sol +257 -44
  276. package/contracts/instance/InstanceAccessManager.sol +303 -0
  277. package/contracts/instance/InstanceBase.sol +41 -0
  278. package/contracts/instance/InstanceReader.sol +315 -0
  279. package/contracts/instance/InstanceService.sol +350 -0
  280. package/contracts/instance/InstanceServiceManager.sol +54 -0
  281. package/contracts/instance/ObjectManager.sol +101 -0
  282. package/contracts/instance/base/ComponentServiceBase.sol +82 -0
  283. package/contracts/instance/base/IInstanceBase.sol +23 -0
  284. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  285. package/contracts/instance/base/ILifecycle.sol +30 -0
  286. package/contracts/instance/base/KeyValueStore.sol +172 -0
  287. package/contracts/instance/base/Lifecycle.sol +100 -0
  288. package/contracts/instance/module/IAccess.sol +48 -0
  289. package/contracts/instance/module/IBundle.sol +20 -0
  290. package/contracts/instance/module/IDistribution.sol +39 -0
  291. package/contracts/instance/module/IPolicy.sol +45 -0
  292. package/contracts/instance/module/IRisk.sol +11 -0
  293. package/contracts/instance/module/ISetup.sol +46 -0
  294. package/contracts/instance/module/ITreasury.sol +23 -0
  295. package/contracts/instance/service/BundleService.sol +260 -0
  296. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  297. package/contracts/instance/service/ComponentOwnerService.sol +315 -0
  298. package/contracts/instance/service/DistributionService.sol +113 -0
  299. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  300. package/contracts/instance/service/IBundleService.sol +45 -0
  301. package/contracts/instance/service/IComponentOwnerService.sol +20 -0
  302. package/contracts/instance/service/IDistributionService.sol +12 -0
  303. package/contracts/instance/service/IPolicyService.sol +87 -0
  304. package/contracts/instance/service/IPoolService.sol +20 -0
  305. package/contracts/instance/service/IProductService.sol +40 -0
  306. package/contracts/instance/service/PolicyService.sol +503 -0
  307. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  308. package/contracts/instance/service/PoolService.sol +124 -0
  309. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  310. package/contracts/instance/service/ProductService.sol +170 -0
  311. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  312. package/contracts/registry/ChainNft.sol +202 -0
  313. package/contracts/registry/IRegistry.sol +78 -53
  314. package/contracts/registry/IRegistryService.sol +58 -0
  315. package/contracts/registry/ITransferInterceptor.sol +6 -0
  316. package/contracts/registry/Registry.sol +329 -130
  317. package/contracts/registry/RegistryAccessManager.sol +210 -0
  318. package/contracts/registry/RegistryService.sol +323 -0
  319. package/contracts/registry/RegistryServiceManager.sol +62 -0
  320. package/contracts/registry/ReleaseManager.sol +348 -0
  321. package/contracts/registry/TokenRegistry.sol +110 -0
  322. package/contracts/shared/ContractDeployerLib.sol +72 -0
  323. package/contracts/shared/ERC165.sol +25 -0
  324. package/contracts/shared/INftOwnable.sol +22 -0
  325. package/contracts/shared/IRegisterable.sol +17 -0
  326. package/contracts/shared/IService.sol +16 -0
  327. package/contracts/shared/IVersionable.sol +96 -0
  328. package/contracts/shared/NftOwnable.sol +134 -0
  329. package/contracts/shared/ProxyManager.sol +94 -0
  330. package/contracts/shared/Registerable.sol +90 -0
  331. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  332. package/contracts/shared/Service.sol +58 -0
  333. package/contracts/shared/TokenHandler.sol +27 -0
  334. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  335. package/contracts/shared/Versionable.sol +147 -0
  336. package/contracts/test/TestFee.sol +25 -0
  337. package/contracts/test/TestRegisterable.sol +18 -0
  338. package/contracts/test/TestRoleId.sol +14 -0
  339. package/contracts/test/TestService.sol +25 -0
  340. package/contracts/test/TestToken.sol +26 -0
  341. package/contracts/test/TestVersion.sol +44 -0
  342. package/contracts/test/TestVersionable.sol +17 -0
  343. package/contracts/test/Usdc.sol +26 -0
  344. package/contracts/types/AddressSet.sol +58 -0
  345. package/contracts/types/Blocknumber.sol +118 -0
  346. package/contracts/types/ChainId.sol +38 -0
  347. package/contracts/types/DistributorType.sol +55 -0
  348. package/contracts/types/Fee.sol +56 -0
  349. package/contracts/types/Key32.sol +50 -0
  350. package/contracts/types/NftId.sol +72 -0
  351. package/contracts/types/NftIdSet.sol +62 -0
  352. package/contracts/types/NumberId.sol +52 -0
  353. package/contracts/types/ObjectType.sol +152 -0
  354. package/contracts/types/Referral.sol +85 -0
  355. package/contracts/types/RiskId.sol +43 -0
  356. package/contracts/types/RoleId.sol +90 -0
  357. package/contracts/types/StateId.sol +105 -0
  358. package/contracts/types/Timestamp.sol +127 -0
  359. package/contracts/types/UFixed.sol +325 -0
  360. package/contracts/types/Version.sol +107 -0
  361. package/package.json +21 -6
  362. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  363. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  364. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  365. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  366. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  367. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  368. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  369. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  370. package/artifacts/contracts/experiment/A.sol/A.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/A.sol/A.json +0 -128
  372. package/artifacts/contracts/experiment/A.sol/AShared.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/A.sol/AShared.json +0 -42
  374. package/artifacts/contracts/experiment/B.sol/B.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/C.sol/C.dbg.json +0 -4
  376. package/artifacts/contracts/experiment/IA.sol/IA.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/IA.sol/ISharedA.dbg.json +0 -4
  378. package/artifacts/contracts/experiment/IB.sol/IB.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/IC.sol/IC.dbg.json +0 -4
  380. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  382. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  383. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  384. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  385. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  386. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  388. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  389. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  390. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  391. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  392. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  393. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  394. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  395. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  396. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  397. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  398. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  399. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  400. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  401. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  402. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  403. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  404. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  405. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  406. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  407. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  409. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  410. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  412. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  414. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  415. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  416. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  417. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  418. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  420. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  421. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  422. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  423. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  424. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  425. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  426. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  427. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  428. package/contracts/components/Component.sol +0 -62
  429. package/contracts/components/IPool.sol +0 -9
  430. package/contracts/components/IProduct.sol +0 -11
  431. package/contracts/experiment/IC.sol +0 -11
  432. package/contracts/instance/access/Access.sol +0 -218
  433. package/contracts/instance/access/IAccess.sol +0 -83
  434. package/contracts/instance/component/ComponentModule.sol +0 -259
  435. package/contracts/instance/component/IComponent.sol +0 -94
  436. package/contracts/instance/policy/IPolicy.sol +0 -66
  437. package/contracts/instance/policy/PolicyModule.sol +0 -106
  438. package/contracts/instance/pool/IPoolModule.sol +0 -40
  439. package/contracts/instance/pool/PoolModule.sol +0 -83
  440. package/contracts/instance/product/IProductService.sol +0 -45
  441. package/contracts/instance/product/ProductService.sol +0 -105
@@ -0,0 +1,30 @@
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 {StateId} from "../../types/StateId.sol";
7
+
8
+ interface ILifecycle {
9
+
10
+ error ErrorNoLifecycle(NftId nftId, ObjectType objectType);
11
+ error ErrorInvalidStateTransition(
12
+ ObjectType objectType,
13
+ StateId fromStateId,
14
+ StateId toStateId
15
+ );
16
+
17
+ function hasLifecycle(
18
+ ObjectType objectType
19
+ ) external view returns (bool);
20
+
21
+ function getInitialState(
22
+ ObjectType objectType
23
+ ) external view returns (StateId);
24
+
25
+ function isValidTransition(
26
+ ObjectType objectType,
27
+ StateId fromId,
28
+ StateId toId
29
+ ) external view returns (bool);
30
+ }
@@ -0,0 +1,172 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, blockBlocknumber, zeroBlocknumber} from "../../types/Blocknumber.sol";
5
+ import {Key32, KeyId, Key32Lib} from "../../types/Key32.sol";
6
+ import {NftId} from "../../types/NftId.sol";
7
+ import {ObjectType} from "../../types/ObjectType.sol";
8
+ import {StateId, ACTIVE} from "../../types/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../../types/Timestamp.sol";
10
+
11
+ import {Lifecycle} from "./Lifecycle.sol";
12
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
13
+
14
+ contract KeyValueStore is Lifecycle, IKeyValueStore {
15
+
16
+ mapping(Key32 key32 => Value value) private _value;
17
+
18
+ function create(
19
+ Key32 key32,
20
+ bytes memory data
21
+ )
22
+ internal
23
+ {
24
+ _create(key32, data);
25
+ }
26
+
27
+ function _create(
28
+ Key32 key32,
29
+ bytes memory data
30
+ )
31
+ internal
32
+ {
33
+ ObjectType objectType = key32.toObjectType();
34
+ require(objectType.gtz(), "ERROR:KVS-010:TYPE_UNDEFINED");
35
+
36
+ Metadata storage metadata = _value[key32].metadata;
37
+ require(metadata.state.eqz(), "ERROR:KVS-012:ALREADY_CREATED");
38
+
39
+ address createdBy = msg.sender;
40
+ Blocknumber blocknumber = blockBlocknumber();
41
+ StateId initialState = hasLifecycle(objectType) ? getInitialState(objectType) : ACTIVE();
42
+
43
+ // set metadata
44
+ metadata.objectType = objectType;
45
+ metadata.state = initialState;
46
+ metadata.updatedBy = createdBy;
47
+ metadata.updatedIn = blocknumber;
48
+ metadata.createdIn = blocknumber;
49
+
50
+ // set data
51
+ _value[key32].data = data;
52
+
53
+ // solhint-disable-next-line avoid-tx-origin
54
+ emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, createdBy, tx.origin);
55
+ }
56
+
57
+ function update(
58
+ Key32 key32,
59
+ bytes memory data,
60
+ StateId state
61
+ )
62
+ internal
63
+ {
64
+ _update(key32, data, state);
65
+ }
66
+
67
+ function _update(
68
+ Key32 key32,
69
+ bytes memory data,
70
+ StateId state
71
+ )
72
+ internal
73
+ {
74
+ require(state.gtz(), "ERROR:KVS-020:STATE_UNDEFINED");
75
+ Metadata storage metadata = _value[key32].metadata;
76
+ StateId stateOld = metadata.state;
77
+ require(stateOld.gtz(), "ERROR:KVS-021:NOT_EXISTING");
78
+
79
+ // update data
80
+ _value[key32].data = data;
81
+
82
+ // update metadata (and state)
83
+ address updatedBy = msg.sender;
84
+ Blocknumber lastUpdatedIn = metadata.updatedIn;
85
+ metadata.state = state;
86
+ metadata.updatedBy = updatedBy;
87
+ metadata.updatedIn = blockBlocknumber();
88
+
89
+ // create log entries
90
+ // solhint-disable avoid-tx-origin
91
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
92
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, updatedBy, tx.origin, lastUpdatedIn);
93
+ // solhing-enable
94
+ }
95
+
96
+ function updateData(Key32 key32, bytes memory data)
97
+ internal
98
+ {
99
+ _updateData(key32, data);
100
+ }
101
+
102
+ function _updateData(Key32 key32, bytes memory data)
103
+ internal
104
+ {
105
+ Metadata storage metadata = _value[key32].metadata;
106
+ StateId state = metadata.state;
107
+ require(state.gtz(), "ERROR:KVS-030:NOT_EXISTING");
108
+
109
+ // update data
110
+ _value[key32].data = data;
111
+
112
+ // update metadata
113
+ address updatedBy = msg.sender;
114
+ Blocknumber lastUpdatedIn = metadata.updatedIn;
115
+ metadata.updatedBy = updatedBy;
116
+ metadata.updatedIn = blockBlocknumber();
117
+
118
+ // create log entry
119
+ // solhint-disable-next-line avoid-tx-origin
120
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, updatedBy, tx.origin, lastUpdatedIn);
121
+ }
122
+
123
+ function updateState(Key32 key32, StateId state)
124
+ internal
125
+ {
126
+ _updateState(key32, state);
127
+ }
128
+
129
+ function _updateState(Key32 key32, StateId state)
130
+ internal
131
+ {
132
+ require(state.gtz(), "ERROR:KVS-040:STATE_UNDEFINED");
133
+ Metadata storage metadata = _value[key32].metadata;
134
+ StateId stateOld = metadata.state;
135
+ require(stateOld.gtz(), "ERROR:KVS-041:NOT_EXISTING");
136
+
137
+ // update metadata (and state)
138
+ address updatedBy = msg.sender;
139
+ Blocknumber lastUpdatedIn = metadata.updatedIn;
140
+ metadata.state = state;
141
+ metadata.updatedBy = updatedBy;
142
+ metadata.updatedIn = blockBlocknumber();
143
+
144
+ // create log entry
145
+ // solhint-disable-next-line avoid-tx-origin
146
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), state, stateOld, updatedBy, tx.origin, lastUpdatedIn);
147
+ }
148
+
149
+ function exists(Key32 key32) public view returns (bool) {
150
+ return _value[key32].metadata.state.gtz();
151
+ }
152
+
153
+ function get(Key32 key32) public view returns (Value memory value) {
154
+ return _value[key32];
155
+ }
156
+
157
+ function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
158
+ return _value[key32].metadata;
159
+ }
160
+
161
+ function getData(Key32 key32) public view returns (bytes memory data) {
162
+ return _value[key32].data;
163
+ }
164
+
165
+ function getState(Key32 key32) public view returns (StateId state) {
166
+ return _value[key32].metadata.state;
167
+ }
168
+
169
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
170
+ return Key32Lib.toKey32(objectType, id);
171
+ }
172
+ }
@@ -0,0 +1,100 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {ObjectType, COMPONENT, BUNDLE, POLICY, RISK} from "../../types/ObjectType.sol";
6
+ import {StateId, ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, UNDERWRITTEN, REVOKED, DECLINED} from "../../types/StateId.sol";
7
+ import {ILifecycle} from "./ILifecycle.sol";
8
+
9
+ contract Lifecycle is ILifecycle {
10
+ mapping(ObjectType objectType => StateId initialState)
11
+ private _initialState;
12
+
13
+ mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
14
+ private _isValidTransition;
15
+
16
+ constructor() {
17
+ _setupBundleLifecycle();
18
+ _setupComponentLifecycle();
19
+ _setupPolicyLifecycle();
20
+ _setupRiskLifecycle();
21
+ }
22
+
23
+ function hasLifecycle(
24
+ ObjectType objectType
25
+ )
26
+ public
27
+ view
28
+ override
29
+ returns (bool)
30
+ {
31
+ return _initialState[objectType].gtz();
32
+ }
33
+
34
+ function getInitialState(
35
+ ObjectType objectType
36
+ )
37
+ public
38
+ view
39
+ returns (StateId)
40
+ {
41
+ return _initialState[objectType];
42
+ }
43
+
44
+ function checkTransition(
45
+ ObjectType objectType,
46
+ StateId fromId,
47
+ StateId toId
48
+ )
49
+ public
50
+ view
51
+ {
52
+ // return if no life cycle support
53
+ if (_initialState[objectType].eqz()) {
54
+ return;
55
+ }
56
+
57
+ // enforce valid state transition
58
+ if (!_isValidTransition[objectType][fromId][toId]) {
59
+ revert ErrorInvalidStateTransition(objectType, fromId, toId);
60
+ }
61
+ }
62
+
63
+ function isValidTransition(
64
+ ObjectType objectType,
65
+ StateId fromId,
66
+ StateId toId
67
+ ) public view returns (bool) {
68
+ return _isValidTransition[objectType][fromId][toId];
69
+ }
70
+
71
+ function _setupComponentLifecycle() internal {
72
+ _initialState[COMPONENT()] = ACTIVE();
73
+ _isValidTransition[COMPONENT()][ACTIVE()][PAUSED()] = true;
74
+ _isValidTransition[COMPONENT()][PAUSED()][ACTIVE()] = true;
75
+ _isValidTransition[COMPONENT()][PAUSED()][ARCHIVED()] = true;
76
+ }
77
+
78
+ function _setupBundleLifecycle() internal {
79
+ _initialState[BUNDLE()] = ACTIVE();
80
+ _isValidTransition[BUNDLE()][ACTIVE()][PAUSED()] = true;
81
+ _isValidTransition[BUNDLE()][PAUSED()][ACTIVE()] = true;
82
+ _isValidTransition[BUNDLE()][PAUSED()][CLOSED()] = true;
83
+ }
84
+
85
+ function _setupPolicyLifecycle() internal {
86
+ _initialState[POLICY()] = APPLIED();
87
+ _isValidTransition[POLICY()][APPLIED()][REVOKED()] = true;
88
+ _isValidTransition[POLICY()][APPLIED()][DECLINED()] = true;
89
+ _isValidTransition[POLICY()][APPLIED()][UNDERWRITTEN()] = true;
90
+ _isValidTransition[POLICY()][UNDERWRITTEN()][ACTIVE()] = true;
91
+ _isValidTransition[POLICY()][ACTIVE()][CLOSED()] = true;
92
+ }
93
+
94
+ function _setupRiskLifecycle() internal {
95
+ _initialState[RISK()] = ACTIVE();
96
+ _isValidTransition[RISK()][ACTIVE()][PAUSED()] = true;
97
+ _isValidTransition[RISK()][PAUSED()][ACTIVE()] = true;
98
+ _isValidTransition[RISK()][PAUSED()][ARCHIVED()] = true;
99
+ }
100
+ }
@@ -0,0 +1,48 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
+ import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
+
7
+ import {RoleId} from "../../types/RoleId.sol";
8
+ import {Timestamp} from "../../types/Timestamp.sol";
9
+
10
+ interface IAccess {
11
+
12
+ struct RoleInfo {
13
+ ShortString name;
14
+ bool isCustom;
15
+ bool isLocked;
16
+ Timestamp createdAt;
17
+ Timestamp updatedAt;
18
+ }
19
+
20
+ struct TargetInfo {
21
+ ShortString name;
22
+ bool isCustom;
23
+ bool isLocked;
24
+ Timestamp createdAt;
25
+ Timestamp updatedAt;
26
+ }
27
+
28
+ error ErrorIAccessRoleIdInvalid(RoleId roleId);
29
+ error ErrorIAccessRoleIdTooBig(RoleId roleId);
30
+ error ErrorIAccessRoleIdTooSmall(RoleId roleId);
31
+ error ErrorIAccessRoleIdAlreadyExists(RoleId roleId, ShortString name);
32
+ error ErrorIAccessRoleIdNotActive(RoleId roleId);
33
+ error ErrorIAccessRoleNameEmpty(RoleId roleId);
34
+ error ErrorIAccessRoleNameNotUnique(RoleId roleId, ShortString name);
35
+ error ErrorIAccessRoleInvalidUpdate(RoleId roleId, bool isCustom);
36
+ error ErrorIAccessRoleIsCustomIsImmutable(RoleId roleId, bool isCustom, bool isCustomExisting);
37
+ error ErrorIAccessSetLockedForNonexstentRole(RoleId roleId);
38
+ error ErrorIAccessGrantNonexstentRole(RoleId roleId);
39
+ error ErrorIAccessRevokeNonexstentRole(RoleId roleId);
40
+ error ErrorIAccessRenounceNonexstentRole(RoleId roleId);
41
+
42
+ error ErrorIAccessTargetAddressZero();
43
+ error ErrorIAccessTargetAlreadyExists(address target, ShortString name);
44
+ error ErrorIAccessTargetNameEmpty(address target);
45
+ error ErrorIAccessTargetNameExists(address target, address existingTarget, ShortString name);
46
+ error ErrorIAccessSetLockedForNonexstentTarget(address target);
47
+ error ErrorIAccessTargetLocked(address target);
48
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {Fee} from "../../types/Fee.sol";
6
+ import {Timestamp} from "../../types/Timestamp.sol";
7
+
8
+ interface IBundle {
9
+ struct BundleInfo {
10
+ NftId poolNftId;
11
+ Fee fee; // bundle fee on net premium amounts
12
+ bytes filter; // required conditions for applications to be considered for collateralization by this bundle
13
+ uint256 capitalAmount; // net investment capital + net premiums - payouts
14
+ uint256 lockedAmount; // capital amount linked to collateralizaion of non-closed policies (<= balance)
15
+ uint256 balanceAmount; // total amount of funds: capitalAmount + fees (balance >= captial)
16
+ uint256 lifetime;
17
+ Timestamp expiredAt; // no new policies
18
+ Timestamp closedAt; // no open policies, locked amount = 0
19
+ }
20
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {DistributorType} from "../../types/DistributorType.sol";
5
+ import {NftId} from "../../types/NftId.sol";
6
+ import {Timestamp} from "../../types/Timestamp.sol";
7
+ import {UFixed} from "../../types/UFixed.sol";
8
+
9
+ interface IDistribution {
10
+
11
+ struct DistributorTypeInfo {
12
+ string name;
13
+ UFixed minDiscountPercentage;
14
+ UFixed maxDiscountPercentage;
15
+ UFixed commissionPercentage;
16
+ uint32 maxReferralCount;
17
+ uint32 maxReferralLifetime;
18
+ bool allowSelfReferrals;
19
+ bool allowRenewals;
20
+ bytes data;
21
+ }
22
+
23
+ struct DistributorInfo {
24
+ DistributorType distributorType;
25
+ bool active;
26
+ bytes data;
27
+ }
28
+
29
+ struct ReferralInfo {
30
+ NftId distributorNftId;
31
+ string referralCode;
32
+ UFixed discountPercentage;
33
+ uint32 maxReferrals;
34
+ uint32 usedReferrals;
35
+ Timestamp expiryAt;
36
+ bytes data;
37
+ }
38
+
39
+ }
@@ -0,0 +1,45 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {NumberId} from "../../types/NumberId.sol";
6
+ import {ReferralId} from "../../types/Referral.sol";
7
+ import {RiskId} from "../../types/RiskId.sol";
8
+ import {Timestamp} from "../../types/Timestamp.sol";
9
+
10
+ interface IPolicy {
11
+ struct PolicyInfo {
12
+ NftId productNftId;
13
+ NftId bundleNftId;
14
+ ReferralId referralId;
15
+ RiskId riskId;
16
+ uint256 sumInsuredAmount;
17
+ uint256 premiumAmount;
18
+ uint256 premiumPaidAmount;
19
+ uint256 lifetime;
20
+ bytes applicationData;
21
+ bytes policyData;
22
+ uint16 claimsCount;
23
+ uint16 openClaimsCount;
24
+ uint256 payoutAmount;
25
+ Timestamp activatedAt; // time of underwriting
26
+ Timestamp expiredAt; // no new claims (activatedAt + lifetime)
27
+ Timestamp closedAt; // no locked capital (or declinedAt)
28
+ }
29
+
30
+ // claimId neeeds to be encoded policyNftId:claimId combination
31
+ struct ClaimInfo {
32
+ uint256 claimAmount;
33
+ uint256 paidAmount;
34
+ bytes data;
35
+ Timestamp closedAt; // payoment of confirmed claim amount (or declinedAt)
36
+ }
37
+
38
+ // claimId neeeds to be encoded policyNftId:claimId combination
39
+ struct PayoutInfo {
40
+ NumberId claimId;
41
+ uint256 amount;
42
+ bytes data;
43
+ Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
44
+ }
45
+ }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+
6
+ interface IRisk {
7
+ struct RiskInfo {
8
+ NftId productNftId;
9
+ bytes data;
10
+ }
11
+ }
@@ -0,0 +1,46 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Fee} from "../../types/Fee.sol";
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {UFixed} from "../../types/UFixed.sol";
9
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
10
+
11
+ interface ISetup {
12
+ struct ProductSetupInfo {
13
+ IERC20Metadata token;
14
+ TokenHandler tokenHandler;
15
+ NftId distributionNftId;
16
+ NftId poolNftId;
17
+ Fee distributionFee; // default distribution fee (no referral id)
18
+ Fee productFee; // product fee on net premium
19
+ Fee processingFee; // product fee on payout amounts
20
+ Fee poolFee; // pool fee on net premium
21
+ Fee stakingFee; // pool fee on staked capital from investor
22
+ Fee performanceFee; // pool fee on profits from capital investors
23
+ bool isIntercepting; // intercepts nft transfers (for products)
24
+ address wallet;
25
+ }
26
+
27
+ struct DistributionSetupInfo {
28
+ NftId productNftId;
29
+ TokenHandler tokenHandler;
30
+ Fee distributionFee; // default distribution fee (no referral id)
31
+ bool isIntercepting; // intercepts nft transfers (for distributors)
32
+ address wallet;
33
+ }
34
+
35
+ struct PoolSetupInfo {
36
+ NftId productNftId;
37
+ TokenHandler tokenHandler;
38
+ UFixed collateralizationLevel;
39
+ Fee poolFee; // pool fee on net premium
40
+ Fee stakingFee; // pool fee on staked capital from investor
41
+ Fee performanceFee; // pool fee on profits from capital investors
42
+ bool isIntercepting; // intercepts nft transfers (for bundles)
43
+ bool isConfirmingApplication; // confirms applications before they are underwritten
44
+ address wallet;
45
+ }
46
+ }
@@ -0,0 +1,23 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Fee} from "../../types/Fee.sol";
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
9
+
10
+ interface ITreasury {
11
+ struct TreasuryInfo {
12
+ IERC20Metadata token;
13
+ TokenHandler tokenHandler;
14
+ NftId distributionNftId;
15
+ NftId poolNftId;
16
+ Fee distributionFee; // default distribution fee (no referral id)
17
+ Fee productFee; // product fee on net premium
18
+ Fee processingFee; // product fee on payout amounts
19
+ Fee poolFee; // pool fee on net premium
20
+ Fee stakingFee; // pool fee on staked capital from investor
21
+ Fee performanceFee; // pool fee on profits from capital investors
22
+ }
23
+ }