@etherisc/gif-next 0.0.2-9141c0d → 0.0.2-91f98cf-477

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 (334) hide show
  1. package/README.md +267 -1
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +174 -0
  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/IBaseComponent.sol/IBaseComponent.json +174 -0
  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 +4 -0
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +578 -0
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +4 -0
  17. package/artifacts/contracts/components/Product.sol/Product.json +444 -0
  18. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +105 -0
  20. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +105 -0
  22. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +128 -0
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +4 -0
  25. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +42 -0
  26. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +4 -0
  27. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +76 -0
  28. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +4 -0
  29. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +89 -0
  30. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +4 -0
  31. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +128 -0
  32. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +4 -0
  33. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +37 -0
  34. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +4 -0
  35. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +50 -0
  36. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +4 -0
  37. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +63 -0
  38. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  39. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  40. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  41. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  42. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  43. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  44. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  45. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  46. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  47. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  48. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +4 -0
  49. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +10 -0
  50. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +4 -0
  51. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +10 -0
  52. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +4 -0
  53. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +2007 -0
  54. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +4 -0
  55. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +24 -0
  56. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +4 -0
  57. package/artifacts/contracts/instance/Instance.sol/Instance.json +2385 -0
  58. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +300 -0
  60. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  62. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +560 -0
  64. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  66. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/base/IService.sol/IService.json +300 -0
  68. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  69. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +376 -0
  70. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +710 -0
  72. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  73. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  74. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +4 -0
  75. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.json +10 -0
  76. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +4 -0
  77. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +300 -0
  78. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +4 -0
  79. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +333 -0
  80. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +4 -0
  81. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +10 -0
  82. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +4 -0
  83. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +333 -0
  84. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +4 -0
  85. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +297 -0
  86. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +4 -0
  87. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.json +10 -0
  88. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +4 -0
  89. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +297 -0
  90. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +4 -0
  91. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +117 -0
  92. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +4 -0
  93. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +10 -0
  94. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +4 -0
  95. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +117 -0
  96. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +4 -0
  97. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +10 -0
  98. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +4 -0
  99. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.json +10 -0
  100. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +10 -0
  102. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +4 -0
  103. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.json +10 -0
  104. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +4 -0
  105. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +284 -0
  106. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +4 -0
  107. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +284 -0
  108. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +10 -0
  110. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +4 -0
  111. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +144 -0
  112. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +4 -0
  113. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +144 -0
  114. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +4 -0
  115. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.json +10 -0
  116. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +4 -0
  117. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +113 -0
  118. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +4 -0
  119. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +131 -0
  120. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +4 -0
  121. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +10 -0
  122. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +4 -0
  123. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +511 -0
  124. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  125. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +76 -0
  126. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +4 -0
  127. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +511 -0
  128. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +531 -0
  130. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  131. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +420 -0
  132. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  133. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +364 -0
  134. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  135. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +325 -0
  136. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +440 -0
  138. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  139. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +630 -0
  140. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  141. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +543 -0
  142. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  143. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +858 -0
  144. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
  145. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +597 -0
  146. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +4 -0
  147. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +452 -0
  148. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +4 -0
  149. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +305 -0
  150. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  151. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.json +24 -0
  152. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +4 -0
  153. package/artifacts/contracts/registry/Registry.sol/Registry.json +472 -0
  154. package/artifacts/contracts/registry/RegistryUpgradeable.sol/Registry.dbg.json +4 -0
  155. package/artifacts/contracts/registry/RegistryUpgradeable.sol/Registry.json +495 -0
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  158. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +24 -0
  160. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +121 -0
  162. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +164 -0
  164. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +4 -0
  165. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +178 -0
  166. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +4 -0
  167. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +129 -0
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +121 -0
  170. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  171. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +164 -0
  172. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +4 -0
  173. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +187 -0
  174. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
  176. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  177. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  178. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  179. package/artifacts/contracts/test/TestPool.sol/TestPool.json +578 -0
  180. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  181. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +575 -0
  182. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  183. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
  184. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  185. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  186. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  187. package/artifacts/contracts/test/TestService.sol/TestService.json +379 -0
  188. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  189. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  190. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  191. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  192. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  193. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +206 -0
  194. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  195. package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
  196. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  197. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  198. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
  200. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +10 -0
  202. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  204. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  205. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  206. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +153 -0
  208. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  209. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  210. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  212. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  214. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  216. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  218. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  220. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +236 -0
  222. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +479 -0
  224. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/Version.sol/VersionLib.json +139 -0
  226. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  227. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  228. package/contracts/components/BaseComponent.sol +94 -0
  229. package/contracts/components/Distribution.sol +132 -0
  230. package/contracts/components/IBaseComponent.sol +19 -0
  231. package/contracts/components/IDistributionComponent.sol +47 -0
  232. package/contracts/components/IPoolComponent.sol +71 -0
  233. package/contracts/components/IProductComponent.sol +38 -0
  234. package/contracts/components/Pool.sol +235 -0
  235. package/contracts/components/Product.sol +227 -0
  236. package/contracts/experiment/errors/Require.sol +38 -0
  237. package/contracts/experiment/errors/Revert.sol +44 -0
  238. package/contracts/experiment/inheritance/A.sol +53 -0
  239. package/contracts/experiment/inheritance/B.sol +28 -0
  240. package/contracts/experiment/inheritance/C.sol +34 -0
  241. package/contracts/experiment/inheritance/IA.sol +13 -0
  242. package/contracts/experiment/inheritance/IB.sol +10 -0
  243. package/contracts/experiment/inheritance/IC.sol +12 -0
  244. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  245. package/contracts/experiment/statemachine/ISM.sol +25 -0
  246. package/contracts/experiment/statemachine/README.md +112 -0
  247. package/contracts/experiment/statemachine/SM.sol +57 -0
  248. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  249. package/contracts/experiment/types/TypeA.sol +47 -0
  250. package/contracts/experiment/types/TypeB.sol +29 -0
  251. package/contracts/instance/IInstance.sol +53 -0
  252. package/contracts/instance/IInstanceLinked.sol +8 -0
  253. package/contracts/instance/Instance.sol +74 -0
  254. package/contracts/instance/base/ComponentServiceBase.sol +42 -0
  255. package/contracts/instance/base/IInstanceBase.sol +22 -0
  256. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  257. package/contracts/instance/base/ILifecycle.sol +30 -0
  258. package/contracts/instance/base/IService.sol +15 -0
  259. package/contracts/instance/base/InstanceBase.sol +91 -0
  260. package/contracts/instance/base/KeyValueStore.sol +161 -0
  261. package/contracts/instance/base/Lifecycle.sol +100 -0
  262. package/contracts/instance/base/ModuleBase.sol +57 -0
  263. package/contracts/instance/base/ServiceBase.sol +37 -0
  264. package/contracts/instance/module/access/Access.sol +149 -0
  265. package/contracts/instance/module/access/IAccess.sol +53 -0
  266. package/contracts/instance/module/bundle/BundleModule.sol +134 -0
  267. package/contracts/instance/module/bundle/IBundle.sol +53 -0
  268. package/contracts/instance/module/component/ComponentModule.sol +70 -0
  269. package/contracts/instance/module/component/IComponent.sol +28 -0
  270. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  271. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  272. package/contracts/instance/module/policy/IPolicy.sol +63 -0
  273. package/contracts/instance/module/policy/PolicyModule.sol +91 -0
  274. package/contracts/instance/module/pool/IPoolModule.sol +40 -0
  275. package/contracts/instance/module/pool/PoolModule.sol +90 -0
  276. package/contracts/instance/module/risk/IRisk.sol +26 -0
  277. package/contracts/instance/module/risk/RiskModule.sol +62 -0
  278. package/contracts/instance/module/treasury/ITreasury.sol +82 -0
  279. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  280. package/contracts/instance/module/treasury/TreasuryModule.sol +138 -0
  281. package/contracts/instance/service/ComponentOwnerService.sol +157 -0
  282. package/contracts/instance/service/DistributionService.sol +59 -0
  283. package/contracts/instance/service/IComponentOwnerService.sol +22 -0
  284. package/contracts/instance/service/IDistributionService.sol +12 -0
  285. package/contracts/instance/service/IPoolService.sol +37 -0
  286. package/contracts/instance/service/IProductService.sol +107 -0
  287. package/contracts/instance/service/PoolService.sol +149 -0
  288. package/contracts/instance/service/ProductService.sol +509 -0
  289. package/contracts/registry/ChainNft.sol +159 -0
  290. package/contracts/registry/IChainNft.sol +21 -0
  291. package/contracts/registry/IRegistry.sol +57 -0
  292. package/contracts/registry/IRegistryLinked.sol +8 -0
  293. package/contracts/registry/Registry.sol +381 -0
  294. package/contracts/registry/RegistryUpgradeable.sol +415 -0
  295. package/contracts/shared/ERC165.sol +21 -0
  296. package/contracts/shared/IOwnable.sol +6 -0
  297. package/contracts/shared/IRegisterable.sol +24 -0
  298. package/contracts/shared/IVersionable.sol +52 -0
  299. package/contracts/shared/Proxy.sol +83 -0
  300. package/contracts/shared/Registerable.sol +86 -0
  301. package/contracts/shared/Versionable.sol +89 -0
  302. package/contracts/shared/VersionableUpgradeable.sol +108 -0
  303. package/contracts/test/TestDistribution.sol +21 -0
  304. package/contracts/test/TestFee.sol +25 -0
  305. package/contracts/test/TestPool.sol +25 -0
  306. package/contracts/test/TestProduct.sol +72 -0
  307. package/contracts/test/TestRegisterable.sol +19 -0
  308. package/contracts/test/TestRoleId.sol +14 -0
  309. package/contracts/test/TestService.sol +32 -0
  310. package/contracts/{Dip.sol → test/TestToken.sol} +5 -5
  311. package/contracts/test/TestVersion.sol +44 -0
  312. package/contracts/test/TestVersionable.sol +17 -0
  313. package/contracts/test/Usdc.sol +26 -0
  314. package/contracts/types/AddressSet.sol +58 -0
  315. package/contracts/types/Blocknumber.sol +118 -0
  316. package/contracts/types/ChainId.sol +38 -0
  317. package/contracts/types/Fee.sol +56 -0
  318. package/contracts/types/Key32.sol +45 -0
  319. package/contracts/types/NftId.sol +72 -0
  320. package/contracts/types/NftIdSet.sol +60 -0
  321. package/contracts/types/ObjectType.sol +131 -0
  322. package/contracts/types/ReferralId.sol +48 -0
  323. package/contracts/types/RiskId.sol +43 -0
  324. package/contracts/types/RoleId.sol +38 -0
  325. package/contracts/types/StateId.sol +101 -0
  326. package/contracts/types/Timestamp.sol +123 -0
  327. package/contracts/types/UFixed.sol +209 -0
  328. package/contracts/types/Version.sol +95 -0
  329. package/package.json +24 -9
  330. package/artifacts/contracts/Dip.sol/DIP.dbg.json +0 -4
  331. package/artifacts/contracts/Dip.sol/DIP.json +0 -338
  332. package/artifacts/contracts/Lock.sol/Lock.dbg.json +0 -4
  333. package/artifacts/contracts/Lock.sol/Lock.json +0 -74
  334. package/contracts/Lock.sol +0 -34
