@etherisc/gif-next 0.0.2-96853ac-143 → 0.0.2-96b5b72-170

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 (496) hide show
  1. package/README.md +337 -19
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1387 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1011 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +312 -1138
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +616 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +443 -1231
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1348 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1574 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +979 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +656 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +190 -0
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +478 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  37. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +581 -0
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +194 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  43. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +237 -0
  46. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  48. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  50. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  52. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  54. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  55. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  56. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  57. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  58. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
  60. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
  62. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
  64. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +735 -0
  66. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1106 -0
  68. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  70. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  71. package/artifacts/contracts/pool/Pool.sol/Pool.json +1418 -0
  72. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1630 -0
  74. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +712 -0
  76. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
  78. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
  80. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1386 -0
  82. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
  84. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +493 -0
  86. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  88. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
  90. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +510 -0
  92. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +872 -0
  94. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.json +442 -0
  96. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
  98. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
  100. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
  102. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
  104. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  105. package/artifacts/contracts/product/Product.sol/Product.json +1209 -0
  106. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
  108. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
  110. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  112. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +680 -64
  114. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +919 -0
  116. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  118. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.json +750 -87
  120. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1211 -0
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +657 -0
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +620 -0
  128. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  129. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +485 -0
  130. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  131. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  132. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  133. package/artifacts/contracts/shared/Component.sol/Component.json +723 -0
  134. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +631 -0
  136. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  137. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  138. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  139. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/IComponent.sol/IComponent.json} +240 -229
  140. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +647 -0
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +125 -0
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +175 -0
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/IService.sol/IService.json +327 -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/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +884 -0
  156. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +238 -0
  158. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  159. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  160. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +569 -0
  162. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  163. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +339 -0
  164. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  165. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  166. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  167. package/artifacts/contracts/shared/Service.sol/Service.json +488 -0
  168. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  169. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  170. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  171. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  172. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  173. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  174. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  175. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +507 -0
  176. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  177. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +545 -0
  178. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  179. package/artifacts/contracts/staking/Staking.sol/Staking.json +854 -0
  180. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  181. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +640 -0
  182. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  183. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +797 -0
  184. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +632 -0
  186. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  187. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  188. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  189. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  190. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  191. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  192. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  193. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  194. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  195. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  196. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  197. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  198. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  199. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  200. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  202. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  203. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  204. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  206. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  208. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  209. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  210. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  212. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  214. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  216. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  218. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +280 -0
  220. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  221. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  222. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  223. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  224. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  226. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  228. package/contracts/distribution/Distribution.sol +285 -0
  229. package/contracts/distribution/DistributionService.sol +349 -0
  230. package/contracts/distribution/DistributionServiceManager.sol +51 -0
  231. package/contracts/distribution/IDistributionComponent.sol +71 -0
  232. package/contracts/distribution/IDistributionService.sol +87 -0
  233. package/contracts/instance/BundleManager.sol +126 -0
  234. package/contracts/instance/IInstance.sol +74 -22
  235. package/contracts/instance/IInstanceService.sol +73 -0
  236. package/contracts/instance/Instance.sol +210 -53
  237. package/contracts/instance/InstanceAccessManager.sol +543 -0
  238. package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
  239. package/contracts/instance/InstanceReader.sol +368 -0
  240. package/contracts/instance/InstanceService.sol +308 -0
  241. package/contracts/instance/InstanceServiceManager.sol +54 -0
  242. package/contracts/instance/InstanceStore.sol +211 -0
  243. package/contracts/instance/base/Cloneable.sol +51 -0
  244. package/contracts/instance/base/IKeyValueStore.sol +53 -0
  245. package/contracts/instance/base/ILifecycle.sol +30 -0
  246. package/contracts/instance/base/KeyValueStore.sol +169 -0
  247. package/contracts/instance/base/Lifecycle.sol +121 -0
  248. package/contracts/instance/base/ObjectManager.sol +82 -0
  249. package/contracts/instance/module/IAccess.sol +54 -0
  250. package/contracts/instance/module/IBundle.sol +23 -0
  251. package/contracts/instance/module/IComponents.sol +41 -0
  252. package/contracts/instance/module/IDistribution.sol +42 -0
  253. package/contracts/instance/module/IPolicy.sol +78 -0
  254. package/contracts/instance/module/IRisk.sol +11 -0
  255. package/contracts/instance/module/ISetup.sol +33 -0
  256. package/contracts/instance/module/ITreasury.sol +23 -0
  257. package/contracts/pool/BundleService.sol +382 -0
  258. package/contracts/pool/BundleServiceManager.sol +51 -0
  259. package/contracts/pool/IBundleService.sol +118 -0
  260. package/contracts/pool/IPoolComponent.sol +114 -0
  261. package/contracts/pool/IPoolService.sol +114 -0
  262. package/contracts/pool/Pool.sol +302 -0
  263. package/contracts/pool/PoolService.sol +403 -0
  264. package/contracts/pool/PoolServiceManager.sol +51 -0
  265. package/contracts/product/ApplicationService.sol +186 -0
  266. package/contracts/product/ApplicationServiceManager.sol +35 -0
  267. package/contracts/product/ClaimService.sol +442 -0
  268. package/contracts/product/ClaimServiceManager.sol +35 -0
  269. package/contracts/product/IApplicationService.sol +62 -0
  270. package/contracts/product/IClaimService.sol +93 -0
  271. package/contracts/product/IPolicyService.sol +80 -0
  272. package/contracts/product/IPricingService.sol +37 -0
  273. package/contracts/product/IProductComponent.sol +41 -0
  274. package/contracts/product/IProductService.sol +40 -0
  275. package/contracts/product/PolicyService.sol +376 -0
  276. package/contracts/product/PolicyServiceManager.sol +54 -0
  277. package/contracts/product/PricingService.sol +275 -0
  278. package/contracts/product/PricingServiceManager.sol +51 -0
  279. package/contracts/product/Product.sol +379 -0
  280. package/contracts/product/ProductService.sol +210 -0
  281. package/contracts/product/ProductServiceManager.sol +54 -0
  282. package/contracts/registry/ChainNft.sol +143 -62
  283. package/contracts/registry/IRegistry.sol +84 -41
  284. package/contracts/registry/IRegistryService.sol +69 -0
  285. package/contracts/registry/ITransferInterceptor.sol +7 -0
  286. package/contracts/registry/Registry.sol +451 -128
  287. package/contracts/registry/RegistryAccessManager.sol +207 -0
  288. package/contracts/registry/RegistryService.sol +304 -0
  289. package/contracts/registry/RegistryServiceManager.sol +60 -0
  290. package/contracts/registry/ReleaseManager.sol +360 -0
  291. package/contracts/registry/TokenRegistry.sol +116 -0
  292. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  293. package/contracts/shared/Component.sol +177 -0
  294. package/contracts/shared/ComponentService.sol +150 -0
  295. package/contracts/shared/ERC165.sol +27 -0
  296. package/contracts/shared/IComponent.sol +58 -0
  297. package/contracts/shared/IInstanceLinkedComponent.sol +52 -0
  298. package/contracts/shared/INftOwnable.sol +23 -0
  299. package/contracts/shared/IPolicyHolder.sol +40 -0
  300. package/contracts/shared/IRegisterable.sol +15 -0
  301. package/contracts/shared/IRegistryLinked.sol +11 -0
  302. package/contracts/shared/IService.sol +18 -0
  303. package/contracts/shared/IVersionable.sol +53 -0
  304. package/contracts/shared/InstanceLinkedComponent.sol +271 -0
  305. package/contracts/shared/NftOwnable.sol +118 -0
  306. package/contracts/shared/PolicyHolder.sol +94 -0
  307. package/contracts/shared/ProxyManager.sol +169 -0
  308. package/contracts/shared/Registerable.sol +75 -0
  309. package/contracts/shared/RegistryLinked.sol +43 -0
  310. package/contracts/shared/Service.sol +72 -0
  311. package/contracts/shared/TokenHandler.sol +58 -0
  312. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  313. package/contracts/shared/Versionable.sol +59 -0
  314. package/contracts/staking/IStaking.sol +30 -0
  315. package/contracts/staking/IStakingService.sol +105 -0
  316. package/contracts/staking/Staking.sol +65 -0
  317. package/contracts/staking/StakingManager.sol +46 -0
  318. package/contracts/staking/StakingService.sol +204 -0
  319. package/contracts/staking/StakingServiceManager.sol +41 -0
  320. package/contracts/type/AddressSet.sol +58 -0
  321. package/contracts/type/Amount.sol +109 -0
  322. package/contracts/{types → type}/Blocknumber.sol +1 -0
  323. package/contracts/type/ClaimId.sol +75 -0
  324. package/contracts/type/DistributorType.sol +55 -0
  325. package/contracts/type/Fee.sol +65 -0
  326. package/contracts/type/Key32.sol +50 -0
  327. package/contracts/{types → type}/NftId.sol +30 -1
  328. package/contracts/type/NftIdSet.sol +62 -0
  329. package/contracts/{types → type}/ObjectType.sol +74 -15
  330. package/contracts/type/PayoutId.sol +82 -0
  331. package/contracts/type/Referral.sol +89 -0
  332. package/contracts/type/RiskId.sol +43 -0
  333. package/contracts/type/RoleId.sol +132 -0
  334. package/contracts/type/Seconds.sol +54 -0
  335. package/contracts/{types → type}/StateId.sol +23 -4
  336. package/contracts/{types → type}/Timestamp.sol +36 -6
  337. package/contracts/type/UFixed.sol +326 -0
  338. package/contracts/type/Version.sol +108 -0
  339. package/package.json +12 -5
  340. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  341. package/artifacts/contracts/components/Component.sol/Component.json +0 -205
  342. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  343. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  344. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  345. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  346. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  347. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  348. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  349. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
  350. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  351. package/artifacts/contracts/components/Product.sol/Product.json +0 -346
  352. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  353. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  354. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  355. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  356. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  357. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  358. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  359. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  360. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  361. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  362. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  363. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  364. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  365. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  366. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  367. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  368. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  370. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  372. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  374. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  376. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  378. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  380. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  382. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  384. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  386. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  388. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  389. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  390. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  391. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  392. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  394. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  396. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  397. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  398. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  399. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  400. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  401. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  402. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  403. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  404. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  405. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  406. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  407. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  408. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  409. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  410. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  411. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  412. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  413. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  414. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  415. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  416. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  417. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  418. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  419. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  420. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  421. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  422. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  423. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  424. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  425. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  426. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  427. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  428. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  429. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  430. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  431. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  432. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  433. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  434. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  435. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  436. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  437. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  438. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  439. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  440. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  441. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  442. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  443. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  444. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  445. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  446. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  447. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  448. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  449. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  450. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  451. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  452. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  453. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  454. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  455. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  456. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  457. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  458. package/contracts/components/Component.sol +0 -77
  459. package/contracts/components/IPool.sol +0 -15
  460. package/contracts/components/IProduct.sol +0 -16
  461. package/contracts/components/Pool.sol +0 -52
  462. package/contracts/components/Product.sol +0 -89
  463. package/contracts/experiment/errors/Require.sol +0 -38
  464. package/contracts/experiment/errors/Revert.sol +0 -44
  465. package/contracts/experiment/inheritance/A.sol +0 -53
  466. package/contracts/experiment/inheritance/B.sol +0 -28
  467. package/contracts/experiment/inheritance/C.sol +0 -34
  468. package/contracts/experiment/inheritance/IA.sol +0 -13
  469. package/contracts/experiment/inheritance/IB.sol +0 -10
  470. package/contracts/experiment/inheritance/IC.sol +0 -12
  471. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  472. package/contracts/experiment/statemachine/ISM.sol +0 -25
  473. package/contracts/experiment/statemachine/README.md +0 -112
  474. package/contracts/experiment/statemachine/SM.sol +0 -57
  475. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  476. package/contracts/experiment/types/TypeA.sol +0 -47
  477. package/contracts/experiment/types/TypeB.sol +0 -29
  478. package/contracts/instance/access/Access.sol +0 -165
  479. package/contracts/instance/access/IAccess.sol +0 -63
  480. package/contracts/instance/component/ComponentModule.sol +0 -274
  481. package/contracts/instance/component/IComponent.sol +0 -74
  482. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  483. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  484. package/contracts/instance/policy/IPolicy.sol +0 -50
  485. package/contracts/instance/policy/PolicyModule.sol +0 -114
  486. package/contracts/instance/pool/IPoolModule.sol +0 -23
  487. package/contracts/instance/pool/PoolModule.sol +0 -81
  488. package/contracts/instance/product/IProductService.sol +0 -36
  489. package/contracts/instance/product/ProductService.sol +0 -136
  490. package/contracts/instance/treasury/ITreasury.sol +0 -91
  491. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  492. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  493. package/contracts/registry/IChainNft.sol +0 -21
  494. package/contracts/types/ChainId.sol +0 -38
  495. package/contracts/types/Fee.sol +0 -32
  496. package/contracts/types/UFixed.sol +0 -210
