@etherisc/gif-next 0.0.2-b9b3e89 → 0.0.2-b9e43cf-870

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 (429) hide show
  1. package/README.md +364 -8
  2. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +4 -0
  3. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +482 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +675 -0
  6. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/access/Access.sol/AccessModule.json → components/IBaseComponent.sol/IBaseComponent.json} +217 -220
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +152 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +275 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → components/IProductComponent.sol/IProductComponent.json} +81 -86
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +687 -40
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +612 -50
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +4 -0
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +66 -0
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +4 -0
  21. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +24 -0
  22. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +4 -0
  23. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +42 -0
  24. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +4 -0
  25. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +105 -0
  26. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +4 -0
  27. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +105 -0
  28. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +4 -0
  29. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +128 -0
  30. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +4 -0
  31. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +42 -0
  32. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +4 -0
  33. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +76 -0
  34. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +4 -0
  35. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +89 -0
  36. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +4 -0
  37. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → experiment/inheritance/IA.sol/IA.json} +64 -50
  38. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +4 -0
  39. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +37 -0
  40. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +4 -0
  41. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +50 -0
  42. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +4 -0
  43. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +63 -0
  44. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +4 -0
  45. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +59 -0
  46. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +4 -0
  47. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +124 -0
  48. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +4 -0
  49. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +74 -0
  50. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +4 -0
  51. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +124 -0
  52. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +4 -0
  53. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +207 -0
  54. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +4 -0
  55. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +10 -0
  56. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +4 -0
  57. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +10 -0
  58. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  60. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  61. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +788 -0
  62. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  63. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  64. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1381 -459
  66. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  67. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +448 -0
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +570 -0
  70. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/Instance.sol/Instance.json +2511 -498
  72. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +1047 -0
  74. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +763 -0
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1422 -0
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +963 -0
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +460 -0
  82. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  83. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +285 -0
  84. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +4 -0
  85. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +532 -0
  86. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +4 -0
  87. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +113 -0
  88. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  90. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.json +115 -0
  92. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  94. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  96. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  97. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  99. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  101. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  102. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  103. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  104. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  105. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  106. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/ISetup.sol/ISetup.json} +2 -2
  108. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  109. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +10 -0
  110. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  111. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1031 -0
  112. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  113. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +436 -0
  114. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +4 -0
  115. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +814 -0
  116. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  117. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +693 -0
  118. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +420 -0
  120. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  121. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +720 -0
  122. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +4 -0
  123. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +466 -0
  124. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  125. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +446 -0
  126. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  127. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +771 -0
  128. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  129. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +499 -0
  130. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  131. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +536 -0
  132. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  133. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1156 -0
  134. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +492 -0
  136. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  137. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +727 -0
  138. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +420 -0
  140. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  141. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +777 -0
  142. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +420 -0
  144. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +4 -0
  145. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +771 -0
  146. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +449 -76
  148. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  149. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +976 -0
  150. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  151. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  152. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/Registry.sol/Registry.json +544 -79
  154. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  155. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  156. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  157. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1195 -0
  158. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +451 -0
  160. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  161. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +530 -0
  162. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  163. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +397 -0
  164. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  165. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  166. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  167. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +35 -0
  168. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +127 -0
  170. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +201 -0
  172. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IService.sol/IService.json +421 -0
  174. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +205 -0
  176. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  177. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +158 -0
  178. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +349 -0
  180. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  181. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +274 -0
  182. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +4 -0
  183. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +442 -0
  184. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  185. package/artifacts/contracts/shared/Service.sol/Service.json +468 -0
  186. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  187. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  188. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  189. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  190. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  191. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +228 -0
  192. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  193. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  194. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  195. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +305 -0
  196. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  197. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  198. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  199. package/artifacts/contracts/test/TestService.sol/TestService.json +600 -0
  200. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  201. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  202. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  203. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  204. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  205. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +286 -0
  206. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  207. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  208. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  209. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  210. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +174 -0
  212. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +10 -0
  214. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  215. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  216. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  217. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  218. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  219. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  220. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +4 -0
  221. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +153 -0
  222. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  223. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  224. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  226. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  227. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +92 -0
  228. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  229. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  230. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  232. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  233. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  234. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +92 -0
  236. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +4 -0
  237. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +249 -0
  238. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  239. package/artifacts/contracts/types/UFixed.sol/MathLib.json +10 -0
  240. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  241. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  242. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  243. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  244. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  245. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  246. package/contracts/components/BaseComponent.sol +159 -0
  247. package/contracts/components/Distribution.sol +164 -0
  248. package/contracts/components/IBaseComponent.sol +34 -0
  249. package/contracts/components/IDistributionComponent.sol +44 -0
  250. package/contracts/components/IPoolComponent.sol +66 -0
  251. package/contracts/components/IProductComponent.sol +35 -0
  252. package/contracts/components/Pool.sol +261 -18
  253. package/contracts/components/Product.sol +272 -36
  254. package/contracts/experiment/cloning/Cloner.sol +47 -0
  255. package/contracts/experiment/errors/Require.sol +38 -0
  256. package/contracts/experiment/errors/Revert.sol +44 -0
  257. package/contracts/experiment/inheritance/A.sol +53 -0
  258. package/contracts/experiment/inheritance/B.sol +28 -0
  259. package/contracts/experiment/inheritance/C.sol +34 -0
  260. package/contracts/experiment/inheritance/IA.sol +13 -0
  261. package/contracts/experiment/inheritance/IB.sol +10 -0
  262. package/contracts/experiment/inheritance/IC.sol +12 -0
  263. package/contracts/experiment/statemachine/Dummy.sol +27 -0
  264. package/contracts/experiment/statemachine/ISM.sol +25 -0
  265. package/contracts/experiment/statemachine/SM.sol +57 -0
  266. package/contracts/experiment/statemachine/SimpleStateMachine.sol +31 -0
  267. package/contracts/experiment/types/TypeA.sol +47 -0
  268. package/contracts/experiment/types/TypeB.sol +29 -0
  269. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +23 -0
  270. package/contracts/instance/BundleManager.sol +129 -0
  271. package/contracts/instance/Cloneable.sol +46 -0
  272. package/contracts/instance/IInstance.sol +57 -15
  273. package/contracts/instance/IInstanceBase.sol +26 -0
  274. package/contracts/instance/IInstanceService.sol +40 -0
  275. package/contracts/instance/Instance.sol +253 -44
  276. package/contracts/instance/InstanceAccessManager.sol +303 -0
  277. package/contracts/instance/InstanceBase.sol +41 -0
  278. package/contracts/instance/InstanceReader.sol +315 -0
  279. package/contracts/instance/InstanceService.sol +345 -0
  280. package/contracts/instance/InstanceServiceManager.sol +54 -0
  281. package/contracts/instance/ObjectManager.sol +101 -0
  282. package/contracts/instance/base/ComponentServiceBase.sol +76 -0
  283. package/contracts/instance/base/IInstanceBase.sol +23 -0
  284. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  285. package/contracts/instance/base/ILifecycle.sol +30 -0
  286. package/contracts/instance/base/KeyValueStore.sol +172 -0
  287. package/contracts/instance/base/Lifecycle.sol +100 -0
  288. package/contracts/instance/module/IAccess.sol +48 -0
  289. package/contracts/instance/module/IBundle.sol +20 -0
  290. package/contracts/instance/module/IDistribution.sol +39 -0
  291. package/contracts/instance/module/IPolicy.sol +45 -0
  292. package/contracts/instance/module/IRisk.sol +11 -0
  293. package/contracts/instance/module/ISetup.sol +46 -0
  294. package/contracts/instance/module/ITreasury.sol +23 -0
  295. package/contracts/instance/service/BundleService.sol +294 -0
  296. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  297. package/contracts/instance/service/ComponentOwnerService.sol +315 -0
  298. package/contracts/instance/service/DistributionService.sol +120 -0
  299. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  300. package/contracts/instance/service/IBundleService.sol +44 -0
  301. package/contracts/instance/service/IComponentOwnerService.sol +20 -0
  302. package/contracts/instance/service/IDistributionService.sol +12 -0
  303. package/contracts/instance/service/IPolicyService.sol +94 -0
  304. package/contracts/instance/service/IPoolService.sol +20 -0
  305. package/contracts/instance/service/IProductService.sol +40 -0
  306. package/contracts/instance/service/PolicyService.sol +539 -0
  307. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  308. package/contracts/instance/service/PoolService.sol +145 -0
  309. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  310. package/contracts/instance/service/ProductService.sol +213 -0
  311. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  312. package/contracts/registry/ChainNft.sol +202 -0
  313. package/contracts/registry/IRegistry.sol +78 -53
  314. package/contracts/registry/IRegistryService.sol +58 -0
  315. package/contracts/registry/ITransferInterceptor.sol +6 -0
  316. package/contracts/registry/Registry.sol +329 -130
  317. package/contracts/registry/RegistryAccessManager.sol +210 -0
  318. package/contracts/registry/RegistryService.sol +320 -0
  319. package/contracts/registry/RegistryServiceManager.sol +62 -0
  320. package/contracts/registry/ReleaseManager.sol +342 -0
  321. package/contracts/registry/TokenRegistry.sol +110 -0
  322. package/contracts/shared/ContractDeployerLib.sol +72 -0
  323. package/contracts/shared/ERC165.sol +25 -0
  324. package/contracts/shared/INftOwnable.sol +22 -0
  325. package/contracts/shared/IRegisterable.sol +17 -0
  326. package/contracts/shared/IService.sol +16 -0
  327. package/contracts/shared/IVersionable.sol +96 -0
  328. package/contracts/shared/NftOwnable.sol +134 -0
  329. package/contracts/shared/ProxyManager.sol +94 -0
  330. package/contracts/shared/Registerable.sol +90 -0
  331. package/contracts/shared/RegisterableUpgradable.sol +16 -0
  332. package/contracts/shared/Service.sol +58 -0
  333. package/contracts/shared/TokenHandler.sol +27 -0
  334. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  335. package/contracts/shared/Versionable.sol +147 -0
  336. package/contracts/test/TestFee.sol +25 -0
  337. package/contracts/test/TestRegisterable.sol +18 -0
  338. package/contracts/test/TestRoleId.sol +14 -0
  339. package/contracts/test/TestService.sol +25 -0
  340. package/contracts/test/TestToken.sol +26 -0
  341. package/contracts/test/TestVersion.sol +44 -0
  342. package/contracts/test/TestVersionable.sol +17 -0
  343. package/contracts/test/Usdc.sol +26 -0
  344. package/contracts/types/AddressSet.sol +58 -0
  345. package/contracts/types/Blocknumber.sol +118 -0
  346. package/contracts/types/ChainId.sol +38 -0
  347. package/contracts/types/DistributorType.sol +55 -0
  348. package/contracts/types/Fee.sol +56 -0
  349. package/contracts/types/Key32.sol +50 -0
  350. package/contracts/types/NftId.sol +72 -0
  351. package/contracts/types/NftIdSet.sol +62 -0
  352. package/contracts/types/NumberId.sol +52 -0
  353. package/contracts/types/ObjectType.sol +152 -0
  354. package/contracts/types/Referral.sol +85 -0
  355. package/contracts/types/RiskId.sol +43 -0
  356. package/contracts/types/RoleId.sol +90 -0
  357. package/contracts/types/StateId.sol +105 -0
  358. package/contracts/types/Timestamp.sol +127 -0
  359. package/contracts/types/UFixed.sol +325 -0
  360. package/contracts/types/Version.sol +107 -0
  361. package/package.json +21 -6
  362. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  363. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  364. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  365. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  366. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  367. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -179
  368. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  369. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  370. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  371. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  372. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  373. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  374. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  375. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  376. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  378. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  379. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  380. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  381. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -105
  382. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  383. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  384. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  385. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  387. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  388. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  389. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  390. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  391. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  392. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  393. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  394. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  396. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  397. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  398. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  399. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  400. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  401. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  402. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  403. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  404. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  405. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  406. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -125
  407. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  408. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  409. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  410. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  411. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  412. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  413. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  414. package/artifacts/contracts/registry/Registry.sol/Registerable.json +0 -166
  415. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  416. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  417. package/contracts/components/Component.sol +0 -62
  418. package/contracts/components/IPool.sol +0 -9
  419. package/contracts/components/IProduct.sol +0 -11
  420. package/contracts/instance/access/Access.sol +0 -218
  421. package/contracts/instance/access/IAccess.sol +0 -83
  422. package/contracts/instance/component/ComponentModule.sol +0 -259
  423. package/contracts/instance/component/IComponent.sol +0 -94
  424. package/contracts/instance/policy/IPolicy.sol +0 -66
  425. package/contracts/instance/policy/PolicyModule.sol +0 -106
  426. package/contracts/instance/pool/IPoolModule.sol +0 -40
  427. package/contracts/instance/pool/PoolModule.sol +0 -83
  428. package/contracts/instance/product/IProductService.sol +0 -45
  429. package/contracts/instance/product/ProductService.sol +0 -105