package/README.md CHANGED
@@ -1,8 +1,35 @@
1
1
  # gif-next (Generic Insurance Framework next version)
2
2
 
3
+ ## Add OpenZeppelin V5 Dependencies
4
+
5
+ ```shell
6
+ forge install openzeppelin-contracts-500=OpenZeppelin/openzeppelin-contracts@v5.0.0
7
+ cd cd lib/openzeppelin-contracts-500
8
+ git checkout tags/v5.0.0
9
+ cd ../..
10
+ ```
11
+
12
+ See `remappings.txt` to see how to work with different OpenZeppelin versions in parallel
13
+
14
+ ```
15
+ cat remappings.txt
16
+ @openzeppelin5/contracts/=lib/openzeppelin-contracts-500/contracts/
17
+ @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
18
+ @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
19
+ ```
20
+
21
+
22
+ ## Submodules checkout
23
+
24
+ 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)
25
+
26
+ ```shell
27
+ git submodule update --recursive
28
+ ```
29
+
3
30
  ## Hardhat
4
31
 
5
- ### Commands
32
+ ### NPM Commands
6
33
 
7
34
  ```shell
8
35
  npm run build
@@ -13,6 +40,48 @@ npm run test-with-gas
13
40
  npm run coverage
14
41
  ```
15
42
 