@@ -0,0 +1,210 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {IProductComponent} from "./IProductComponent.sol";
6
+ import {Product} from "./Product.sol";
7
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
9
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {IPolicy} from "../instance/module/IPolicy.sol";
12
+ import {IRisk} from "../instance/module/IRisk.sol";
13
+ import {IBundle} from "../instance/module/IBundle.sol";
14
+ import {IProductService} from "./IProductService.sol";
15
+ import {ITreasury} from "../instance/module/ITreasury.sol";
16
+ import {ISetup} from "../instance/module/ISetup.sol";
17
+
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
19
+
20
+ import {IVersionable} from "../shared/IVersionable.sol";
21
+ import {Versionable} from "../shared/Versionable.sol";
22
+
23
+ import {Timestamp, zeroTimestamp} from "../type/Timestamp.sol";
24
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
25
+ import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
26
+ import {ObjectType, PRODUCT, POOL, POLICY} from "../type/ObjectType.sol";
27
+ import {APPLIED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
28
+ import {NftId, NftIdLib, zeroNftId} from "../type/NftId.sol";
29
+ import {Fee, FeeLib} from "../type/Fee.sol";
30
+ import {ReferralId} from "../type/Referral.sol";
31
+ import {RiskId} from "../type/RiskId.sol";
32
+ import {StateId} from "../type/StateId.sol";
33
+ import {Version, VersionLib} from "../type/Version.sol";
34
+ import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
35
+
36
+ import {IService} from "../shared/IService.sol";
37
+ import {Service} from "../shared/Service.sol";
38
+ import {ComponentService} from "../shared/ComponentService.sol";
39
+ import {IProductService} from "./IProductService.sol";
40
+ import {InstanceReader} from "../instance/InstanceReader.sol";
41
+ import {IPoolService} from "../pool/PoolService.sol";
42
+
43
+ // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
44
+ contract ProductService is ComponentService, IProductService {
45
+ using NftIdLib for NftId;
46
+
47
+ IPoolService internal _poolService;
48
+
49
+ event LogProductServiceSender(address sender);
50
+
51
+ function _initialize(
52
+ address owner,
53
+ bytes memory data
54
+ )
55
+ internal
56
+ initializer
57
+ virtual override
58
+ {
59
+ address registryAddress;
60
+ address initialOwner;
61
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
62
+
63
+ initializeService(registryAddress, address(0), owner);
64
+
65
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), getVersion().toMajorPart()));
66
+
67
+ registerInterface(type(IProductService).interfaceId);
68
+ }
69
+
70
+
71
+ function register(address productAddress)
72
+ external
73
+ returns(NftId productNftId)
74
+ {
75
+ (
76
+ IInstanceLinkedComponent component,
77
+ address owner,
78
+ IInstance instance,
79
+ NftId instanceNftId
80
+ ) = _checkComponentForRegistration(
81
+ productAddress,
82
+ PRODUCT(),
83
+ PRODUCT_OWNER_ROLE());
84
+
85
+ IProductComponent product = IProductComponent(productAddress);
86
+ IRegistry.ObjectInfo memory productInfo = getRegistryService().registerProduct(product, owner);
87
+ productNftId = productInfo.nftId;
88
+ _createProductSetup(
89
+ instance,
90
+ product,
91
+ productNftId);
92
+ }
93
+
94
+
95
+ function _createProductSetup(
96
+ IInstance instance,
97
+ IProductComponent product,
98
+ NftId productNftId
99
+ )
100
+ internal
101
+ returns (string memory name)
102
+ {
103
+ // wire distribution and pool components to product component
104
+ ISetup.ProductSetupInfo memory setup = product.getSetupInfo();
105
+ IInstanceLinkedComponent distribution = IInstanceLinkedComponent(getRegistry().getObjectInfo(setup.distributionNftId).objectAddress);
106
+ IInstanceLinkedComponent pool = IInstanceLinkedComponent(getRegistry().getObjectInfo(setup.poolNftId).objectAddress);
107
+
108
+ distribution.setProductNftId(productNftId);
109
+ pool.setProductNftId(productNftId);
110
+ product.setProductNftId(productNftId);
111
+ product.linkToRegisteredNftId();
112
+
113
+ // create product setup in instance
114
+ instance.getInstanceStore().createProductSetup(productNftId, product.getSetupInfo());
115
+
116
+ bytes4[][] memory selectors = new bytes4[][](1);
117
+ selectors[0] = new bytes4[](1);
118
+ selectors[0][0] = IProductComponent.setFees.selector;
119
+
120
+ RoleId[] memory roles = new RoleId[](1);
121
+ roles[0] = PRODUCT_OWNER_ROLE();
122
+
123
+ // create target for instane access manager
124
+ getInstanceService().createGifTarget(
125
+ getRegistry().getNftId(address(instance)),
126
+ address(product),
127
+ product.getName(),
128
+ selectors,
129
+ roles);
130
+ }
131
+
132
+ function getDomain() public pure override returns(ObjectType) {
133
+ return PRODUCT();
134
+ }
135
+
136
+
137
+ function _decodeAndVerifyProductData(bytes memory data)
138
+ internal
139
+ returns(string memory name, ISetup.ProductSetupInfo memory setup)
140
+ {
141
+ (name, setup) = abi.decode(
142
+ data,
143
+ (string, ISetup.ProductSetupInfo)
144
+ );
145
+
146
+ // TODO add checks
147
+ // if(wallet == address(0)) {
148
+ // revert WalletIsZero();
149
+ // }
150
+ }
151
+
152
+ function setFees(
153
+ Fee memory productFee,
154
+ Fee memory processingFee
155
+ )
156
+ external
157
+ {
158
+ // TODO check args
159
+
160
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
161
+ InstanceReader instanceReader = instance.getInstanceReader();
162
+
163
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(productNftId);
164
+
165
+ productSetupInfo.productFee = productFee;
166
+ productSetupInfo.processingFee = processingFee;
167
+
168
+ instance.getInstanceStore().updateProductSetup(productNftId, productSetupInfo, KEEP_STATE());
169
+ }
170
+
171
+ function createRisk(
172
+ RiskId riskId,
173
+ bytes memory data
174
+ )
175
+ external
176
+ override
177
+ {
178
+ (NftId productNftId,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
179
+ IRisk.RiskInfo memory riskInfo = IRisk.RiskInfo(productNftId, data);
180
+
181
+ instance.getInstanceStore().createRisk(
182
+ riskId,
183
+ riskInfo
184
+ );
185
+ }
186
+
187
+ function updateRisk(
188
+ RiskId riskId,
189
+ bytes memory data
190
+ )
191
+ external
192
+ {
193
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
194
+ InstanceReader instanceReader = instance.getInstanceReader();
195
+
196
+ IRisk.RiskInfo memory riskInfo = instanceReader.getRiskInfo(riskId);
197
+ riskInfo.data = data;
198
+ instance.getInstanceStore().updateRisk(riskId, riskInfo, KEEP_STATE());
199
+ }
200
+
201
+ function updateRiskState(
202
+ RiskId riskId,
203
+ StateId state
204
+ )
205
+ external
206
+ {
207
+ (,, IInstance instance) = _getAndVerifyCallingComponentAndInstance(PRODUCT());
208
+ instance.getInstanceStore().updateRiskState(riskId, state);
209
+ }
210
+ }
@@ -0,0 +1,54 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../shared/IVersionable.sol";
5
+ import {ProxyManager} from "../shared/ProxyManager.sol";
6
+ import {ProductService} from "./ProductService.sol";
7
+ import {Registry} from "../registry/Registry.sol";
8
+ import {RegistryService} from "../registry/RegistryService.sol";
9
+ import {VersionLib} from "../type/Version.sol";
10
+
11
+ contract ProductServiceManager is ProxyManager {
12
+
13
+ ProductService private _productService;
14
+
15
+ /// @dev initializes proxy manager with product service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ ProductService svc = new ProductService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(svc),
25
+ data);
26
+
27
+ _productService = ProductService(address(versionable));
28
+
29
+ // Registry registry = Registry(registryAddress);
30
+ // address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
+ // RegistryService registryService = RegistryService(registryServiceAddress);
32
+ // TODO this must have a role or own nft to register service
33
+ //registryService.registerService(_productService);
34
+
35
+ // TODO no nft to link yet
36
+ // link ownership of instance service manager ot nft owner of instance service
37
+ //_linkToNftOwnable(
38
+ // address(registryAddress),
39
+ // address(_productService));
40
+
41
+ // implies that after this constructor call only upgrade functionality is available
42
+ // _isDeployed = true;
43
+ }
44
+
45
+ //--- view functions ----------------------------------------------------//
46
+ function getProductService()
47
+ external
48
+ view
49
+ returns (ProductService productService)
50
+ {
51
+ return _productService;
52
+ }
53
+
54
+ }
@@ -1,12 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import {ERC721, ERC721Enumerable} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721Enumerable.sol";
5
- import {IChainNft} from "./IChainNft.sol";
5
+ import {IERC721} from "@openzeppelin/contracts/token/ERC721/IERC721.sol";
6
6
 