@@ -0,0 +1,120 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRegistry} from "../../registry/IRegistry.sol";
5
+ import {IInstance} from "../../instance/IInstance.sol";
6
+ import {InstanceAccessManager} from "../InstanceAccessManager.sol";
7
+ import {InstanceReader} from "../../instance/InstanceReader.sol";
8
+ import {ISetup} from "../../instance/module/ISetup.sol";
9
+
10
+ import {NftId, NftIdLib} from "../../types/NftId.sol";
11
+ import {Fee} from "../../types/Fee.sol";
12
+ import {DISTRIBUTION_OWNER_ROLE} from "../../types/RoleId.sol";
13
+ import {KEEP_STATE} from "../../types/StateId.sol";
14
+ import {ObjectType, DISTRIBUTION} from "../../types/ObjectType.sol";
15
+ import {Version, VersionLib} from "../../types/Version.sol";
16
+
17
+ import {IVersionable} from "../../shared/IVersionable.sol";
18
+ import {Versionable} from "../../shared/Versionable.sol";
19
+
20
+ import {IService} from "../../shared/IService.sol";
21
+ import {Service} from "../../shared/Service.sol";
22
+ import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
23
+ import {InstanceService} from "../InstanceService.sol";
24
+ import {IDistributionService} from "./IDistributionService.sol";
25
+ import {IBaseComponent} from "../../components/IBaseComponent.sol";
26
+
27
+
28
+ contract DistributionService is
29
+ ComponentServiceBase,
30
+ IDistributionService
31
+ {
32
+ using NftIdLib for NftId;
33
+
34
+ address internal _registryAddress;
35
+
36
+ function _initialize(
37
+ address owner,
38
+ bytes memory data
39
+ )
40
+ internal
41
+ initializer
42
+ virtual override
43
+ {
44
+ address initialOwner;
45
+ address registryAddress;
46
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
47
+ // TODO while DistributionService is not deployed in DistributionServiceManager constructor
48
+ // owner is DistributionServiceManager deployer
49
+ _initializeService(registryAddress, owner);
50
+
51
+ _registerInterface(type(IDistributionService).interfaceId);
52
+ }
53
+
54
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
55
+ return DISTRIBUTION();
56
+ }
57
+
58
+ function register(address distributionAddress)
59
+ external
60
+ returns(NftId distributionNftId)
61
+ {
62
+ address distributionOwner = msg.sender;
63
+ IBaseComponent distribution = IBaseComponent(distributionAddress);
64
+
65
+ IRegistry.ObjectInfo memory info;
66
+ bytes memory data;
67
+ (info, data) = getRegistryService().registerDistribution(distribution, distributionOwner);
68
+
69
+ NftId instanceNftId = info.parentNftId;
70
+ IInstance instance = _getInstance(instanceNftId);
71
+ InstanceService instanceService = getInstanceService();
72
+
73
+ bool hasRole = instanceService.hasRole(
74
+ distributionOwner,
75
+ DISTRIBUTION_OWNER_ROLE(),
76
+ address(instance));
77
+
78
+ if(!hasRole) {
79
+ revert ExpectedRoleMissing(DISTRIBUTION_OWNER_ROLE(), distributionOwner);
80
+ }
81
+
82
+ distributionNftId = info.nftId;
83
+ string memory distributionName;
84
+ ISetup.DistributionSetupInfo memory initialSetup;
85
+ (distributionName, initialSetup) = _decodeAndVerifyDistributionData(data);
86
+ instance.createDistributionSetup(distributionNftId, initialSetup);
87
+
88
+ instanceService.createTarget(instanceNftId, distributionAddress, distributionName);
89
+
90
+ distribution.linkToRegisteredNftId();
91
+ }
92
+
93
+ function _decodeAndVerifyDistributionData(bytes memory data)
94
+ internal
95
+ returns(string memory name, ISetup.DistributionSetupInfo memory setup)
96
+ {
97
+ (name, setup) = abi.decode(
98
+ data,
99
+ (string, ISetup.DistributionSetupInfo)
100
+ );
101
+
102
+ // TODO add checks if applicable
103
+ }
104
+
105
+ function setFees(
106
+ Fee memory distributionFee
107
+ )
108
+ external
109
+ override
110
+ {
111
+ (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
112
+ InstanceReader instanceReader = instance.getInstanceReader();
113
+ NftId distributionNftId = info.nftId;
114
+
115
+ ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
116
+ distSetupInfo.distributionFee = distributionFee;
117
+
118
+ instance.updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
119
+ }
120
+ }
@@ -0,0 +1,51 @@
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 {DistributionService} from "./DistributionService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {REGISTRY} from "../../types/ObjectType.sol";
10
+
11
+ contract DistributionServiceManager is ProxyManager {
12
+
13
+ DistributionService private _distributionService;
14
+
15
+ /// @dev initializes proxy manager with distribution service implementation and deploys instance
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager()
20
+ {
21
+ DistributionService distSrv = new DistributionService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(distSrv),
25
+ data);
26
+
27
+ _distributionService = DistributionService(address(versionable));
28
+
29
+ // TODO `thi` must have a role or own nft to register service
30
+ //Registry registry = Registry(registryAddress);
31
+ //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _distributionService.getMajorVersion());
32
+ //RegistryService registryService = RegistryService(registryServiceAddress);
33
+ //registryService.registerService(_distributionService);
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(_distributionService));
40
+ }
41
+
42
+ //--- view functions ----------------------------------------------------//
43
+ function getDistributionService()
44
+ external
45
+ view
46
+ returns (DistributionService distributionService)
47
+ {
48
+ return _distributionService;
49
+ }
50
+
51
+ }
@@ -0,0 +1,44 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {Fee} from "../../types/Fee.sol";
6
+ import {StateId} from "../../types/StateId.sol";
7
+ import {IService} from "../../shared/IService.sol";
8
+ import {IBundle} from "../module/IBundle.sol";
9
+ import {IInstance} from "../../instance/IInstance.sol";
10
+
11
+ interface IBundleService is IService {
12
+ error ErrorIBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, uint256 amount);
13
+
14
+ function createBundle(
15
+ address owner,
16
+ Fee memory fee,
17
+ uint256 amount,
18
+ uint256 lifetime,
19
+ bytes calldata filter
20
+ ) external returns(NftId bundleNftId);
21
+
22
+ function setBundleFee(
23
+ NftId bundleNftId,
24
+ Fee memory fee
25
+ ) external;
26
+
27
+ function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state) external;
28
+
29
+ function underwritePolicy(IInstance instanceNftId, NftId policyNftId, NftId bundleNftId, uint256 collateralAmount, uint256 netPremium) external;
30
+
31
+ function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
32
+
33
+ function closePolicy(IInstance instance, NftId policyNftId, NftId bundleNftId, uint256 collateralAmount) external;
34
+
35
+ // function fundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
36
+
37
+ // function defundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
38
+
39
+ function lockBundle(NftId bundleNftId) external;
40
+
41
+ function unlockBundle(NftId bundleNftId) external;
42
+
43
+ // function closeBundle(NftId bundleNftId) external;
44
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {ObjectType} from "../../types/ObjectType.sol";
6
+ import {RoleId} from "../../types/RoleId.sol";
7
+ import {IBaseComponent} from "../../components/IBaseComponent.sol";
8
+ import {IService} from "../../shared/IService.sol";
9
+
10
+ // TODO rename to registry service
11
+ interface IComponentOwnerService is IService {
12
+
13
+ // TODO move to product/pool services
14
+ function lock(IBaseComponent component) external;
15
+
16
+ // TODO move to product/pool services
17
+ function unlock(IBaseComponent component) external;
18
+
19
+ function getRoleForType(ObjectType cType) external pure returns (RoleId role);
20
+ }
@@ -0,0 +1,12 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {Fee} from "../../types/Fee.sol";
6
+ import {IService} from "../../shared/IService.sol";
7
+
8
+ interface IDistributionService is IService {
9
+ function setFees(
10
+ Fee memory distributionFee
11
+ ) external;
12
+ }
@@ -0,0 +1,94 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRisk} from "../module/IRisk.sol";
5
+ import {IService} from "../../shared/IService.sol";
6
+
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {ReferralId} from "../../types/Referral.sol";
9
+ import {RiskId} from "../../types/RiskId.sol";
10
+ import {StateId} from "../../types/StateId.sol";
11
+ import {Timestamp} from "../../types/Timestamp.sol";
12
+ import {UFixed} from "../../types/UFixed.sol";
13
+ import {Fee} from "../../types/Fee.sol";
14
+
15
+ interface IPolicyService is IService {
16
+
17
+ error ErrorIPolicyServiceInsufficientAllowance(address customer, address tokenHandlerAddress, uint256 amount);
18
+ error ErrorIPolicyServicePremiumAlreadyPaid(NftId policyNftId, uint256 premiumPaidAmount);
19
+ error ErrorIPolicyServicePolicyNotActivated(NftId policyNftId);
20
+ error ErrorIPolicyServicePolicyAlreadyClosed(NftId policyNftId);
21
+ error ErrorIPolicyServicePolicyNotActive(NftId policyNftId, StateId state);
22
+ error ErrorIPolicyServicePremiumNotFullyPaid(NftId policyNftId, uint256 premiumAmount, uint256 premiumPaidAmount);
23
+ error ErrorIPolicyServiceOpenClaims(NftId policyNftId, uint16 openClaimsCount);
24
+ error ErrorIPolicyServicePolicyHasNotExpired(NftId policyNftId, Timestamp expiredAt);
25
+
26
+ function calculatePremium(
27
+ RiskId riskId,
28
+ uint256 sumInsuredAmount,
29
+ uint256 lifetime,
30
+ bytes memory applicationData,
31
+ NftId bundleNftId,
32
+ ReferralId referralId
33
+ )
34
+ external
35
+ view
36
+ returns (
37
+ uint256 premiumAmount,
38
+ uint256 productFeeAmount,
39
+ uint256 poolFeeAmount,
40
+ uint256 bundleFeeAmount,
41
+ uint256 distributionFeeAmount
42
+ );
43
+
44
+
45
+ function createApplication(
46
+ address applicationOwner,
47
+ RiskId riskId,
48
+ uint256 sumInsuredAmount,
49
+ uint256 lifetime,
50
+ bytes memory applicationData,
51
+ NftId bundleNftId,
52
+ ReferralId referralId
53
+ ) external returns (NftId nftId);
54
+
55
+ /**
56
+ * @dev revokes the application represented by {policyNftId}.
57
+ * an application can only be revoked in applied state.
58
+ * only the application holder may revoke an application.
59
+ */
60
+ function revoke(NftId policyNftId) external;
61
+
62
+ /**
63
+ * @dev underwrites the policy represented by {policyNftId}.
64
+ * optionally collects premiums and activates the policy.
65
+ * - premium payment is only attempted if requirePremiumPayment is set to true
66
+ * - activation is only done if activateAt is a non-zero timestamp
67
+ */
68
+ function underwrite(
69
+ NftId policyNftId,
70
+ bool requirePremiumPayment,
71
+ Timestamp activateAt
72
+ ) external;
73
+
74
+ // function decline(uint256 nftId) external;
75
+ // function expire(uint256 nftId) external;
76
+
77
+ function collectPremium(NftId policyNftId, Timestamp activateAt) external;
78
+
79
+ function activate(NftId policyNftId, Timestamp activateAt) external;
80
+
81
+
82
+ function close(NftId nftId) external;
83
+
84
+ // function createClaim(uint256 nftId, uint256 claimAmount) external;
85
+ // function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
86
+ // function declineClaim(uint256 nftId, uint256 claimId) external;
87
+ // function closeClaim(uint256 nftId, uint256 claimId) external; // TODO payoutClaim() -> implicit close when payed out in full
88
+
89
+ function calculateRequiredCollateral(
90
+ UFixed collateralizationLevel,
91
+ uint256 sumInsuredAmount
92
+ ) external pure returns(uint256 collateralAmount);
93
+
94
+ }
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {NftId} from "../../types/NftId.sol";
5
+ import {Fee} from "../../types/Fee.sol";
6
+ import {StateId} from "../../types/StateId.sol";
7
+ import {IService} from "../../shared/IService.sol";
8
+ import {IBundle} from "../module/IBundle.sol";
9
+ import {IInstance} from "../../instance/IInstance.sol";
10
+
11
+ interface IPoolService is IService {
12
+
13
+ function register(address poolAddress) external returns(NftId);
14
+
15
+ function setFees(
16
+ Fee memory poolFee,
17
+ Fee memory stakingFee,
18
+ Fee memory performanceFee
19
+ ) external;
20
+ }
@@ -0,0 +1,40 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.19;
3
+
4
+ import {IRisk} from "../module/IRisk.sol";
5
+ import {IService} from "../../shared/IService.sol";
6
+
7
+ import {NftId} from "../../types/NftId.sol";
8
+ import {ReferralId} from "../../types/Referral.sol";
9
+ import {RiskId} from "../../types/RiskId.sol";
10
+ import {StateId} from "../../types/StateId.sol";
11
+ import {Timestamp} from "../../types/Timestamp.sol";
12
+ import {UFixed} from "../../types/UFixed.sol";
13
+ import {Fee} from "../../types/Fee.sol";
14
+
15
+ interface IProductService is IService {
16
+
17
+ function register(address productAddress) external returns(NftId);
18
+
19
+ function setFees(
20
+ Fee memory productFee,
21
+ Fee memory processingFee
22
+ ) external;
23
+
24
+ function createRisk(
25
+ RiskId riskId,
26
+ bytes memory data
27
+ ) external;
28
+
29
+
30
+ function updateRisk(
31
+ RiskId riskId,
32
+ bytes memory data
33
+ ) external;
34
+
35
+
36
+ function updateRiskState(
37
+ RiskId riskId,
38
+ StateId newState
39
+ ) external;
40
+ }