43
+ ### Deployment
44
+
45
+ Install the dependencies before running the script below for the first time.
46
+
47
+ ```bash
48
+ npm install
49
+ ```
50
+
51
+ The deploy script will deploy all required contracts and create a test instance with a test product and a test pool.
52
+
53
+ ```bash
54
+ # run deployment on a locally created ganache instance
55
+ export SKIP_VERIFICATION=true
56
+ hh run scripts/deploy_all.ts
57
+ ```
58
+
59
+ ```bash
60
+ # set appropriate values vor env variables (see below)
61
+
62
+ # run deployment on another network
63
+ hh run --network <networkname> scripts/deploy_all.ts
64
+ ```
65
+
66
+ Environment variables:
67
+
68
+ - `SKIP_VERIFICATION` set to `true` to skip etherscan verification (required for ganacht and anvil)
69
+ - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
70
+ - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
71
+ - `ETHERSCAN_API_KEY` `POLYGONSCAN_API_KEY` the api key for etherscan/polygonscan (required for mumbai and mainnet)
72
+
73
+
74
+ ### Console
75
+
76
+ ```
77
+ hh console --network <networkname>
78
+
79
+ me = hre.ethers.Wallet.fromPhrase('...')
80
+ provider = hre.ethers.provider
81
+ await provider.getBalance(me)
82
+ ```
83
+
84
+
16
85
  ### Documentation
