@etherisc/gif-next 0.0.2-aa0bd77 → 0.0.2-aaa8646-641

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 (445) hide show
  1. package/README.md +358 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +698 -35
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1345 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/IComponent.sol/IComponent.json +605 -0
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +1064 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +830 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1246 -65
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +1014 -60
  18. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  19. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  20. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  22. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  23. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +190 -0
  24. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  25. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +288 -519
  26. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +654 -0
  28. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  29. package/artifacts/contracts/instance/Instance.sol/Instance.json +530 -594
  30. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  32. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  34. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1403 -0
  36. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  37. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1025 -0
  38. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +673 -0
  40. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2663 -0
  42. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  43. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +256 -0
  44. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +639 -0
  46. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  48. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  49. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  50. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  51. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +532 -0
  52. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  53. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  54. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  55. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  56. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  58. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  60. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  61. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  62. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  63. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  64. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  65. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  66. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  67. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  68. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  69. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  70. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +902 -0
  72. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +649 -0
  74. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1326 -0
  76. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +725 -0
  78. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1072 -0
  80. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +685 -0
  82. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1515 -0
  84. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +757 -0
  86. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +501 -0
  88. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +714 -0
  90. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +602 -0
  92. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +871 -0
  94. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +969 -0
  96. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +960 -0
  98. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +518 -0
  100. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +450 -0
  102. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1575 -0
  104. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +741 -0
  106. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  107. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1481 -0
  108. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +709 -0
  110. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +988 -0
  112. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +689 -0
  114. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +872 -0
  116. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +653 -0
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +548 -71
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +866 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  126. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.json +631 -78
  128. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  129. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  130. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1158 -0
  132. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  138. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  139. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  140. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  141. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +138 -0
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IService.sol/IService.json +335 -0
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  154. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  156. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  157. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  158. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  160. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  162. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  163. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  164. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  165. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +261 -217
  166. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  167. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  168. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  169. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  170. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  171. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  172. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  173. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  174. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  175. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  176. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  177. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  178. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  179. package/artifacts/contracts/test/TestService.sol/TestService.json +596 -0
  180. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  181. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  182. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  183. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  184. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  185. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  186. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  187. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  188. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  189. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  190. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/Amount.sol/AmountLib.json +209 -0
  192. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
  194. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +2 -2
  196. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +179 -0
  198. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  200. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/Fee.sol/FeeLib.json +288 -0
  202. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  203. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  204. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +161 -5
  206. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  207. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  208. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -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/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +209 -0
  214. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +142 -0
  216. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  218. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  220. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  222. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  223. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  224. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +280 -0
  226. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  227. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  228. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  229. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  230. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  231. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  232. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  233. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  234. package/contracts/components/Component.sol +231 -40
  235. package/contracts/components/Distribution.sol +284 -0
  236. package/contracts/components/IComponent.sol +76 -0
  237. package/contracts/components/IDistributionComponent.sol +71 -0
  238. package/contracts/components/IPoolComponent.sol +113 -0
  239. package/contracts/components/IProductComponent.sol +40 -0
  240. package/contracts/components/Pool.sol +291 -18
  241. package/contracts/components/Product.sol +341 -32
  242. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +13 -0
  243. package/contracts/instance/BundleManager.sol +126 -0
  244. package/contracts/instance/Cloneable.sol +51 -0
  245. package/contracts/instance/IInstance.sol +75 -15
  246. package/contracts/instance/IInstanceService.sol +80 -0
  247. package/contracts/instance/Instance.sol +218 -44
  248. package/contracts/instance/InstanceAccessManager.sol +541 -0
  249. package/contracts/instance/InstanceAuthorizationsLib.sol +300 -0
  250. package/contracts/instance/InstanceReader.sol +320 -0
  251. package/contracts/instance/InstanceService.sol +309 -0
  252. package/contracts/instance/InstanceServiceManager.sol +54 -0
  253. package/contracts/instance/InstanceStore.sol +208 -0
  254. package/contracts/instance/ObjectManager.sol +82 -0
  255. package/contracts/instance/base/ComponentService.sol +148 -0
  256. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  257. package/contracts/instance/base/ILifecycle.sol +30 -0
  258. package/contracts/instance/base/KeyValueStore.sol +180 -0
  259. package/contracts/instance/base/Lifecycle.sol +117 -0
  260. package/contracts/instance/module/IAccess.sol +54 -0
  261. package/contracts/instance/module/IBundle.sol +23 -0
  262. package/contracts/instance/module/IComponents.sol +41 -0
  263. package/contracts/instance/module/IDistribution.sol +41 -0
  264. package/contracts/instance/module/IPolicy.sol +77 -0
  265. package/contracts/instance/module/IRisk.sol +11 -0
  266. package/contracts/instance/module/ISetup.sol +33 -0
  267. package/contracts/instance/module/ITreasury.sol +23 -0
  268. package/contracts/instance/service/ApplicationService.sol +185 -0
  269. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  270. package/contracts/instance/service/BundleService.sol +440 -0
  271. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  272. package/contracts/instance/service/ClaimService.sol +239 -0
  273. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  274. package/contracts/instance/service/DistributionService.sol +342 -0
  275. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  276. package/contracts/instance/service/IApplicationService.sol +61 -0
  277. package/contracts/instance/service/IBundleService.sol +102 -0
  278. package/contracts/instance/service/IClaimService.sol +92 -0
  279. package/contracts/instance/service/IDistributionService.sol +85 -0
  280. package/contracts/instance/service/IPolicyService.sol +142 -0
  281. package/contracts/instance/service/IPoolService.sol +102 -0
  282. package/contracts/instance/service/IPricingService.sol +36 -0
  283. package/contracts/instance/service/IProductService.sol +40 -0
  284. package/contracts/instance/service/PolicyService.sol +579 -0
  285. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  286. package/contracts/instance/service/PoolService.sol +338 -0
  287. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  288. package/contracts/instance/service/PricingService.sol +275 -0
  289. package/contracts/instance/service/PricingServiceManager.sol +51 -0
  290. package/contracts/instance/service/ProductService.sol +210 -0
  291. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  292. package/contracts/registry/ChainNft.sol +145 -108
  293. package/contracts/registry/IRegistry.sol +82 -49
  294. package/contracts/registry/IRegistryService.sol +68 -0
  295. package/contracts/registry/ITransferInterceptor.sol +7 -0
  296. package/contracts/registry/Registry.sol +403 -112
  297. package/contracts/registry/RegistryAccessManager.sol +216 -0
  298. package/contracts/registry/RegistryService.sol +286 -0
  299. package/contracts/registry/RegistryServiceManager.sol +62 -0
  300. package/contracts/registry/ReleaseManager.sol +324 -0
  301. package/contracts/registry/TokenRegistry.sol +116 -0
  302. package/contracts/shared/ContractDeployerLib.sol +72 -0
  303. package/contracts/shared/ERC165.sol +27 -0
  304. package/contracts/shared/INftOwnable.sol +23 -0
  305. package/contracts/shared/IPolicyHolder.sol +26 -0
  306. package/contracts/shared/IRegisterable.sol +15 -0
  307. package/contracts/shared/IRegistryLinked.sol +12 -0
  308. package/contracts/shared/IService.sol +16 -0
  309. package/contracts/shared/IVersionable.sol +53 -0
  310. package/contracts/shared/NftOwnable.sol +120 -0
  311. package/contracts/shared/PolicyHolder.sol +81 -0
  312. package/contracts/shared/ProxyManager.sol +169 -0
  313. package/contracts/shared/Registerable.sol +74 -0
  314. package/contracts/shared/RegistryLinked.sol +48 -0
  315. package/contracts/shared/Service.sol +72 -0
  316. package/contracts/shared/TokenHandler.sol +33 -0
  317. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  318. package/contracts/shared/Versionable.sol +59 -0
  319. package/contracts/test/TestFee.sol +25 -0
  320. package/contracts/test/TestRegisterable.sol +18 -0
  321. package/contracts/test/TestRoleId.sol +14 -0
  322. package/contracts/test/TestService.sol +25 -0
  323. package/contracts/test/TestToken.sol +26 -0
  324. package/contracts/test/TestVersion.sol +44 -0
  325. package/contracts/test/TestVersionable.sol +17 -0
  326. package/contracts/test/Usdc.sol +26 -0
  327. package/contracts/types/AddressSet.sol +58 -0
  328. package/contracts/types/Amount.sol +70 -0
  329. package/contracts/types/Blocknumber.sol +119 -0
  330. package/contracts/types/ChainId.sol +24 -10
  331. package/contracts/types/ClaimId.sol +75 -0
  332. package/contracts/types/DistributorType.sol +55 -0
  333. package/contracts/types/Fee.sol +64 -0
  334. package/contracts/types/Key32.sol +50 -0
  335. package/contracts/types/NftId.sol +63 -8
  336. package/contracts/types/NftIdSet.sol +62 -0
  337. package/contracts/types/NumberId.sol +52 -0
  338. package/contracts/types/ObjectType.sol +161 -0
  339. package/contracts/types/PayoutId.sol +82 -0
  340. package/contracts/types/Referral.sol +89 -0
  341. package/contracts/types/RiskId.sol +43 -0
  342. package/contracts/types/RoleId.sol +97 -0
  343. package/contracts/types/Seconds.sol +54 -0
  344. package/contracts/types/StateId.sol +110 -0
  345. package/contracts/types/Timestamp.sol +132 -0
  346. package/contracts/types/UFixed.sol +326 -0
  347. package/contracts/types/Version.sol +108 -0
  348. package/package.json +21 -6
  349. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  350. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  351. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  352. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  353. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  354. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  355. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  357. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  359. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  361. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  363. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  365. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  367. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  369. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  370. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  371. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  372. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  373. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  374. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  375. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  376. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  377. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  378. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  379. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  380. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  381. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  382. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  384. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  386. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  387. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  388. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  389. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  390. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  391. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  393. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  394. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  395. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  396. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  397. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  398. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  399. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  400. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  402. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  403. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  405. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -162
  407. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  408. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  409. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  411. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  412. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  413. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  414. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  415. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  416. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  417. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  418. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  420. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  421. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  422. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  423. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  424. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  425. package/contracts/components/IPool.sol +0 -9
  426. package/contracts/components/IProduct.sol +0 -11
  427. package/contracts/experiment/inheritance/A.sol +0 -56
  428. package/contracts/experiment/inheritance/B.sol +0 -23
  429. package/contracts/experiment/inheritance/C.sol +0 -28
  430. package/contracts/experiment/inheritance/IA.sol +0 -18
  431. package/contracts/experiment/inheritance/IB.sol +0 -9
  432. package/contracts/experiment/inheritance/IC.sol +0 -11
  433. package/contracts/experiment/types/TypeA.sol +0 -42
  434. package/contracts/experiment/types/TypeB.sol +0 -24
  435. package/contracts/instance/access/Access.sol +0 -218
  436. package/contracts/instance/access/IAccess.sol +0 -83
  437. package/contracts/instance/component/ComponentModule.sol +0 -259
  438. package/contracts/instance/component/IComponent.sol +0 -94
  439. package/contracts/instance/policy/IPolicy.sol +0 -66
  440. package/contracts/instance/policy/PolicyModule.sol +0 -106
  441. package/contracts/instance/pool/IPoolModule.sol +0 -40
  442. package/contracts/instance/pool/PoolModule.sol +0 -83
  443. package/contracts/instance/product/IProductService.sol +0 -45
  444. package/contracts/instance/product/ProductService.sol +0 -105
  445. package/contracts/registry/IChainNft.sol +0 -18
