@etherisc/gif-next 0.0.2-a0d749a → 0.0.2-a196164-289

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 (366) hide show
  1. package/README.md +155 -7
  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 +1403 -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 +1778 -373
  52. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +387 -0
  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/ComponentModule.sol/ComponentModule.json → base/IService.sol/IService.json} +152 -138
  62. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.json +463 -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/instance/base/ServiceBase.sol/ServiceBase.json +387 -0
  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/{pool → module/pool}/PoolModule.sol/PoolModule.json +50 -68
  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 +618 -0
  124. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +507 -0
  126. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +405 -0
  128. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +366 -0
  130. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  131. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +481 -0
  132. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  133. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +671 -0
  134. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  135. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +630 -0
  136. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  137. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +945 -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/registry/RegistryUpgradeable.sol/RegistryUpgradeable.dbg.json +4 -0
  148. package/artifacts/contracts/registry/RegistryUpgradeable.sol/RegistryUpgradeable.json +711 -0
  149. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  150. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  151. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +4 -0
  152. package/artifacts/contracts/{registry/IRegistry.sol → shared/IOwnable.sol}/IOwnable.json +1 -1
  153. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  154. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegisterable.sol}/IRegisterable.json +18 -63
  155. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  156. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  157. package/artifacts/contracts/shared/Proxy.sol/Proxy.dbg.json +4 -0
  158. package/artifacts/contracts/shared/Proxy.sol/Proxy.json +235 -0
  159. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.dbg.json +4 -0
  160. package/artifacts/contracts/shared/Proxy.sol/ProxyWithProxyAdminGetter.json +129 -0
  161. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  162. package/artifacts/contracts/{registry/Registry.sol → shared/Registerable.sol}/Registerable.json +18 -63
  163. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  164. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +251 -0
  165. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.dbg.json +4 -0
  166. package/artifacts/contracts/shared/VersionableUpgradeable.sol/VersionableUpgradeable.json +228 -0
  167. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +4 -0
  168. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +405 -0
  169. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  170. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  171. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +4 -0
  172. package/artifacts/contracts/test/TestPool.sol/TestPool.json +578 -0
  173. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +4 -0
  174. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +575 -0
  175. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  176. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +137 -0
  177. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  178. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  179. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  180. package/artifacts/contracts/test/TestService.sol/TestService.json +466 -0
  181. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  182. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +338 -0
  183. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  184. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  185. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  186. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +293 -0
  187. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  188. package/artifacts/contracts/test/Usdc.sol/USDC.json +338 -0
  189. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  190. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  191. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  192. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
  193. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  195. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  196. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  197. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  198. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +111 -0
  199. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  200. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  201. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  202. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +10 -0
  203. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  204. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  205. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +4 -0
  206. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +99 -0
  207. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  209. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  210. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +30 -0
  211. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  212. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  213. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  214. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +64 -2
  215. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +1 -1
  216. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +88 -62
  217. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  218. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  219. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  220. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +30 -0
  221. package/contracts/components/BaseComponent.sol +94 -0
  222. package/contracts/components/Distribution.sol +132 -0
  223. package/contracts/components/IBaseComponent.sol +19 -0
  224. package/contracts/components/IDistributionComponent.sol +47 -0
  225. package/contracts/components/IPoolComponent.sol +71 -0
  226. package/contracts/components/IProductComponent.sol +38 -0
  227. package/contracts/components/Pool.sol +223 -10
  228. package/contracts/components/Product.sol +192 -20
  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/instance/IInstance.sol +43 -8
  235. package/contracts/instance/IInstanceLinked.sol +8 -0
  236. package/contracts/instance/Instance.sol +52 -42
  237. package/contracts/instance/base/ComponentServiceBase.sol +42 -0
  238. package/contracts/instance/base/IInstanceBase.sol +22 -0
  239. package/contracts/instance/base/IKeyValueStore.sol +50 -0
  240. package/contracts/instance/base/ILifecycle.sol +30 -0
  241. package/contracts/instance/base/IService.sol +15 -0
  242. package/contracts/instance/base/InstanceBase.sol +91 -0
  243. package/contracts/instance/base/KeyValueStore.sol +161 -0
  244. package/contracts/instance/base/Lifecycle.sol +100 -0
  245. package/contracts/instance/base/ModuleBase.sol +57 -0
  246. package/contracts/instance/base/ServiceBase.sol +37 -0
  247. package/contracts/instance/module/access/Access.sol +149 -0
  248. package/contracts/instance/module/access/IAccess.sol +53 -0
  249. package/contracts/instance/module/bundle/BundleModule.sol +134 -0
  250. package/contracts/instance/module/bundle/IBundle.sol +53 -0
  251. package/contracts/instance/module/component/ComponentModule.sol +70 -0
  252. package/contracts/instance/module/component/IComponent.sol +28 -0
  253. package/contracts/instance/module/distribution/DistributionModule.sol +17 -0
  254. package/contracts/instance/module/distribution/IDistribution.sol +10 -0
  255. package/contracts/instance/module/policy/IPolicy.sol +63 -0
  256. package/contracts/instance/module/policy/PolicyModule.sol +91 -0
  257. package/contracts/instance/module/pool/IPoolModule.sol +40 -0
  258. package/contracts/instance/module/pool/PoolModule.sol +90 -0
  259. package/contracts/instance/module/risk/IRisk.sol +26 -0
  260. package/contracts/instance/module/risk/RiskModule.sol +62 -0
  261. package/contracts/instance/module/treasury/ITreasury.sol +82 -0
  262. package/contracts/instance/module/treasury/TokenHandler.sol +48 -0
  263. package/contracts/instance/module/treasury/TreasuryModule.sol +138 -0
  264. package/contracts/instance/service/ComponentOwnerService.sol +157 -0
  265. package/contracts/instance/service/DistributionService.sol +59 -0
  266. package/contracts/instance/service/IComponentOwnerService.sol +22 -0
  267. package/contracts/instance/service/IDistributionService.sol +12 -0
  268. package/contracts/instance/service/IPoolService.sol +37 -0
  269. package/contracts/instance/service/IProductService.sol +107 -0
  270. package/contracts/instance/service/PoolService.sol +149 -0
  271. package/contracts/instance/service/ProductService.sol +509 -0
  272. package/contracts/registry/ChainNft.sol +61 -37
  273. package/contracts/registry/IRegistry.sol +27 -50
  274. package/contracts/registry/IRegistryLinked.sol +8 -0
  275. package/contracts/registry/Registry.sol +282 -110
  276. package/contracts/registry/RegistryUpgradeable.sol +548 -0
  277. package/contracts/shared/ERC165.sol +21 -0
  278. package/contracts/shared/IOwnable.sol +6 -0
  279. package/contracts/shared/IRegisterable.sol +24 -0
  280. package/contracts/shared/IVersionable.sol +65 -0
  281. package/contracts/shared/Proxy.sol +89 -0
  282. package/contracts/shared/Registerable.sol +86 -0
  283. package/contracts/shared/Versionable.sol +99 -0
  284. package/contracts/shared/VersionableUpgradeable.sol +120 -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/Fee.sol +56 -0
  298. package/contracts/types/Key32.sol +45 -0
  299. package/contracts/types/NftId.sol +22 -1
  300. package/contracts/types/NftIdSet.sol +60 -0
  301. package/contracts/types/ObjectType.sol +131 -0
  302. package/contracts/types/ReferralId.sol +48 -0
  303. package/contracts/types/RiskId.sol +43 -0
  304. package/contracts/types/RoleId.sol +38 -0
  305. package/contracts/types/StateId.sol +101 -0
  306. package/contracts/types/Timestamp.sol +22 -1
  307. package/contracts/types/UFixed.sol +26 -22
  308. package/contracts/types/Version.sol +103 -0
  309. package/package.json +14 -5
  310. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  311. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  312. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  313. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  314. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  315. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  316. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  317. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  318. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  319. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  320. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  321. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  322. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  323. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  324. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  325. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  326. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  327. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  328. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  329. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  330. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  331. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  332. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  333. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  334. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  335. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  336. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  337. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  338. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  339. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  340. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  341. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  342. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  343. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  344. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  345. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  346. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  347. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  348. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  349. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  350. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  351. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  352. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  353. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  354. package/contracts/components/Component.sol +0 -60
  355. package/contracts/components/IPool.sol +0 -9
  356. package/contracts/components/IProduct.sol +0 -9
  357. package/contracts/instance/access/Access.sol +0 -165
  358. package/contracts/instance/access/IAccess.sol +0 -63
  359. package/contracts/instance/component/ComponentModule.sol +0 -213
  360. package/contracts/instance/component/IComponent.sol +0 -73
  361. package/contracts/instance/policy/IPolicy.sol +0 -51
  362. package/contracts/instance/policy/PolicyModule.sol +0 -91
  363. package/contracts/instance/pool/IPoolModule.sol +0 -29
  364. package/contracts/instance/pool/PoolModule.sol +0 -73
  365. package/contracts/instance/product/IProductService.sol +0 -36
  366. package/contracts/instance/product/ProductService.sol +0 -112