17
86
 
18
87
  https://hardhat.org/hardhat-runner/docs/guides/compile-contracts
@@ -24,10 +93,207 @@ https://hardhat.org/hardhat-runner/docs/guides/compile-contracts
24
93
  ```shell
25
94
  forge build
26
95
 
96
+ # contract sizes
97
+ forge build --sizes | grep Instance
98
+
27
99
  forge test
100
+
101
+ # run single test case
102
+ forge test --mt test_decimals
103
+
104
+ # run single test case with substantial logginglogging
105
+ # to include logs as well use -vvvvv
106
+ forge test -vvvv --mt test_decimals
107
+
108
+ # provide gas report for a single test
109
+ forge test --mt test_decimals --gas-report
110
+
111
+ forge coverage
112
+ ```
113
+
114
+ Chisel session
115
+ ```typescript
116
+ import "./contracts/components/Component.sol";
117
+ import "./contracts/components/IPool.sol";
118
+ import "./contracts/components/IProduct.sol";
119
+ import "./contracts/components/Pool.sol";
120
+ import "./contracts/components/Product.sol";
121
+ import "./contracts/instance/access/Access.sol";
122
+ import "./contracts/instance/access/IAccess.sol";
123
+ import "./contracts/instance/component/ComponentModule.sol";
124
+ import "./contracts/instance/component/IComponent.sol";
125
+ import "./contracts/instance/IInstance.sol";
126
+ import "./contracts/instance/policy/IPolicy.sol";
127
+ import "./contracts/instance/policy/PolicyModule.sol";
128
+ import "./contracts/instance/product/IProductService.sol";
129
+ import "./contracts/instance/product/ProductService.sol";
130
+ import "./contracts/registry/IRegistry.sol";
131
+
132
+ import {Instance} from "./contracts/instance/Instance.sol";
133
+ import {Registry} from "./contracts/registry/Registry.sol";
134
+ import {DeployAll} from "./scripts/DeployAll.s.sol";
135
+ import {TestPool} from "./test_forge/mock/TestPool.sol";
136
+ import {TestProduct} from "./test_forge/mock/TestProduct.sol";
137
+
138
+ string memory instanceOwnerName = "instanceOwner";
139
+ address instanceOwner = vm.addr(uint256(keccak256(abi.encodePacked(instanceOwnerName))));
140
+
141
+ string memory productOwnerName = "productOwner";
142
+ address productOwner = vm.addr(uint256(keccak256(abi.encodePacked(productOwnerName))));
143
+
144
+ string memory poolOwnerName = "poolOwner";
145
+ address poolOwner = vm.addr(uint256(keccak256(abi.encodePacked(poolOwnerName))));
146
+
147
+ string memory customerName = "customer";
148
+ address customer = vm.addr(uint256(keccak256(abi.encodePacked(customerName))));
149
+
150
+ DeployAll deployer = new DeployAll();
151
+ (
152
+ Registry registry,
153
+ Instance instance,
154
+ TestProduct product,
155
+ TestPool pool
156
+ ) = deployer.run(
157
+ instanceOwner,
158
+ productOwner,
159
+ poolOwner);
160
+
161
+ ProductService ps = ProductService(address(registry));
162
+
163
+ uint256 bundleNftId = 99;
164
+ uint256 sumInsuredAmount = 1000*10**6;
165
+ uint256 premiumAmount = 110*10**6;
166
+ uint256 lifetime =365*24*3600;
167
+ uint256 policyNftId = ps.createApplicationForBundle(customer, bundleNftId, sumInsuredAmount, premiumAmount, lifetime);
168
+
169
+ ```
170
+ ### Library Linking
171
+
172
+ https://ethereum.stackexchange.com/questions/153411/does-foundry-support-dynamical-library-linking-in-solidity
173
+
174
+ ```toml
175
+ # foundry.toml
176
+
177
+ [profile.default]
178
+ # expected format(example below): libraries = ["<path>:<lib name>:<address>"]
179
+ libraries = ["src/libraries/MyLibrary.sol:MyLibrary:0x..."]
28
180
  ```