package/README.md CHANGED
@@ -1,4 +1,35 @@
1
- # gif-next (Generic Insurance Framework next version)
1
+ # GIF-Next (Generic Insurance Framework, next version)
2
+
3
+
4
+ ## Add OpenZeppelin V5 Dependencies
5
+
6
+ ```shell
7
+ forge install openzeppelin-contracts-500=OpenZeppelin/openzeppelin-contracts@v5.0.0
8
+ cd cd lib/openzeppelin-contracts-500
9
+ git checkout tags/v5.0.0
10
+ cd ../..
11
+ ```
12
+
13
+ See `remappings.txt` to see how to work with different OpenZeppelin versions in parallel
14
+
15
+ ```
16
+ cat remappings.txt
17
+ @openzeppelin5/contracts/=lib/openzeppelin-contracts-500/contracts/
18
+ @openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/
19
+ @openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/
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
+
30
+ ## Example components
31
+
32
+ A (very early) example of a product and a pool can be found in the [gif-next-sandbox repository](https://github.com/etherisc/gif-next-sandbox).
2
33
 
3
34
  ## Hardhat
4
35
 
@@ -13,17 +44,65 @@ npm run test-with-gas
13
44
  npm run coverage
14
45
  ```
15
46
 
16
- ### Deployment
47
+ ### Docgen
48
+
49
+ Produce `solidty-docgen` documentation using the command below.
50
+
51
+ ```shell
52
+ hh docgen
53
+ ```
54
+
55
+ The resulting markdown files are written to `docs`
56
+
57
+
58
+ ### Full protocol deployment
59
+
60
+ Install the dependencies before running the script below for the first time.
61
+
62
+ ```bash
63
+ npm install
64
+ ```
65
+
66
+ The deploy script will deploy all required contracts and create a test instance with a test product and a test pool.
67
+
68
+ ```bash
69
+ # run deployment on a locally created ganache instance
70
+ export SKIP_VERIFICATION=true
71
+ hh run scripts/deploy_all.ts
72
+ ```
73
+
74
+ ```bash
75
+ # set appropriate values vor env variables (see below)
17
76
 
77
+ # run deployment on another network
78
+ hh run --network <networkname> scripts/deploy_all.ts
18
79
  ```
