@etherisc/gif-next 0.0.2-35bac6a → 0.0.2-37d1fff-554

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 (365) hide show
  1. package/README.md +158 -6
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/{Component.sol/Component.json → BaseComponent.sol/BaseComponent.json} +48 -53
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +405 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{IPool.sol/IPoolComponent.json → IBaseComponent.sol/IBaseComponent.json} +48 -53
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +340 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +487 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +370 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +405 -40
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +258 -45
  18. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +2 -2
  20. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +2 -2
  22. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +2 -2
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +2 -2
  26. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  33. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  35. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  36. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  37. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  38. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  39. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  40. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  41. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  42. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  43. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +2 -2
  44. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  45. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +2 -2
  46. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1362 -247
  48. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{component/IComponent.sol → IInstanceLinked.sol}/IInstanceLinked.json +1 -1
  50. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  51. package/artifacts/contracts/instance/Instance.sol/Instance.json +1676 -358
  52. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{component/IComponent.sol/IComponentModule.json → base/ComponentServiceBase.sol/ComponentServiceBase.json} +156 -101
  54. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  55. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  56. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  58. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  60. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  61. package/artifacts/contracts/instance/{component/IComponent.sol/IComponentContract.json → base/IService.sol/IService.json} +148 -27
  62. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +376 -0
  64. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  66. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  68. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
  70. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  71. package/artifacts/contracts/{components/IProduct.sol/IProductComponent.json → instance/base/ServiceBase.sol/ServiceBase.json} +145 -37
  72. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  73. package/artifacts/contracts/instance/{access → module/access}/Access.sol/AccessModule.json +85 -152
  74. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  75. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccess.json +1 -1
  76. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  77. package/artifacts/contracts/instance/{access → module/access}/IAccess.sol/IAccessModule.json +96 -99
  78. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +297 -0
  80. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  82. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +297 -0
  84. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +117 -0
  86. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  87. package/artifacts/contracts/instance/{component → module/component}/IComponent.sol/IComponent.json +1 -1
  88. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  89. package/artifacts/contracts/instance/{product/IProductService.sol/IProductService.json → module/component/IComponent.sol/IComponentModule.json} +56 -53
  90. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
  92. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.json +10 -0
  94. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
  96. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  97. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicy.json +1 -1
  98. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{policy → module/policy}/IPolicy.sol/IPolicyModule.json +159 -106
  100. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  101. package/artifacts/contracts/instance/{policy → module/policy}/PolicyModule.sol/PolicyModule.json +159 -106
  102. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPool.json +1 -1
  104. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  105. package/artifacts/contracts/instance/{pool → module/pool}/IPoolModule.sol/IPoolModule.json +57 -62
  106. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +144 -0
  108. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
  110. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +113 -0
  112. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  113. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +131 -0
  114. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  115. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
  116. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  117. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +511 -0
  118. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  119. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  120. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  121. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +511 -0
  122. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +531 -0
  124. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +420 -0
  126. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
  128. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/{component/ComponentModule.sol/ComponentModule.json → service/IDistributionService.sol/IDistributionService.json} +137 -139
  130. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  131. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +440 -0
  132. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  133. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +630 -0
  134. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  135. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +543 -0
  136. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  137. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +858 -0
  138. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +65 -2
  140. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +1 -1
  141. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +103 -77
  143. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  144. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
  145. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  146. package/artifacts/contracts/registry/Registry.sol/Registry.json +194 -69
  147. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  148. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  149. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  150. package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
  151. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  152. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +18 -63
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  154. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
  155. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  156. package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +18 -63
  157. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  158. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/Versionable.sol/Versionable.json} +74 -72
  159. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  160. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
  161. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  162. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  163. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  164. package/artifacts/contracts/test/TestPool.sol/TestPool.json +578 -0
  165. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  166. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +575 -0
  167. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  168. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
  169. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  170. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  171. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  172. package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
  173. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  174. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  175. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  176. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  177. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  178. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
  179. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  180. package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
  181. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  182. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  183. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  185. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  186. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  187. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  188. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  189. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  190. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  191. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  193. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  194. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  195. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  197. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  200. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  202. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  203. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  204. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  205. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  206. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
  207. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  208. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +88 -62
  209. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  210. package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
  211. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  212. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  213. package/contracts/components/BaseComponent.sol +94 -0
  214. package/contracts/components/Distribution.sol +132 -0
  215. package/contracts/components/IBaseComponent.sol +19 -0
  216. package/contracts/components/IDistributionComponent.sol +48 -0
  217. package/contracts/components/IPoolComponent.sol +71 -0
  218. package/contracts/components/IProductComponent.sol +38 -0
  219. package/contracts/components/Pool.sol +222 -16
  220. package/contracts/components/Product.sol +193 -32
  221. package/contracts/experiment/errors/Require.sol +10 -5
  222. package/contracts/experiment/errors/Revert.sol +13 -8
  223. package/contracts/experiment/inheritance/A.sol +8 -11
  224. package/contracts/experiment/inheritance/B.sol +10 -5
  225. package/contracts/experiment/inheritance/C.sol +11 -5
  226. package/contracts/experiment/inheritance/IA.sol +2 -7
  227. package/contracts/experiment/inheritance/IB.sol +3 -2
  228. package/contracts/experiment/inheritance/IC.sol +4 -3
  229. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  230. package/contracts/experiment/statemachine/ISM.sol +25 -0
  231. package/contracts/experiment/statemachine/README.md +112 -0
  232. package/contracts/experiment/statemachine/SM.sol +57 -0
  233. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  234. package/contracts/experiment/types/TypeA.sol +14 -9
  235. package/contracts/experiment/types/TypeB.sol +14 -9
  236. package/contracts/instance/IInstance.sol +41 -8
  237. package/contracts/instance/IInstanceLinked.sol +8 -0
  238. package/contracts/instance/Instance.sol +54 -44
  239. package/contracts/instance/base/ComponentServiceBase.sol +42 -0
  240. package/contracts/instance/base/IInstanceBase.sol +22 -0
  241. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  242. package/contracts/instance/base/ILifecycle.sol +30 -0
  243. package/contracts/instance/base/IService.sol +15 -0
  244. package/contracts/instance/base/InstanceBase.sol +91 -0
  245. package/contracts/instance/base/KeyValueStore.sol +161 -0
  246. package/contracts/instance/base/Lifecycle.sol +100 -0
  247. package/contracts/instance/base/ModuleBase.sol +57 -0
  248. package/contracts/instance/base/ServiceBase.sol +37 -0
  249. package/contracts/instance/module/access/Access.sol +149 -0
  250. package/contracts/instance/module/access/IAccess.sol +53 -0
  251. package/contracts/instance/module/bundle/BundleModule.sol +134 -0
  252. package/contracts/instance/module/bundle/IBundle.sol +53 -0
  253. package/contracts/instance/module/component/ComponentModule.sol +70 -0
  254. package/contracts/instance/module/component/IComponent.sol +28 -0
  255. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  256. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  257. package/contracts/instance/module/policy/IPolicy.sol +63 -0
  258. package/contracts/instance/module/policy/PolicyModule.sol +91 -0
  259. package/contracts/instance/module/pool/IPoolModule.sol +40 -0
  260. package/contracts/instance/module/pool/PoolModule.sol +90 -0
  261. package/contracts/instance/module/risk/IRisk.sol +26 -0
  262. package/contracts/instance/module/risk/RiskModule.sol +62 -0
  263. package/contracts/instance/module/treasury/ITreasury.sol +82 -0
  264. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  265. package/contracts/instance/module/treasury/TreasuryModule.sol +138 -0
  266. package/contracts/instance/service/ComponentOwnerService.sol +157 -0
  267. package/contracts/instance/service/DistributionService.sol +59 -0
  268. package/contracts/instance/service/IComponentOwnerService.sol +22 -0
  269. package/contracts/instance/service/IDistributionService.sol +12 -0
  270. package/contracts/instance/service/IPoolService.sol +37 -0
  271. package/contracts/instance/service/IProductService.sol +107 -0
  272. package/contracts/instance/service/PoolService.sol +149 -0
  273. package/contracts/instance/service/ProductService.sol +509 -0
  274. package/contracts/registry/ChainNft.sol +80 -94
  275. package/contracts/registry/IChainNft.sol +10 -7
  276. package/contracts/registry/IRegistry.sol +38 -51
  277. package/contracts/registry/IRegistryLinked.sol +8 -0
  278. package/contracts/registry/Registry.sol +311 -111
  279. package/contracts/shared/ERC165.sol +21 -0
  280. package/contracts/shared/IOwnable.sol +6 -0
  281. package/contracts/shared/IRegisterable.sol +24 -0
  282. package/contracts/shared/IVersionable.sol +52 -0
  283. package/contracts/shared/Registerable.sol +86 -0
  284. package/contracts/shared/Versionable.sol +89 -0
  285. package/contracts/test/TestDistribution.sol +21 -0
  286. package/contracts/test/TestFee.sol +25 -0
  287. package/contracts/test/TestPool.sol +25 -0
  288. package/contracts/test/TestProduct.sol +72 -0
  289. package/contracts/test/TestRegisterable.sol +19 -0
  290. package/contracts/test/TestRoleId.sol +14 -0
  291. package/contracts/test/TestService.sol +32 -0
  292. package/contracts/test/TestToken.sol +26 -0
  293. package/contracts/test/TestVersion.sol +44 -0
  294. package/contracts/test/TestVersionable.sol +17 -0
  295. package/contracts/test/Usdc.sol +26 -0
  296. package/contracts/types/AddressSet.sol +58 -0
  297. package/contracts/types/Blocknumber.sol +76 -18
  298. package/contracts/types/ChainId.sol +18 -10
  299. package/contracts/types/Fee.sol +56 -0
  300. package/contracts/types/Key32.sol +45 -0
  301. package/contracts/types/NftId.sol +48 -11
  302. package/contracts/types/NftIdSet.sol +60 -0
  303. package/contracts/types/ObjectType.sol +131 -0
  304. package/contracts/types/ReferralId.sol +48 -0
  305. package/contracts/types/RiskId.sol +43 -0
  306. package/contracts/types/RoleId.sol +38 -0
  307. package/contracts/types/StateId.sol +101 -0
  308. package/contracts/types/Timestamp.sol +85 -17
  309. package/contracts/types/UFixed.sol +74 -76
  310. package/contracts/types/Version.sol +95 -0
  311. package/package.json +19 -5
  312. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  313. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  314. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  315. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  316. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  317. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  318. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  319. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  320. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  321. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  322. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  323. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  324. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  325. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  326. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  327. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  328. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  329. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  330. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  331. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  332. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  333. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  334. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  335. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  336. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  337. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  338. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  339. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  340. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  341. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  342. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  343. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  344. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  345. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  346. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  347. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  348. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  349. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  350. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  351. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  352. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  353. package/contracts/components/Component.sol +0 -62
  354. package/contracts/components/IPool.sol +0 -9
  355. package/contracts/components/IProduct.sol +0 -12
  356. package/contracts/instance/access/Access.sol +0 -218
  357. package/contracts/instance/access/IAccess.sol +0 -83
  358. package/contracts/instance/component/ComponentModule.sol +0 -248
  359. package/contracts/instance/component/IComponent.sol +0 -95
  360. package/contracts/instance/policy/IPolicy.sol +0 -66
  361. package/contracts/instance/policy/PolicyModule.sol +0 -107
  362. package/contracts/instance/pool/IPoolModule.sol +0 -41
  363. package/contracts/instance/pool/PoolModule.sol +0 -86
  364. package/contracts/instance/product/IProductService.sol +0 -46
  365. package/contracts/instance/product/ProductService.sol +0 -108