29
181
 
30
182
  ### Documentation
31
183
 
32
184
  https://book.getfoundry.sh/reference/
33
185
 
186
+ ## Style Guide
187
+
188
+ Solidity code is to be written according to the [Solidity Style Guide](https://docs.soliditylang.org/en/latest/style-guide.html).
189
+
190
+ Documentation of the code should be written inline using [NatSpec](https://docs.soliditylang.org/en/latest/natspec-format.html).
191
+
192
+ ### Naming conventions
193
+
194
+ Additionally, we use the following naming conventions:
195
+
196
+ - 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.
197
+ - 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.
198
+ - 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/).
199
+
200
+ ### Automatic code formatting
201
+
202
+ We use prettier and the solidity plugin to format the code automatically.
203
+ The plugin is configured to use the style guide mentioned above.
204
+ To execute format checks run `npm run styleCheck`.
205
+ To execute formatting run `npm run styleFix`.
206
+
207
+ ### Linting
208
+
209
+ We use solhint to lint the code.
210
+ To execute linting run `npm run lint`.
211
+
212
+
213
+ ### Adding Brownie (Legacy)
214
+
215
+ python3 is already installed
216
+
217
+ ```bash
218
+ npm install -g ganache
219
+ sudo apt update
220
+ sudo apt install python3-pip
221
+ pip install eth-brownie
222
+ brownie pm install OpenZeppelin/openzeppelin-contracts@4.9.3
223
+ brownie pm install OpenZeppelin/openzeppelin-contracts@5.0.0
224
+ ```
225
+
226
+ ```bash
227
+ brownie compile --all
228
+ brownie console
229
+ ```
230
+
231
+ ```python
232
+ registry_owner = accounts[0]
233
+ instance_owner = accounts[1]
234
+ product_owner = accounts[2]
235
+
236
+ # deploy libs and helper contracts
237
+ nft_id_lib = NftIdLib.deploy({'from': registry_owner})
238
+ ufixed_math_lib = UFixedMathLib.deploy({'from': registry_owner})
239
+ test_fee = TestFee.deploy({'from': registry_owner})
240
+
241
+ # deploy registry and a token
242
+ registry = Registry.deploy({'from': registry_owner})
243
+ nft = ChainNft.deploy(registry, {'from': registry_owner})
244
+ registry.initialize(nft, {'from': registry_owner})
245
+ token = TestUsdc.deploy({'from': registry_owner})
246
+
247
+ # deploy services
248
+ component_owner_service = ComponentOwnerService.deploy(registry, {'from': registry_owner})
249
+ product_service = ProductService.deploy(registry, {'from': registry_owner})
250
+
251
+ # deploy an instance
252
+ instance = Instance.deploy(registry, component_owner_service, product_service, {'from': instance_owner})
253
+
254
+ # deploy product
255
+ pool = TestPool.deploy(registry, instance, token, {'from': product_owner})
256
+ policy_fee = test_fee.createFee(1, -1, 0)
257
+ product = TestProduct.deploy(registry, instance, token, pool, policy_fee, {'from': product_owner})
258
+
259
+ # grant roles
260
+ pool_owner_role = instance.getRoleForName("PoolOwner")
261
+ product_owner_role = instance.getRoleForName("ProductOwner")
262
+ instance.grantRole(pool_owner_role, product_owner, {'from': instance_owner})
263
+ instance.grantRole(product_owner_role, product_owner, {'from': instance_owner})
264
+
265
+ # register objects
266
+ instance.register()
267
+ component_owner_service.register(pool, {'from': product_owner})
268
+ component_owner_service.register(product, {'from': product_owner})
269
+
270
+ instance_id = instance.getNftId()
271
+ pool_id = pool.getNftId()
272
+ product_id = product.getNftId()
273
+ ```
274
+
275
+ ## migrate to kv store
276
+
277
+ sizes before
278
+ | Instance | 23.178 | 1.398 |
279
+ | TestInstanceBase | 3.305 | 21.271 |
280
+ | TestInstanceModuleAccess | 7.86 | 16.716 |
281
+ | TestInstanceModuleBundle | 7.586 | 16.99 |
282
+ | TestInstanceModuleCompensation | 3.305 | 21.271 |
283
+ | TestInstanceModuleComponent | 5.123 | 19.453 |
284
+ | TestInstanceModulePolicy | 6.937 | 17.639 |
285
+ | TestInstanceModulePool | 4.809 | 19.767 |
286
+ | TestInstanceModuleRisk | 3.305 | 21.271 |
287
+ | TestInstanceModuleTreasury | 7.563 | 17.013 |
288
+ ---
289
+ sizes after
290
+ | Instance | 22.727 | 1.849 |
291
+ | TestInstanceBase | 3.485 | 21.091 |
292
+ | TestInstanceModuleAccess | 8.036 | 16.54 |
293
+ | TestInstanceModuleBundle | 8.354 | 16.222 |
294
+ | TestInstanceModuleCompensation | 3.485 | 21.091 |
295
+ | TestInstanceModuleComponent | 5.482 | 19.094 |
296
+ | TestInstanceModulePolicy | 7.502 | 17.074 |
297
+ | TestInstanceModulePool | 5.522 | 19.054 |
298
+ | TestInstanceModuleRisk | 4.635 | 19.941 |
299
+ | TestInstanceModuleTreasury | 8.945 | 15.631 |
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/b8c55bd89a64b32d25982590e8ac5473.json"
4
+ }
@@ -0,0 +1,174 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "BaseComponent",
4
+ "sourceName": "contracts/components/BaseComponent.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "getData",
9
+ "outputs": [
10
+ {
11
+ "internalType": "bytes",
12
+ "name": "data",
13
+ "type": "bytes"
14
+ }
15
+ ],
16
+ "stateMutability": "view",
17
+ "type": "function"
18
+ },
19
+ {
20
+ "inputs": [],
21
+ "name": "getInstance",
22
+ "outputs": [
23
+ {
24
+ "internalType": "contract IInstance",
25
+ "name": "instance",
26
+ "type": "address"
27
+ }
28
+ ],
29
+ "stateMutability": "view",
30
+ "type": "function"
31
+ },
32
+ {
33
+ "inputs": [],
34
+ "name": "getNftId",
35
+ "outputs": [
36
+ {
37
+ "internalType": "NftId",
38
+ "name": "nftId",
39
+ "type": "uint96"
40
+ }
41
+ ],
42
+ "stateMutability": "view",
43
+ "type": "function"
44
+ },
45
+ {
46
+ "inputs": [],
47
+ "name": "getOwner",
48
+ "outputs": [
49
+ {
50
+ "internalType": "address",
51
+ "name": "owner",
52
+ "type": "address"
53
+ }
54
+ ],
55
+ "stateMutability": "view",
56
+ "type": "function"
57
+ },
58
+ {
59
+ "inputs": [],
60
+ "name": "getParentNftId",
61
+ "outputs": [
62
+ {
63
+ "internalType": "NftId",
64
+ "name": "nftId",
65
+ "type": "uint96"
66
+ }
67
+ ],
68
+ "stateMutability": "view",
69
+ "type": "function"
70
+ },
71
+ {
72
+ "inputs": [],
73
+ "name": "getRegistry",
74
+ "outputs": [
75
+ {
76
+ "internalType": "contract IRegistry",
77
+ "name": "registry",
78
+ "type": "address"
79
+ }
80
+ ],
81
+ "stateMutability": "view",
82
+ "type": "function"
83
+ },
84
+ {
85
+ "inputs": [],
86
+ "name": "getToken",
87
+ "outputs": [
88
+ {
89
+ "internalType": "contract IERC20Metadata",
90
+ "name": "token",
91
+ "type": "address"
92
+ }
93
+ ],
94
+ "stateMutability": "view",
95
+ "type": "function"
96
+ },
97
+ {
98
+ "inputs": [],
99
+ "name": "getType",
100
+ "outputs": [
101
+ {
102
+ "internalType": "ObjectType",
103
+ "name": "objectType",
104
+ "type": "uint8"
105
+ }
106
+ ],
107
+ "stateMutability": "pure",
108
+ "type": "function"
109
+ },
110
+ {
111
+ "inputs": [],
112
+ "name": "getWallet",
113
+ "outputs": [
114
+ {
115
+ "internalType": "address",
116
+ "name": "walletAddress",
117
+ "type": "address"
118
+ }
119
+ ],
120
+ "stateMutability": "view",
121
+ "type": "function"
122
+ },
123
+ {
124
+ "inputs": [],
125
+ "name": "lock",
126
+ "outputs": [],
127
+ "stateMutability": "nonpayable",
128
+ "type": "function"
129
+ },
130
+ {
131
+ "inputs": [],
132
+ "name": "register",
133
+ "outputs": [
134
+ {
135
+ "internalType": "NftId",
136
+ "name": "componentId",
137
+ "type": "uint96"
138
+ }
139
+ ],
140
+ "stateMutability": "nonpayable",
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"
168
+ }
169
+ ],
170
+ "bytecode": "0x",
171
+ "deployedBytecode": "0x",
172
+ "linkReferences": {},
173
+ "deployedLinkReferences": {}
174
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "_format": "hh-sol-dbg-1",
3
+ "buildInfo": "../../../build-info/b8c55bd89a64b32d25982590e8ac5473.json"
4
+ }