@@ -1,91 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
5
- import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
6
-
7
- import {IProductService} from "../product/IProductService.sol";
8
- import {IPolicy, IPolicyModule} from "./IPolicy.sol";
9
- import {NftId, NftIdLib} from "../../types/NftId.sol";
10
-
11
- abstract contract PolicyModule is IRegistryLinked, IPolicyModule {
12
- using NftIdLib for NftId;
13
-
14
- mapping(NftId nftId => PolicyInfo info) private _policyInfo;
15
- mapping(NftId nftId => NftId bundleNftId) private _bundleForPolicy;
16
-
17
- IProductService private _productService;
18
-
19
- // TODO find a better place to avoid dupliation
20
- modifier onlyProductService2() {
21
- require(
22
- address(_productService) == msg.sender,
23
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
24
- );
25
- _;
26
- }
27
-
28
- constructor(address productService) {
29
- _productService = IProductService(productService);
30
- }
31
-
32
- function createApplication(
33
- IRegistry.RegistryInfo memory productInfo,
34
- address applicationOwner,
35
- uint256 sumInsuredAmount,
36
- uint256 premiumAmount,
37
- uint256 lifetime,
38
- NftId bundleNftId
39
- ) external override onlyProductService2 returns (NftId nftId) {
40
- // TODO add parameter validation
41
- if (bundleNftId.gtz()) {
42
- IRegistry.RegistryInfo memory bundleInfo = this
43
- .getRegistry()
44
- .getInfo(bundleNftId);
45
- // IRegistry.RegistryInfo memory poolInfo = this.getRegistry().getInfo(bundleInfo.parentNftId);
46
- }
47
-
48
- nftId = this.getRegistry().registerObjectForInstance(
49
- productInfo.nftId,
50
- this.getRegistry().POLICY(),
51
- applicationOwner
52
- );
53
-
54
- _policyInfo[nftId] = PolicyInfo(
55
- nftId,
56
- PolicyState.Applied,
57
- sumInsuredAmount,
58
- premiumAmount,
59
- lifetime,
60
- block.timestamp,
61
- 0, // activatedAt
62
- 0, // expiredAt
63
- 0 // closedAt
64
- );
65
-
66
- _bundleForPolicy[nftId] = bundleNftId;
67
-
68
- // add logging
69
- }
70
-
71
- function activate(NftId nftId) external override onlyProductService2 {
72
- PolicyInfo storage info = _policyInfo[nftId];
73
- info.activatedAt = block.timestamp;
74
- info.expiredAt = block.timestamp + info.lifetime;
75
- info.state = PolicyState.Active;
76
-
77
- // add logging
78
- }
79
-
80
- function getBundleNftForPolicy(
81
- NftId nftId
82
- ) external view returns (NftId bundleNft) {
83
- return _bundleForPolicy[nftId];
84
- }
85
-
86
- function getPolicyInfo(
87
- NftId nftId
88
- ) external view returns (PolicyInfo memory info) {
89
- return _policyInfo[nftId];
90
- }
91
- }
@@ -1,29 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
5
- import {NftId} from "../../types/NftId.sol";
6
-
7
- interface IPool {
8
- struct PoolInfo {
9
- NftId nftId;
10
- address wallet;
11
- address token;
12
- uint256 capital;
13
- uint256 lockedCapital;
14
- }
15
- }
16
-
17
- interface IPoolModule is IOwnable, IRegistryLinked, IPool {
18
- function underwrite(NftId poolNftId, NftId policyNftId) external;
19
-
20
- function createPoolInfo(
21
- NftId nftId,
22
- address wallet,
23
- address token
24
- ) external;
25
-
26
- function getPoolInfo(
27
- NftId nftId
28
- ) external view returns (PoolInfo memory info);
29
- }
@@ -1,73 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
5
- import {IProductService} from "../product/IProductService.sol";
6
- import {IPolicy, IPolicyModule} from "../policy/IPolicy.sol";
7
- import {IPoolModule} from "./IPoolModule.sol";
8
- import {NftId, NftIdLib} from "../../types/NftId.sol";
9
-
10
- abstract contract PoolModule is IPoolModule {
11
- using NftIdLib for NftId;
12
-
13
- uint256 public constant INITIAL_CAPITAL = 10000 * 10 ** 6;
14
-
15
- mapping(NftId nftId => PoolInfo info) private _poolInfo;
16
-
17
- IProductService private _productService;
18
-
19
- modifier onlyProductService() {
20
- require(
21
- address(_productService) == msg.sender,
22
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
23
- );
24
- _;
25
- }
26
-
27
- constructor(address productService) {
28
- _productService = IProductService(productService);
29
- }
30
-
31
- function createPoolInfo(
32
- NftId nftId,
33
- address wallet,
34
- address token
35
- ) public override {
36
- require(_poolInfo[nftId].nftId.eqz(), "ERROR:PL-001:ALREADY_CREATED");
37
-
38
- _poolInfo[nftId] = PoolInfo(
39
- nftId,
40
- wallet,
41
- token,
42
- INITIAL_CAPITAL,
43
- 0 // locked capital
44
- );
45
- }
46
-
47
- function underwrite(
48
- NftId poolNftId,
49
- NftId policyNftId
50
- ) external override onlyProductService {
51
- PoolInfo storage poolInfo = _poolInfo[poolNftId];
52
- require(poolInfo.nftId == poolNftId, "ERROR:PL-002:POOL_UNKNOWN");
53
-
54
- IPolicyModule policyModule = IPolicyModule(address(this));
55
- IPolicy.PolicyInfo memory policyInfo = policyModule.getPolicyInfo(
56
- policyNftId
57
- );
58
-
59
- require(
60
- poolInfo.capital - poolInfo.lockedCapital >=
61
- policyInfo.sumInsuredAmount,
62
- "ERROR:PL-003:CAPACITY_TOO_LOW"
63
- );
64
-
65
- poolInfo.lockedCapital += policyInfo.sumInsuredAmount;
66
- }
67
-
68
- function getPoolInfo(
69
- NftId nftId
70
- ) external view override returns (PoolInfo memory info) {
71
- info = _poolInfo[nftId];
72
- }
73
- }
@@ -1,36 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../IInstance.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
-
8
- // TODO or name this IProtectionService to have Product be something more generic (loan, savings account, ...)
9
- interface IProductService is IRegistryLinked {
10
- function createApplication(
11
- address applicationOwner,
12
- uint256 sumInsuredAmount,
13
- uint256 premiumAmount,
14
- uint256 lifetime,
15
- NftId bundleNftId
16
- ) external returns (NftId nftId);
17
-
18
- // function revoke(unit256 nftId) external;
19
-
20
- function underwrite(NftId nftId) external;
21
-
22
- // function decline(uint256 nftId) external;
23
- // function expire(uint256 nftId) external;
24
- function close(NftId nftId) external;
25
-
26
- // function collectPremium(uint256 nftId, uint256 premiumAmount) external;
27
-
28
- // function createClaim(uint256 nftId, uint256 claimAmount) external;
29
- // function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
30
- // function declineClaim(uint256 nftId, uint256 claimId) external;
31
- // function closeClaim(uint256 nftId, uint256 claimId) external;
32
- }
33
-
34
- interface IProductModule is IOwnable, IRegistryLinked {
35
- function getProductService() external view returns (IProductService);
36
- }
@@ -1,112 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // import {IProduct} from "../../components/IProduct.sol";
5
- // import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
6
- // import {IInstance} from "../IInstance.sol";
7
- import {IRegistry} from "../../registry/IRegistry.sol";
8
- import {IPolicyModule} from "../policy/IPolicy.sol";
9
- import {RegistryLinked} from "../../registry/Registry.sol";
10
- import {IProductService, IProductModule} from "./IProductService.sol";
11
- import {IComponentModule} from "../../instance/component/IComponent.sol";
12
- import {IPoolModule} from "../../instance/pool/IPoolModule.sol";
13
- import {NftId, NftIdLib} from "../../types/NftId.sol";
14
-
15
- // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
16
- contract ProductService is RegistryLinked, IProductService {
17
- using NftIdLib for NftId;
18
-
19
- constructor(address registry) RegistryLinked(registry) {}
20
-
21
- function createApplication(
22
- address applicationOwner,
23
- uint256 sumInsuredAmount,
24
- uint256 premiumAmount,
25
- uint256 lifetime,
26
- NftId bundleNftId
27
- ) external override returns (NftId nftId) {
28
- // same as only registered product
29
- NftId productNftId = _registry.getNftId(msg.sender);
30
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
31
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
32
- productNftId
33
- );
34
- require(
35
- productInfo.objectType == _registry.PRODUCT(),
36
- "ERROR_NOT_PRODUCT"
37
- );
38
-
39
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
40
- productInfo.parentNftId
41
- );
42
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
43
- require(
44
- instanceInfo.objectType == _registry.INSTANCE(),
45
- "ERROR_NOT_INSTANCE"
46
- );
47
-
48
- IPolicyModule policyModule = IPolicyModule(instanceInfo.objectAddress);
49
- nftId = policyModule.createApplication(
50
- productInfo,
51
- applicationOwner,
52
- sumInsuredAmount,
53
- premiumAmount,
54
- lifetime,
55
- bundleNftId
56
- );
57
-
58
- // add logging
59
- }
60
-
61
- function underwrite(NftId nftId) external override {
62
- // same as only registered product
63
- NftId productNftId = _registry.getNftId(msg.sender);
64
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
65
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
66
- productNftId
67
- );
68
- require(
69
- productInfo.objectType == _registry.PRODUCT(),
70
- "ERROR_NOT_PRODUCT"
71
- );
72
-
73
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
74
- productInfo.parentNftId
75
- );
76
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
77
- require(
78
- instanceInfo.objectType == _registry.INSTANCE(),
79
- "ERROR_NOT_INSTANCE"
80
- );
81
-
82
- // get responsible pool
83
- IComponentModule componentModule = IComponentModule(
84
- instanceInfo.objectAddress
85
- );
86
- NftId poolNftId = componentModule.getPoolNftId(productNftId);
87
-
88
- // lock capital (and update pool accounting)
89
- IPoolModule poolModule = IPoolModule(instanceInfo.objectAddress);
90
- poolModule.underwrite(poolNftId, nftId);
91
-
92
- // activate policy
93
- IPolicyModule policyModule = IPolicyModule(instanceInfo.objectAddress);
94
- policyModule.activate(nftId);
95
-
96
- // add logging
97
- }
98
-
99
- function close(NftId nftId) external override {}
100
- }
101
-
102
- abstract contract ProductModule is IProductModule {
103
- IProductService private _productService;
104
-
105
- constructor(address productService) {
106
- _productService = IProductService(productService);
107
- }
108
-
109
- function getProductService() external view returns (IProductService) {
110
- return _productService;
111
- }
112
- }