7
- contract ChainNft is ERC721Enumerable, IChainNft {
8
- string public constant NAME = "Dezentralized Insurance Protocol Registry";
9
- string public constant SYMBOL = "DIPR";
7
+ import {ITransferInterceptor} from "./ITransferInterceptor.sol";
8
+
9
+ contract ChainNft is ERC721Enumerable {
10
+
11
+ // constants
12
+ string public constant NAME = "Dezentralized Insurance Protocol NFT";
13
+ string public constant SYMBOL = "DIPNFT";
14
+
15
+ uint256 public constant PROTOCOL_NFT_ID = 1101;
16
+ uint256 public constant GLOBAL_REGISTRY_ID = 2101;
17
+
18
+ // custom errors
19
+ error CallerNotRegistry(address caller);
20
+ error RegistryAddressZero();
21
+ error NftUriEmpty();
22
+ error NftUriAlreadySet();
23
+
24
+ // contract state
25
+
26
+ // remember interceptors
27
+ mapping(uint256 tokenId => address interceptor) private _interceptor;
10
28
 
11
29
  // remember token uri
12
30
  mapping(uint256 tokenId => string uri) private _uri;
@@ -22,43 +40,89 @@ contract ChainNft is ERC721Enumerable, IChainNft {
22
40
  uint256 internal _totalMinted;
23
41
 
24
42
  modifier onlyRegistry() {
25
- require(msg.sender == _registry, "ERROR:NFT-001:CALLER_NOT_REGISTRY");
43
+ if (msg.sender != _registry) { revert CallerNotRegistry(msg.sender); }
26
44
  _;
27
45
  }
28
46
 
29
47
  constructor(address registry) ERC721(NAME, SYMBOL) {
30
- require(registry != address(0), "ERROR:NFT-010:REGISTRY_ZERO");
48
+ if (registry == address(0)) { revert RegistryAddressZero(); }
31
49
 
32
50
  _registry = registry;
33
-
34
51
  _chainIdInt = block.chainid;
35
- _chainIdDigits = _countDigits(_chainIdInt);
36
- _chainIdMultiplier = 10 ** _chainIdDigits;
52
+ _chainIdDigits = 0;
37
53
 
38
- // on mainnet/goerli start /1 (reserved for protocol nft) on other chains with 2
39
- if (block.chainid == 1 || block.chainid == 5) {
40
- _idNext = 1;
41
- } else {
42
- _idNext = 2;
54
+ // count digis
55
+ uint256 num = _chainIdInt;
56
+ while (num != 0) {
57
+ _chainIdDigits++;
58
+ num /= 10;
43
59
  }
60
+
61
+ _chainIdMultiplier = 10 ** _chainIdDigits;
62
+
63
+ // the first object registered through normal registration starts with id 4
64
+ // 1 -> protocol
65
+ // 2 -> registry
66
+ // 3 -> staking
67
+ // >= 4 -> all other objects
68
+ _idNext = 4;
69
+ }
70
+
71
+ /**
72
+ * @dev mints a token for a specified token id
73
+ * not part of the IRegistry interface only needed for
74
+ * initial registry setup (protocol and global registry objects)
75
+ */
76
+ function mint(address to, uint256 tokenId) external onlyRegistry {
77
+ _totalMinted++;
78
+ _safeMint(to, tokenId);
44
79
  }
45
80
 
81
+
82
+ /**
83
+ * @dev mints the next token to register new objects
84
+ * non-zero transferInterceptors are recorded and called during nft token transfers.
85
+ * the contract receiving such a notification may decides to revert or record the transfer
86
+ */
46
87
  function mint(
47
88
  address to,
89
+ address interceptor,
48
90
  string memory uri
49
- ) external override onlyRegistry returns (uint256 tokenId) {
91
+ ) public onlyRegistry returns (uint256 tokenId) {
50
92
  tokenId = _getNextTokenId();
51
- _totalMinted++;
52
93
 
53
- _safeMint(to, tokenId);
94
+ if (interceptor != address(0)) {
95
+ _interceptor[tokenId] = interceptor;
96
+ }
54
97
 
55
98
  if (bytes(uri).length > 0) {
56
99
  _uri[tokenId] = uri;
57
100
  }
101
+
102
+ _totalMinted++;
103
+ _safeMint(to, tokenId);
104
+
105
+ if(interceptor != address(0)) {
106
+ ITransferInterceptor(interceptor).nftMint(to, tokenId);
107
+ }
58
108
  }
59
109
 
60
- function burn(uint256 tokenId) external override onlyRegistry {
61
- _requireMinted(tokenId);
110
+
111
+ /**
112
+ * @dev amend the open zeppelin transferFrom function by an interceptor call if such an interceptor is defined for the nft token id
113
+ * this allows distribution, product and pool components to be notified when distributors, policies and bundles are transferred.
114
+ */
115
+ function transferFrom(address from, address to, uint256 tokenId) public override (ERC721, IERC721) {
116
+ super.transferFrom(from, to, tokenId);
117
+
118
+ if (_interceptor[tokenId] != address(0)) {
119
+ ITransferInterceptor(_interceptor[tokenId]).nftTransferFrom(from, to, tokenId);
120
+ }
121
+ }
122
+
123
+
124
+ function burn(uint256 tokenId) external onlyRegistry {
125
+ _requireOwned(tokenId);
62
126
  _burn(tokenId);
63
127
  delete _uri[tokenId];
64
128
  }
@@ -66,70 +130,87 @@ contract ChainNft is ERC721Enumerable, IChainNft {
66
130
  function setURI(
67
131
  uint256 tokenId,
68
132
  string memory uri
69
- ) external override onlyRegistry {
70
- require(bytes(uri).length > 0, "ERROR:CRG-011:URI_EMPTY");
133
+ ) external onlyRegistry {
134
+ if (bytes(uri).length == 0) { revert NftUriEmpty(); }
135
+ if (bytes(_uri[tokenId]).length > 0) { revert NftUriAlreadySet(); }
71
136
 
72
- _requireMinted(tokenId);
137
+ _requireOwned(tokenId);
73
138
  _uri[tokenId] = uri;
74
139
  }
75
140
 
76
- function exists(uint256 tokenId) external view override returns (bool) {
77
- return _exists(tokenId);
141
+ function exists(uint256 tokenId) external view returns (bool) {
142
+ return _ownerOf(tokenId) != address(0);
78
143
  }
79
144
 
80
145
  function tokenURI(
81
146
  uint256 tokenId
82
147
  ) public view override returns (string memory) {
83
- _requireMinted(tokenId);
148
+ // gif generally does not revert for view functions
149
+ // this is an exception to keep the openzeppelin nft semantics
150
+ _requireOwned(tokenId);
84
151
  return _uri[tokenId];
85
152
  }
86
153
 
87
- function getRegistryAddress() external view override returns (address) {
154
+ function getInterceptor(uint256 tokenId) external view returns (address) {
155
+ return _interceptor[tokenId];
156
+ }
157
+
158
+ function getRegistryAddress() external view returns (address) {
88
159
  return _registry;
89
160
  }
90
161
 
91
- function totalMinted() external view override returns (uint256) {
162
+ function totalMinted() external view returns (uint256) {
92
163
  return _totalMinted;
93
164
  }
94
165
 
95
- // requirement: each chain registry produces token ids that
96
- // are guaranteed to not collide with any token id genereated
97
- // on a different chain
98
- //
99
- // format concat(counter,chainid,2 digits for len-of-chain-id)
100
- // restriction chainid up to 99 digits
101
- // decode: from right to left:
102
- // - 2 right most digits encode length of chainid
103
- // - move number of digits to left as determined above (-> chainid)
104
- // - the reminder to the left is the counter
105
- // examples
106
- // 1101
107
- // ^^ ^
108
- // || +- 1-digit chain id
109
- // |+-- chain id = 1 (mainnet)
110
- // +-- 1st token id on mainnet
111
- // (1 * 10 ** 1 + 1) * 100 + 1
112
- // 42987654321010
113
- // ^ ^ ^
114
- // | | +- 10-digit chain id
115
- // | +-- chain id = 9876543210 (hypothetical chainid)
116
- // +-- 42nd token id on this chain
117
- // (42 * 10 ** 10 + 9876543210) * 100 + 10
118
- // (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
119
-
120
- function _getNextTokenId() private returns (uint256 id) {
166
+ /**
167
+ * @dev token id calculation based on an index value that is supposed
168
+ * to increase with every minted token
169
+ *
170
+ * requirement: each chain registry produces token ids that
171
+ * are guaranteed to not collide with any token id genereated
172
+ * on a different chain
173
+ *
174
+ * format concat(counter,chainid,2 digits for len-of-chain-id)
175
+ * restriction chainid up to 99 digits
176
+ * decode: from right to left:
177
+ * - 2 right most digits encode length of chainid
178
+ * - move number of digits to left as determined above (-> chainid)
179
+ * - the reminder to the left is the counter
180
+ *
181
+ * special cases
182
+ * 1101 -> decentralized insurance protocol
183
+ * 2102 -> global registry
184
+ * 2xxxxx -> chain registry, where xxxxx = <chain-part>
185
+ *
186
+ * examples
187
+ * 1101
188
+ * ^^ ^
189
+ * || +- 1-digit chain id
190
+ * |+-- chain id = 1 (mainnet)
191
+ * +-- 1st token id on mainnet
192
+ * (1 * 10 ** 1 + 1) * 100 + 1
193
+ * 42987654321010
194
+ * ^ ^ ^
195
+ * | | +- 10-digit chain id
196
+ * | +-- chain id = 9876543210 (hypothetical chainid)
197
+ * +-- 42nd token id on this chain
198
+ * (42 * 10 ** 10 + 9876543210) * 100 + 10
199
+ * (index * 10 ** digits + chainid) * 100 + digits (1 < digits < 100)
200
+ */
201
+ function calculateTokenId(uint256 idIndex) public view returns (uint256 id) {
121
202
  id =
122
- (_idNext * _chainIdMultiplier + _chainIdInt) *
203
+ (idIndex * _chainIdMultiplier + _chainIdInt) *
123
204
  100 +
124
205
  _chainIdDigits;
125
- _idNext++;
126
206
  }
127
207
 
128
- function _countDigits(uint256 num) private pure returns (uint256 count) {
129
- count = 0;
130
- while (num != 0) {
131
- count++;
132
- num /= 10;
133
- }
208
+ function getNextTokenId() external view returns (uint256) {
209
+ return calculateTokenId(_idNext);
210
+ }
211
+
212
+ function _getNextTokenId() private returns (uint256 id) {
213
+ id = calculateTokenId(_idNext);
214
+ _idNext++;
134
215
  }
135
216
  }