package/README.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # gif-next (Generic Insurance Framework next version)
2
2
 
3
+ ## Submodules checkout
4
+
5
+ This repository uses submodules. To checkout or update to the latest submodules, run the following command after updating to any revision (or checking out the repository)
6
+
7
+ ```shell
8
+ git submodule update --recursive
9
+ ```
10
+
3
11
  ## Hardhat
4
12
 
5
13
  ### NPM Commands
@@ -15,15 +23,33 @@ npm run coverage
15
23
 
16
24
  ### Deployment
17
25
 
26
+ Install the dependencies before running the script below for the first time.
27
+
28
+ ```bash
29
+ npm install
30
+ ```
31
+
32
+ The deploy script will deploy all required contracts and create a test instance with a test product and a test pool.
33
+
34
+ ```bash
35
+ # run deployment on a locally created ganache instance
36
+ export SKIP_VERIFICATION=true
37
+ hh run scripts/deploy_all.ts
18
38
  ```
19
- hh run --network <networkname> scripts/deploy.ts
39
+
40
+ ```bash
41
+ # set appropriate values vor env variables (see below)
42
+
43
+ # run deployment on another network
44
+ hh run --network <networkname> scripts/deploy_all.ts
20
45
  ```
21
46
 
22
- Networks:
23
- - hardhat (dynamically created network - https://hardhat.org/hardhat-network/docs/overview)
24
- - anvil (anvsil chain running in container next when using devcontainer)
25
- - mumbai (polygon testnet, requires WEB3_INFURA_PROJECT_ID)
26
- - mainnet (polygon mainnet, requires WEB3_INFURA_PROJECT_ID)
47
+ Environment variables:
48
+
49
+ - `SKIP_VERIFICATION` set to `true` to skip etherscan verification (required for ganacht and anvil)
50
+ - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
51
+ - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
52
+ - `ETHERSCAN_API_KEY` `POLYGONSCAN_API_KEY` the api key for etherscan/polygonscan (required for mumbai and mainnet)
27
53
 
28
54
 
29
55
  ### Console
@@ -48,6 +74,9 @@ https://hardhat.org/hardhat-runner/docs/guides/compile-contracts
48
74
  ```shell
49
75
  forge build
50
76
 
77
+ # contract sizes
78
+ forge build --sizes | grep Instance
79
+
51
80
  forge test
52
81
 
53
82
  # run single test case
@@ -119,9 +148,132 @@ uint256 lifetime =365*24*3600;
119
148
  uint256 policyNftId = ps.createApplicationForBundle(customer, bundleNftId, sumInsuredAmount, premiumAmount, lifetime);
120
149
 
121
150
  ```
151
+ ### Library Linking
152
+
153
+ https://ethereum.stackexchange.com/questions/153411/does-foundry-support-dynamical-library-linking-in-solidity
122
154
 
155
+ ```toml
156
+ # foundry.toml
157
+
158
+ [profile.default]
159
+ # expected format(example below): libraries = ["<path>:<lib name>:<address>"]
160
+ libraries = ["src/libraries/MyLibrary.sol:MyLibrary:0x..."]
161
+ ```
123
162
 
124
163
  ### Documentation
125
164
 
126
165
  https://book.getfoundry.sh/reference/
127
166
 
167
+ ## Style Guide
168
+
169
+ Solidity code is to be written according to the [Solidity Style Guide](https://docs.soliditylang.org/en/latest/style-guide.html).
170
+
171
+ Documentation of the code should be written inline using [NatSpec](https://docs.soliditylang.org/en/latest/natspec-format.html).
172
+
173
+ ### Naming conventions
174
+
175
+ Additionally, we use the following naming conventions:
176
+
177
+ - Function arguments and return types: If using custom data types, make the name include the type by appending the Type to the argument name, e.g. `function getInfo(NftId bundleNftId)` instead of `function getInfo(NftId bundleId)`. Background: Custom data types are lost when using the ABI or Typescript binding classes (e.g. instead of `NftID` a `uint96` is used), so the type needs to be included in the name to make it clear what the argument is without having to look at the documentation or checking the solidity source code.
178
+ - When naming a field or an attribute `id` and the context is not clear, call it `nftId` instead so its clear what type if id it is as there will be multiple ids for different kind of objects. Example: if you the function has a bundle nft id and a policy nft id as arguments, call them `bundleNftId` and `policyNftId` instead of `id` and `policyId`. In case of doubt, be a bit more verbose for the sake of clarity.
179
+ - When naming things, remember that the code will likely be used in Javascript/Typescript as well, so avoid names that are reserved in Javascript/Typescript. A list of reserved words in Javascript can be found [here](https://www.w3schools.com/js/js_reserved.asp) and a list of reserved words in Typescript can be found [here](https://www.tektutorialshub.com/typescript/identifiers-keywords-in-typescript/).
180
+
181
+ ### Automatic code formatting
182
+
183
+ We use prettier and the solidity plugin to format the code automatically.
184
+ The plugin is configured to use the style guide mentioned above.
185
+ To execute format checks run `npm run styleCheck`.
186
+ To execute formatting run `npm run styleFix`.
187
+
188
+ ### Linting
189
+
190
+ We use solhint to lint the code.
191
+ To execute linting run `npm run lint`.
192
+
193
+
194
+ ### Adding Brownie (Legacy)
195
+
196
+ python3 is already installed
197
+
198
+ ```bash
199
+ npm install -g ganache
200
+ sudo apt update
201
+ sudo apt install python3-pip
202
+ pip install eth-brownie
203
+ brownie pm install OpenZeppelin/openzeppelin-contracts@4.9.3
204
+ ```
205
+
206
+ ```bash
207
+ brownie compile --all
208
+ brownie console
209
+ ```
210
+
211
+ ```python
212
+ registry_owner = accounts[0]
213
+ instance_owner = accounts[1]
214
+ product_owner = accounts[2]
215
+
216
+ # deploy libs and helper contracts
217
+ nft_id_lib = NftIdLib.deploy({'from': registry_owner})
218
+ ufixed_math_lib = UFixedMathLib.deploy({'from': registry_owner})
219
+ test_fee = TestFee.deploy({'from': registry_owner})
220
+
221
+ # deploy registry and a token
222
+ registry = Registry.deploy({'from': registry_owner})
223
+ nft = ChainNft.deploy(registry, {'from': registry_owner})
224
+ registry.initialize(nft, {'from': registry_owner})
225
+ token = TestUsdc.deploy({'from': registry_owner})
226
+
227
+ # deploy services
228
+ component_owner_service = ComponentOwnerService.deploy(registry, {'from': registry_owner})
229
+ product_service = ProductService.deploy(registry, {'from': registry_owner})
230
+
231
+ # deploy an instance
232
+ instance = Instance.deploy(registry, component_owner_service, product_service, {'from': instance_owner})
233
+
234
+ # deploy product
235
+ pool = TestPool.deploy(registry, instance, token, {'from': product_owner})
236
+ policy_fee = test_fee.createFee(1, -1, 0)
237
+ product = TestProduct.deploy(registry, instance, token, pool, policy_fee, {'from': product_owner})
238
+
239
+ # grant roles
240
+ pool_owner_role = instance.getRoleForName("PoolOwner")
241
+ product_owner_role = instance.getRoleForName("ProductOwner")
242
+ instance.grantRole(pool_owner_role, product_owner, {'from': instance_owner})
243
+ instance.grantRole(product_owner_role, product_owner, {'from': instance_owner})
244
+
245
+ # register objects
246
+ instance.register()
247
+ component_owner_service.register(pool, {'from': product_owner})
248
+ component_owner_service.register(product, {'from': product_owner})
249
+
250
+ instance_id = instance.getNftId()
251
+ pool_id = pool.getNftId()
252
+ product_id = product.getNftId()
253
+ ```
254
+
255
+ ## migrate to kv store
256
+
257
+ sizes before
258
+ | Instance | 23.178 | 1.398 |
259
+ | TestInstanceBase | 3.305 | 21.271 |
260
+ | TestInstanceModuleAccess | 7.86 | 16.716 |
261
+ | TestInstanceModuleBundle | 7.586 | 16.99 |
262
+ | TestInstanceModuleCompensation | 3.305 | 21.271 |
263
+ | TestInstanceModuleComponent | 5.123 | 19.453 |
264
+ | TestInstanceModulePolicy | 6.937 | 17.639 |
265
+ | TestInstanceModulePool | 4.809 | 19.767 |
266
+ | TestInstanceModuleRisk | 3.305 | 21.271 |
267
+ | TestInstanceModuleTreasury | 7.563 | 17.013 |
268
+ ---
269
+ sizes after
270
+ | Instance | 22.727 | 1.849 |
271
+ | TestInstanceBase | 3.485 | 21.091 |
272
+ | TestInstanceModuleAccess | 8.036 | 16.54 |
273
+ | TestInstanceModuleBundle | 8.354 | 16.222 |
274
+ | TestInstanceModuleCompensation | 3.485 | 21.091 |
275
+ | TestInstanceModuleComponent | 5.482 | 19.094 |
276
+ | TestInstanceModulePolicy | 7.502 | 17.074 |
277
+ | TestInstanceModulePool | 5.522 | 19.054 |
278
+ | TestInstanceModuleRisk | 4.635 | 19.941 |
279
+ | TestInstanceModuleTreasury | 8.945 | 15.631 |
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/bb7e3a8f79eaabeda9b0ac6ad2b6d9a9.json"
4
+ }
@@ -1,33 +1,8 @@
1
1
  {
2
2
  "_format": "hh-sol-artifact-1",
3
- "contractName": "Component",
4
- "sourceName": "contracts/components/Component.sol",
3
+ "contractName": "BaseComponent",
4
+ "sourceName": "contracts/components/BaseComponent.sol",
5
5
  "abi": [
6
- {
7
- "anonymous": false,
8
- "inputs": [
9
- {
10
- "indexed": false,
11
- "internalType": "uint256",
12
- "name": "idx",
13
- "type": "uint256"
14
- },
15
- {
16
- "indexed": false,
17
- "internalType": "address",
18
- "name": "module",
19
- "type": "address"
20
- },
21
- {
22
- "indexed": false,
23
- "internalType": "string",
24
- "name": "comment",
25
- "type": "string"
26
- }
27
- ],
28
- "name": "LogDebug",
29
- "type": "event"
30
- },
31
6
  {
32
7
  "inputs": [],
33
8
  "name": "getData",
@@ -41,19 +16,6 @@
41
16
  "stateMutability": "view",
42
17
  "type": "function"
43
18
  },
44
- {
45
- "inputs": [],
46
- "name": "getInitialOwner",
47
- "outputs": [
48
- {
49
- "internalType": "address",
50
- "name": "deployer",
51
- "type": "address"
52
- }
53
- ],
54
- "stateMutability": "view",
55
- "type": "function"
56
- },
57
19
  {
58
20
  "inputs": [],
59
21
  "name": "getInstance",
@@ -99,7 +61,7 @@
99
61
  "outputs": [
100
62
  {
101
63
  "internalType": "NftId",
102
- "name": "",
64
+ "name": "nftId",
103
65
  "type": "uint96"
104
66
  }
105
67
  ],
@@ -121,12 +83,12 @@
121
83
  },
122
84
  {
123
85
  "inputs": [],
124
- "name": "getType",
86
+ "name": "getToken",
125
87
  "outputs": [
126
88
  {
127
- "internalType": "uint256",
128
- "name": "objectType",
129
- "type": "uint256"
89
+ "internalType": "contract IERC20Metadata",
90
+ "name": "token",
91
+ "type": "address"
130
92
  }
131
93
  ],
132
94
  "stateMutability": "view",
@@ -134,12 +96,12 @@
134
96
  },
135
97
  {
136
98
  "inputs": [],
137
- "name": "isRegisterable",
99
+ "name": "getType",
138
100
  "outputs": [
139
101
  {
140
- "internalType": "bool",
141
- "name": "",
142
- "type": "bool"
102
+ "internalType": "ObjectType",
103
+ "name": "objectType",
104
+ "type": "uint8"
143
105
  }
144
106
  ],
145
107
  "stateMutability": "pure",
@@ -147,17 +109,24 @@
147
109
  },
148
110
  {
149
111
  "inputs": [],
150
- "name": "isRegistered",
112
+ "name": "getWallet",
151
113
  "outputs": [
152
114
  {
153
- "internalType": "bool",
154
- "name": "",
155
- "type": "bool"
115
+ "internalType": "address",
116
+ "name": "walletAddress",
117
+ "type": "address"
156
118
  }
157
119
  ],
158
120
  "stateMutability": "view",
159
121
  "type": "function"
160
122
  },
123
+ {
124
+ "inputs": [],
125
+ "name": "lock",
126
+ "outputs": [],
127
+ "stateMutability": "nonpayable",
128
+ "type": "function"
129
+ },
161
130
  {
162
131
  "inputs": [],
163
132
  "name": "register",
@@ -170,6 +139,32 @@
170
139
  ],
171
140
  "stateMutability": "nonpayable",
172
141
  "type": "function"
142
+ },
143
+ {
144
+ "inputs": [
145
+ {
146
+ "internalType": "bytes4",
147
+ "name": "interfaceId",
148
+ "type": "bytes4"
149
+ }
150
+ ],
151
+ "name": "supportsInterface",
152
+ "outputs": [
153
+ {
154
+ "internalType": "bool",
155
+ "name": "",
156
+ "type": "bool"
157
+ }
158
+ ],
159
+ "stateMutability": "view",
160
+ "type": "function"
161
+ },
162
+ {
163
+ "inputs": [],
164
+ "name": "unlock",
165
+ "outputs": [],
166
+ "stateMutability": "nonpayable",
167
+ "type": "function"
173
168
  }
174
169
  ],
175
170
  "bytecode": "0x",
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/bb7e3a8f79eaabeda9b0ac6ad2b6d9a9.json"
4
+ }