19
- hh run --network <networkname> scripts/deploy.ts
80
+
81
+ Environment variables:
82
+
83
+ - `SKIP_VERIFICATION` set to `true` to skip etherscan verification (required for ganacht and anvil)
84
+ - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
85
+ - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
86
+ - `ETHERSCAN_API_KEY` `POLYGONSCAN_API_KEY` the api key for etherscan/polygonscan (required for mumbai and mainnet)
87
+
88
+ ### Create a new instance
89
+
90
+ Requires previous step to be completed.
91
+
92
+ ```bash
93
+ # set appropriate values vor env variables (see below)
94
+
95
+ hh run --network <networkname> scripts/new_instance.ts
20
96
  ```
21
97
 
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)
98
+ Currently an HD wallet is expected to be used for the deployment. The mnemonic of the wallet needs to be provided via the `WALLET_MNEMONIC` environment variable.
99
+ The instance owner will be the 11th address of the wallet.
100
+
101
+ Environment variables:
102
+
103
+ - `WEB3_INFURA_PROJECT_ID` set to infura project id (required for mumbai and mainnet)
104
+ - `WALLET_MNEMONIC` the mnemonic of the wallet to use for deployment (required for mumbai and mainnet)
105
+ - `REGISTRY_ADDRESS` the address of the registry that is already deployed and configured and has a valid master instance
27
106
 
28
107
 
29
108
  ### Console
@@ -48,6 +127,9 @@ https://hardhat.org/hardhat-runner/docs/guides/compile-contracts
48
127
  ```shell
49
128
  forge build
50
129
 
130
+ # contract sizes
131
+ forge build --sizes | grep Instance
132
+
51
133
  forge test
52
134
 
53
135
  # run single test case
@@ -60,7 +142,11 @@ forge test -vvvv --mt test_decimals
60
142
  # provide gas report for a single test
61
143
  forge test --mt test_decimals --gas-report
62
144
 
145
+ # provide code coverage report
63
146
  forge coverage
147
+ forge coverage --report lcov
148
+
149
+
64
150
  ```
65
151
 
66
152
  Chisel session
@@ -119,9 +205,273 @@ uint256 lifetime =365*24*3600;
119
205
  uint256 policyNftId = ps.createApplicationForBundle(customer, bundleNftId, sumInsuredAmount, premiumAmount, lifetime);
120
206
 
121
207
  ```
208
+ ### Library Linking
209
+
210
+ https://ethereum.stackexchange.com/questions/153411/does-foundry-support-dynamical-library-linking-in-solidity
122
211
 
212
+ ```toml
213
+ # foundry.toml
214
+
215
+ [profile.default]
216
+ # expected format(example below): libraries = ["<path>:<lib name>:<address>"]
217
+ libraries = ["src/libraries/MyLibrary.sol:MyLibrary:0x..."]
218
+ ```
123
219
 
124
220
  ### Documentation
125
221
 
126
222
  https://book.getfoundry.sh/reference/
127
223
 
224
+ ## Style Guide
225
+
226
+ Please see https://docs.etherisc.com/gif-next/3.x/ for style guide and general coding rules.
227
+
228
+ ### Automatic code formatting
229
+
230
+ We use prettier and the solidity plugin to format the code automatically.
231
+ The plugin is configured to use the style guide mentioned above.
232
+ To execute format checks run `npm run styleCheck`.
233
+ To execute formatting run `npm run styleFix`.
234
+
235
+ ### Linting
236
+
237
+ We use solhint to lint the code.
238
+ To execute linting run `npm run lint`.
239
+
240
+
241
+ ### Adding Brownie (Legacy - don't do that :wink: )
242
+
243
+ python3 is already installed
244
+
245
+ ```bash
246
+ npm install -g ganache
247
+ sudo apt update
248
+ sudo apt install python3-pip
249
+ pip install eth-brownie
250
+ brownie pm install OpenZeppelin/openzeppelin-contracts@4.9.3
251
+ brownie pm install OpenZeppelin/openzeppelin-contracts@5.0.0
252
+ ```
253
+
254
+ ```bash
255
+ brownie compile --all
256
+ brownie console
257
+ ```
258
+
259
+ ```python
260
+ registry_owner = accounts[0]
261
+ instance_owner = accounts[1]
262
+ product_owner = accounts[2]
263
+
264
+ # deploy libs and helper contracts
265
+ nft_id_lib = NftIdLib.deploy({'from': registry_owner})
266
+ ufixed_math_lib = UFixedMathLib.deploy({'from': registry_owner})
267
+ test_fee = TestFee.deploy({'from': registry_owner})
268
+
269
+ # deploy registry and a token
270
+ registry = Registry.deploy({'from': registry_owner})
271
+ nft = ChainNft.deploy(registry, {'from': registry_owner})
272
+ registry.initialize(nft, {'from': registry_owner})
273
+ token = TestUsdc.deploy({'from': registry_owner})
274
+
275
+ # deploy services
276
+ component_owner_service = ComponentOwnerService.deploy(registry, {'from': registry_owner})
277
+ product_service = ProductService.deploy(registry, {'from': registry_owner})
278
+
279
+ # deploy an instance
280
+ instance = Instance.deploy(registry, component_owner_service, product_service, {'from': instance_owner})
281
+
282
+ # deploy product
283
+ pool = TestPool.deploy(registry, instance, token, {'from': product_owner})
284
+ policy_fee = test_fee.createFee(1, -1, 0)
285
+ product = TestProduct.deploy(registry, instance, token, pool, policy_fee, {'from': product_owner})
286
+
287
+ # grant roles
288
+ pool_owner_role = instance.getRoleForName("PoolOwner")
289
+ product_owner_role = instance.getRoleForName("ProductOwner")
290
+ instance.grantRole(pool_owner_role, product_owner, {'from': instance_owner})
291
+ instance.grantRole(product_owner_role, product_owner, {'from': instance_owner})
292
+
293
+ # register objects
294
+ instance.register()
295
+ component_owner_service.register(pool, {'from': product_owner})
296
+ component_owner_service.register(product, {'from': product_owner})
297
+
298
+ instance_id = instance.getNftId()
299
+ pool_id = pool.getNftId()
300
+ product_id = product.getNftId()
301
+ ```
302
+
303
+ ## Objects
304
+
305
+ ### Registry
306
+
307
+ Mandatory properties
308
+
309
+ * One registry per chain
310
+ * Global registry: the registry on mainnet
311
+ * One entry per protocol object
312
+ * Once registered object properties are immutable
313
+ * Globally unique NFT minted per protocol object (chain id is embedded in NFT id)
314
+ * Object ownership defined by NFT ownernship
315
+ * Typed objects (instance, product, policy, ...)
316
+ * Each object has parent object (only one exception: protocol object does not have parent object)
317
+ * Parent object type is defined by type of child object
318
+
319
+ Object properties (for smart contracts)
320
+ * Objects that represent a smart contract record its contract address
321
+ * With one exception (see next point) smart contract addresses refer to the address on the same chain as the registry
322
+ * The global registry also holds entries for all the registries on different chains than mainnet, in these cases the addresses refer to the chains of these chain specific registries (this is the only case where registered addresses do not refer to the same chain)
323
+
324
+ Optional properties
325
+
326
+ * Objects can have names
327
+ * Object names are unique per chain
328
+ * Objects may define an intercepting property, in which case a predefined smart contract is involved in NFT transfers of the objects NFT (transfer may trigger actions, transfer may be blocked etc)
329
+ *
330
+
331
+ Ownership property
332
+
333
+ * Object ownership defined by ownership of NFT representing the object
334
+ * Protocol
335
+ * Fixed/predefined owner (address without private key)
336
+ * Registry
337
+ * Allows registration of token and services (per major release)
338
+ * May transfer ownership
339
+ * Token
340
+ * Fixed/predefined owner (address without private key)
341
+ * TODO add whitelisting for token per major release
342
+ * Service
343
+ * Allows upgrades of services as long as major version is same
344
+ * Until further notice the same entity as the registry owner
345
+ * May transfer ownership
346
+ * Instance
347
+ * Granting/revoking of roles (both default + custom)
348
+ * Management of custom roles and targets
349
+ * May lock instance and/or components
350
+ * May transfer ownership
351
+ * Component (Product, Pool, Distribution, Oracle)
352
+ * Register component
353
+ * Set component wallet (which receives fees, holds funds)
354
+ * May lock component
355
+ * May transfer ownership
356
+ * Additional use case specific features
357
+ * Policy
358
+ * Represents policy holder
359
+ * Receive payouts (GIF default behaviour)
360
+ * May transfer ownership
361
+ * Bundle
362
+ * Represents funds owner
363
+ * May withdraw funds not locked by active policies
364
+ * May transfer ownership
365
+ * Distributor
366
+ * Receives commissions from sales (GIF default behaviour)
367
+ * May transfer ownership
368
+
369
+ Intercepting property
370
+ * Service owner is indirectly owner of service manager contract
371
+
372
+ * Instance
373
+ * intercepts transfer of instance owner (new owner needs access manager admin rights for custom roles and targets)
374
+ * intercepts transfer of components, to do what? check that new owner has necessary roles?
375
+ * Product
376
+ * intercepts transfer of policies (use case specific: eg. limit/disallow transfers)
377
+ * Pool:
378
+ * intercepts transfer of bundles (use case specific: eg. limit/disallow transfers)
379
+ * Distribution
380
+ * intercepts transfer of distributors (bookkeeping: only one distributor per address allowed)
381
+ * Oracle
382
+ * likely meaningless
383
+
384
+
385
+ ### Instance
386
+
387
+ ### Product
388
+
389
+ ### Pool
390
+
391
+ ### Distribution
392
+
393
+ ### Oracle
394
+
395
+ ## Registry and Services
396
+
397
+ ### Principles
398
+
399
+ - 1 service per object type and major version
400
+ - registry service guards write access to registry
401
+ - all other objects registered via registry service
402
+ - root object for the complete tree is the protocol object
403
+ - under the root object a single registry object is registered (= global registry/ethereum mainnet)
404
+
405
+
406
+ ### Service Responsibilities
407
+
408
+ Registry Service
409
+
410
+ - deployed and registered during bootstrapping of registry
411
+ - used to register tokens and other services by registry owner
412
+ - an object may only be registered by the service designated by the type of the object
413
+ - to register an object the parent object needs already be registered
414
+ - the type of the object to be registered needs to match a valid child type/parent type combination
415
+
416
+ Instance Service
417
+
418
+ - deploys master instance during its own bootstrapping (if allowed by contract size)
419
+ - registered via registry service by registry owner
420
+ - registeres master instance during its own registration by regsitry owner
421
+ - deploys and registeres new instances (= instance factory) by instance owner (instance owner is a permissionless role, anybody may creates a new instance)
422
+ - provides upgrade functionality to instance owners
423
+
424
+ Product Service
425
+
426
+ - registered via registry service by registry owner
427
+ - registers products for registered instances via registry service by product owner (product owner role is permissend by the product's instance)
428
+ - registers applications/policies for registered products via registry service
429
+
430
+ Distribution Service
431
+
432
+ - registered via registry service by registry owner
433
+ - registers distribution components for registered products via registry service by distribution owner (distribution owner role is permissend by the product's instance)
434
+ - registers distributors for registered distribution components via registry service
435
+
436
+ ## Contract Organisation
437
+
438
+ now
439
+
440
+ contracts
441
+ components
442
+ instance
443
+ registry
444
+ shared
445
+ types
446
+
447
+
448
+ contracts
449
+ component
450
+ pool
451
+ Pool.sol
452
+ PoolService.sol
453
+ oracle
454
+ distribution
455
+ product
456
+ Product.sol
457
+ ProductService.sol
458
+ Component.sol
459
+ ComponentService.sol
460
+ instance
461
+ Instance.sol
462
+ InstanceAccessManager.sol
463
+ InstanceReader.sol
464
+ InstanceService.sol
465
+ InstanceServiceManager.sol
466
+ registry
467
+ ChainNft.sol
468
+ Registry.sol
469
+ RegistryService.sol
470
+ RegistryServiceManager.sol
471
+ shared
472
+ Registerable.sol
473
+ RegisterableUpgradable.sol
474
+ type
475
+ NftId.sol
476
+ ObjectType.sol
477
+
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "_format": "hh-sol-dbg-1",
3
- "buildInfo": "../../../build-info/ed3ef11345a2570c641488ff5c975aca.json"
3
+ "buildInfo": "../../../build-info/8091e0f49ef78cd5175d59633bc07490.json"
4
4
  }