@etherisc/gif-next 0.0.2-f7b8c9f-518 → 0.0.2-f7c17b4-297

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 (456) hide show
  1. package/README.md +243 -2
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +774 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +928 -175
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → components/IComponent.sol/IComponent.json} +153 -174
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +701 -1
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +797 -76
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +567 -34
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +995 -260
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +710 -157
  18. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  19. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +764 -0
  20. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +4 -0
  21. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +185 -0
  22. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  23. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1451 -1206
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → IInstanceService.sol/IInstanceService.json} +199 -182
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2088 -1373
  28. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +984 -0
  30. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1391 -0
  32. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  33. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1035 -0
  34. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +693 -0
  36. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +261 -0
  38. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/{InstanceBase.sol/InstanceBase.json → ComponentService.sol/ComponentService.json} +192 -195
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +27 -158
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +37 -245
  45. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  47. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  49. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  50. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  51. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/instance/module/{distribution/IDistribution.sol → IDistribution.sol}/IDistribution.json +1 -1
  53. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  54. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  55. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  56. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  57. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  58. package/artifacts/contracts/instance/{base/ModuleBase.sol/ModuleBase.json → module/ISetup.sol/ISetup.json} +2 -2
  59. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  60. package/artifacts/contracts/instance/module/{treasury/ITreasury.sol → ITreasury.sol}/ITreasury.json +1 -1
  61. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  63. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  65. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  67. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  69. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  71. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  73. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +473 -168
  75. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +677 -0
  77. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IApplicationService.sol/IApplicationService.json} +200 -204
  79. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  81. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
  83. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +197 -163
  85. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  87. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +30 -255
  89. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +41 -419
  91. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  93. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  95. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +227 -264
  97. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
  99. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +233 -535
  101. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +47 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +236 -63
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +312 -178
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/Registry.sol/Registry.json +210 -212
  112. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  113. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  114. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +424 -255
  116. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -122
  118. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  120. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  122. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  123. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  124. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  125. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  126. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
  127. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  128. package/artifacts/contracts/{instance/module/component/IComponent.sol/IComponentModule.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +69 -57
  129. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  130. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -34
  131. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  132. package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
  133. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  134. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +51 -47
  135. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  136. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  137. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  138. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -27
  139. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  140. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  141. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  142. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -61
  143. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  144. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +129 -51
  145. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  146. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  147. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  148. package/artifacts/contracts/{instance/base/IService.sol/IService.json → shared/Service.sol/Service.json} +147 -154
  149. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  150. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  151. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  152. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  153. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  154. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  155. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  156. package/artifacts/contracts/test/TestFee.sol/TestFee.json +4 -4
  157. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  158. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +129 -51
  159. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +14 -14
  161. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  162. package/artifacts/contracts/test/TestService.sol/TestService.json +141 -215
  163. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  164. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +91 -53
  165. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  166. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +2 -2
  167. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -174
  169. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  170. package/artifacts/contracts/test/Usdc.sol/USDC.json +91 -53
  171. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  172. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  175. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  176. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  177. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  178. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  179. package/artifacts/contracts/types/Fee.sol/FeeLib.json +4 -4
  180. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  181. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +31 -17
  182. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  183. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  184. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  185. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +26 -3
  186. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  187. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  188. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  190. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  192. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  193. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  194. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  196. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +134 -8
  198. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
  200. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  201. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  202. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
  204. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  205. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  206. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  207. package/artifacts/contracts/types/UFixed.sol/{UFixedMathLib.json → UFixedLib.json} +3 -3
  208. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  209. package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
  210. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  211. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +22 -3
  212. package/contracts/components/Component.sol +221 -0
  213. package/contracts/components/Distribution.sol +214 -61
  214. package/contracts/components/IComponent.sol +68 -0
  215. package/contracts/components/IDistributionComponent.sol +59 -5
  216. package/contracts/components/IPoolComponent.sol +126 -39
  217. package/contracts/components/IProductComponent.sol +12 -9
  218. package/contracts/components/Pool.sol +290 -158
  219. package/contracts/components/Product.sol +134 -140
  220. package/contracts/instance/BundleManager.sol +125 -0
  221. package/contracts/instance/Cloneable.sol +46 -0
  222. package/contracts/instance/IInstance.sol +84 -46
  223. package/contracts/instance/IInstanceService.sol +59 -0
  224. package/contracts/instance/Instance.sol +273 -69
  225. package/contracts/instance/InstanceAccessManager.sol +297 -0
  226. package/contracts/instance/InstanceReader.sol +293 -0
  227. package/contracts/instance/InstanceService.sol +490 -0
  228. package/contracts/instance/InstanceServiceManager.sol +54 -0
  229. package/contracts/instance/ObjectManager.sol +84 -0
  230. package/contracts/instance/base/ComponentService.sol +134 -0
  231. package/contracts/instance/base/IKeyValueStore.sol +13 -14
  232. package/contracts/instance/base/ILifecycle.sol +3 -3
  233. package/contracts/instance/base/KeyValueStore.sol +49 -38
  234. package/contracts/instance/base/Lifecycle.sol +1 -1
  235. package/contracts/instance/module/IAccess.sol +47 -0
  236. package/contracts/instance/module/IBundle.sol +21 -0
  237. package/contracts/instance/module/IDistribution.sol +39 -0
  238. package/contracts/instance/module/IPolicy.sol +48 -0
  239. package/contracts/instance/module/IRisk.sol +11 -0
  240. package/contracts/instance/module/ISetup.sol +48 -0
  241. package/contracts/instance/module/ITreasury.sol +23 -0
  242. package/contracts/instance/service/ApplicationService.sol +269 -0
  243. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  244. package/contracts/instance/service/BundleService.sol +299 -0
  245. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  246. package/contracts/instance/service/ClaimService.sol +151 -0
  247. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  248. package/contracts/instance/service/DistributionService.sol +244 -21
  249. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  250. package/contracts/instance/service/IApplicationService.sol +83 -0
  251. package/contracts/instance/service/IBundleService.sol +55 -0
  252. package/contracts/instance/service/IClaimService.sol +61 -0
  253. package/contracts/instance/service/IDistributionService.sol +54 -1
  254. package/contracts/instance/service/IPolicyService.sol +90 -0
  255. package/contracts/instance/service/IPoolService.sol +7 -24
  256. package/contracts/instance/service/IProductService.sol +9 -76
  257. package/contracts/instance/service/PolicyService.sol +476 -0
  258. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  259. package/contracts/instance/service/PoolService.sol +77 -117
  260. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  261. package/contracts/instance/service/ProductService.sol +156 -433
  262. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  263. package/contracts/registry/ChainNft.sol +41 -26
  264. package/contracts/registry/IRegistry.sol +51 -25
  265. package/contracts/registry/IRegistryService.sol +54 -16
  266. package/contracts/registry/Registry.sol +279 -306
  267. package/contracts/registry/RegistryAccessManager.sol +216 -0
  268. package/contracts/registry/RegistryService.sol +162 -247
  269. package/contracts/registry/RegistryServiceManager.sol +30 -11
  270. package/contracts/registry/ReleaseManager.sol +322 -0
  271. package/contracts/registry/TokenRegistry.sol +116 -0
  272. package/contracts/shared/ERC165.sol +15 -9
  273. package/contracts/shared/INftOwnable.sol +11 -10
  274. package/contracts/shared/IPolicyHolder.sol +26 -0
  275. package/contracts/shared/IRegisterable.sol +4 -6
  276. package/contracts/shared/IRegistryLinked.sol +12 -0
  277. package/contracts/shared/IService.sol +16 -0
  278. package/contracts/shared/IVersionable.sol +4 -47
  279. package/contracts/shared/NftOwnable.sol +67 -83
  280. package/contracts/shared/PolicyHolder.sol +81 -0
  281. package/contracts/shared/ProxyManager.sol +101 -26
  282. package/contracts/shared/Registerable.sol +17 -32
  283. package/contracts/shared/RegistryLinked.sol +48 -0
  284. package/contracts/shared/Service.sol +58 -0
  285. package/contracts/shared/TokenHandler.sol +27 -0
  286. package/contracts/shared/UpgradableProxyWithAdmin.sol +2 -2
  287. package/contracts/shared/Versionable.sol +5 -93
  288. package/contracts/test/TestFee.sol +2 -2
  289. package/contracts/test/TestRegisterable.sol +1 -1
  290. package/contracts/test/TestRoleId.sol +1 -1
  291. package/contracts/test/TestService.sol +6 -7
  292. package/contracts/types/ClaimId.sol +52 -0
  293. package/contracts/types/DistributorType.sol +55 -0
  294. package/contracts/types/Fee.sol +3 -3
  295. package/contracts/types/Key32.sol +8 -3
  296. package/contracts/types/NftIdSet.sol +26 -24
  297. package/contracts/types/NumberId.sol +52 -0
  298. package/contracts/types/ObjectType.sol +39 -14
  299. package/contracts/types/PayoutId.sol +54 -0
  300. package/contracts/types/Referral.sol +85 -0
  301. package/contracts/types/RoleId.sol +66 -9
  302. package/contracts/types/Seconds.sol +54 -0
  303. package/contracts/types/StateId.sol +5 -1
  304. package/contracts/types/Timestamp.sol +16 -13
  305. package/contracts/types/UFixed.sol +128 -12
  306. package/contracts/types/Version.sol +4 -1
  307. package/package.json +6 -5
  308. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  309. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -301
  310. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  311. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  312. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  313. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  314. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  315. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  316. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  317. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  318. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  319. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  320. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  321. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  322. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  323. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  325. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  327. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  329. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  330. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  331. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  332. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  333. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  334. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  335. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  336. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  337. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  338. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  339. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  340. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  341. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  342. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  343. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  344. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  345. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  346. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  347. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  348. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  349. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  350. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  351. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  352. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  353. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  354. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  355. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.json +0 -10
  356. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  358. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  359. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -297
  360. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  361. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  362. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -297
  363. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  364. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -117
  365. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  366. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  367. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  368. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.dbg.json +0 -4
  369. package/artifacts/contracts/instance/module/distribution/DistributionModule.sol/DistributionModule.json +0 -10
  370. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistribution.dbg.json +0 -4
  371. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.dbg.json +0 -4
  372. package/artifacts/contracts/instance/module/distribution/IDistribution.sol/IDistributionModule.json +0 -10
  373. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  374. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  375. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -271
  376. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  377. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -271
  378. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  379. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  380. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -164
  382. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  383. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -164
  384. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  385. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  386. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -113
  387. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  388. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -131
  389. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  390. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  391. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -638
  392. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  393. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  394. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  395. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -638
  396. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  397. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -794
  398. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  399. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  400. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  401. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.dbg.json +0 -4
  402. package/artifacts/contracts/test/TestDistribution.sol/TestDistribution.json +0 -557
  403. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  404. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -716
  405. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  406. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -744
  407. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.dbg.json +0 -4
  408. package/artifacts/contracts/types/ReferralId.sol/ReferralIdLib.json +0 -99
  409. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  410. package/contracts/components/BaseComponent.sol +0 -79
  411. package/contracts/components/IBaseComponent.sol +0 -19
  412. package/contracts/experiment/errors/Require.sol +0 -38
  413. package/contracts/experiment/errors/Revert.sol +0 -44
  414. package/contracts/experiment/inheritance/A.sol +0 -53
  415. package/contracts/experiment/inheritance/B.sol +0 -28
  416. package/contracts/experiment/inheritance/C.sol +0 -34
  417. package/contracts/experiment/inheritance/IA.sol +0 -13
  418. package/contracts/experiment/inheritance/IB.sol +0 -10
  419. package/contracts/experiment/inheritance/IC.sol +0 -12
  420. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  421. package/contracts/experiment/statemachine/ISM.sol +0 -25
  422. package/contracts/experiment/statemachine/SM.sol +0 -57
  423. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  424. package/contracts/experiment/types/TypeA.sol +0 -47
  425. package/contracts/experiment/types/TypeB.sol +0 -29
  426. package/contracts/instance/IInstanceLinked.sol +0 -8
  427. package/contracts/instance/base/ComponentServiceBase.sol +0 -49
  428. package/contracts/instance/base/IInstanceBase.sol +0 -23
  429. package/contracts/instance/base/IService.sol +0 -15
  430. package/contracts/instance/base/InstanceBase.sol +0 -89
  431. package/contracts/instance/base/ModuleBase.sol +0 -57
  432. package/contracts/instance/base/ServiceBase.sol +0 -44
  433. package/contracts/instance/module/access/Access.sol +0 -149
  434. package/contracts/instance/module/access/IAccess.sol +0 -53
  435. package/contracts/instance/module/bundle/BundleModule.sol +0 -134
  436. package/contracts/instance/module/bundle/IBundle.sol +0 -53
  437. package/contracts/instance/module/component/ComponentModule.sol +0 -71
  438. package/contracts/instance/module/component/IComponent.sol +0 -28
  439. package/contracts/instance/module/distribution/DistributionModule.sol +0 -17
  440. package/contracts/instance/module/distribution/IDistribution.sol +0 -10
  441. package/contracts/instance/module/policy/IPolicy.sol +0 -63
  442. package/contracts/instance/module/policy/PolicyModule.sol +0 -91
  443. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  444. package/contracts/instance/module/pool/PoolModule.sol +0 -95
  445. package/contracts/instance/module/risk/IRisk.sol +0 -26
  446. package/contracts/instance/module/risk/RiskModule.sol +0 -62
  447. package/contracts/instance/module/treasury/ITreasury.sol +0 -84
  448. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  449. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -131
  450. package/contracts/instance/service/ComponentOwnerService.sol +0 -275
  451. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  452. package/contracts/registry/IChainNft.sol +0 -22
  453. package/contracts/test/TestDistribution.sol +0 -22
  454. package/contracts/test/TestPool.sol +0 -27
  455. package/contracts/test/TestProduct.sol +0 -74
  456. package/contracts/types/ReferralId.sol +0 -48
@@ -0,0 +1,151 @@
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 "./IApplicationService.sol";
6
+
7
+ import {IRegistry} from "../../registry/IRegistry.sol";
8
+ import {IProductComponent} from "../../components/IProductComponent.sol";
9
+ import {Product} from "../../components/Product.sol";
10
+ import {IPoolComponent} from "../../components/IPoolComponent.sol";
11
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
12
+ import {IInstance} from "../IInstance.sol";
13
+ import {IPolicy} from "../module/IPolicy.sol";
14
+ import {IRisk} from "../module/IRisk.sol";
15
+ import {IBundle} from "../module/IBundle.sol";
16
+ import {IProductService} from "./IProductService.sol";
17
+ import {ITreasury} from "../module/ITreasury.sol";
18
+ import {ISetup} from "../module/ISetup.sol";
19
+
20
+ import {TokenHandler} from "../../shared/TokenHandler.sol";
21
+
22
+ import {IVersionable} from "../../shared/IVersionable.sol";
23
+ import {Versionable} from "../../shared/Versionable.sol";
24
+
25
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
26
+ import {UFixed, UFixedLib} from "../../types/UFixed.sol";
27
+ import {Blocknumber, blockNumber} from "../../types/Blocknumber.sol";
28
+ import {ObjectType, INSTANCE, PRODUCT, POOL, APPLICATION, POLICY, CLAIM, BUNDLE} from "../../types/ObjectType.sol";
29
+ import {APPLIED, UNDERWRITTEN, ACTIVE, KEEP_STATE, CLOSED} from "../../types/StateId.sol";
30
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
31
+ import {Fee, FeeLib} from "../../types/Fee.sol";
32
+ import {ReferralId} from "../../types/Referral.sol";
33
+ import {RiskId} from "../../types/RiskId.sol";
34
+ import {StateId} from "../../types/StateId.sol";
35
+ import {ClaimId} from "../../types/ClaimId.sol";
36
+ import {PayoutId} from "../../types/PayoutId.sol";
37
+ import {Version, VersionLib} from "../../types/Version.sol";
38
+
39
+ import {ComponentService} from "../base/ComponentService.sol";
40
+ import {InstanceReader} from "../InstanceReader.sol";
41
+ import {IBundleService} from "./IBundleService.sol";
42
+ import {IClaimService} from "./IClaimService.sol";
43
+ import {IPoolService} from "./IPoolService.sol";
44
+ import {IService} from "../../shared/IService.sol";
45
+ import {Service} from "../../shared/Service.sol";
46
+
47
+
48
+ contract ClaimService is
49
+ ComponentService,
50
+ IClaimService
51
+ {
52
+
53
+
54
+ function _initialize(
55
+ address owner,
56
+ bytes memory data
57
+ )
58
+ internal
59
+ virtual override
60
+ initializer()
61
+ {
62
+ // TODO check this, might no longer be the way, refactor if necessary
63
+ address registryAddress;
64
+ address initialOwner;
65
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
66
+
67
+ initializeService(registryAddress, owner);
68
+ registerInterface(type(IClaimService).interfaceId);
69
+ }
70
+
71
+
72
+ function getDomain() public pure override(IService, Service) returns(ObjectType) {
73
+ return CLAIM();
74
+ }
75
+
76
+
77
+ function createClaim(
78
+ NftId policyNftId,
79
+ uint256 claimAmount,
80
+ bytes memory claimData
81
+ )
82
+ external
83
+ virtual
84
+ returns (ClaimId)
85
+ {
86
+
87
+ }
88
+
89
+
90
+ function confirmClaim(NftId policyNftId, ClaimId claimId, uint256 claimAmount)
91
+ external
92
+ virtual
93
+ // solhint-disable-next-line no-empty-blocks
94
+ {
95
+
96
+ }
97
+
98
+
99
+ function declineClaim(NftId policyNftId, ClaimId claimId)
100
+ external
101
+ virtual
102
+ // solhint-disable-next-line no-empty-blocks
103
+ {
104
+
105
+ }
106
+
107
+
108
+ function closeClaim(NftId policyNftId, ClaimId claimId)
109
+ external
110
+ virtual
111
+ // solhint-disable-next-line no-empty-blocks
112
+ {
113
+
114
+ }
115
+
116
+
117
+ function createPayout(
118
+ NftId policyNftId,
119
+ ClaimId claimId,
120
+ uint256 payoutAmount,
121
+ bytes calldata payoutData
122
+ )
123
+ external
124
+ virtual
125
+ returns(PayoutId payoutId)
126
+ // solhint-disable-next-line no-empty-blocks
127
+ {
128
+
129
+ }
130
+
131
+
132
+ function payoutExecuted(
133
+ NftId policyNftId,
134
+ PayoutId payoutId
135
+ )
136
+ external
137
+ virtual
138
+ // solhint-disable-next-line no-empty-blocks
139
+ {
140
+
141
+ }
142
+
143
+
144
+ // internal functions
145
+
146
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
147
+ IRegistry.ObjectInfo memory productInfo;
148
+ (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
149
+ product = Product(productInfo.objectAddress);
150
+ }
151
+ }
@@ -0,0 +1,35 @@
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 {ClaimService} from "./ClaimService.sol";
7
+
8
+ contract ClaimServiceManager is ProxyManager {
9
+
10
+ ClaimService private _claimService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ClaimService svc = new ClaimService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _claimService = ClaimService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getClaimService()
29
+ external
30
+ view
31
+ returns (ClaimService)
32
+ {
33
+ return _claimService;
34
+ }
35
+ }
@@ -3,39 +3,87 @@ pragma solidity ^0.8.19;
3
3
 
4
4
  import {IRegistry} from "../../registry/IRegistry.sol";
5
5
  import {IInstance} from "../../instance/IInstance.sol";
6
- import {ITreasury} from "../../instance/module/treasury/ITreasury.sol";
6
+ import {InstanceAccessManager} from "../InstanceAccessManager.sol";
7
+ import {InstanceReader} from "../../instance/InstanceReader.sol";
8
+ import {ISetup} from "../../instance/module/ISetup.sol";
7
9
 
8
- import {NftId} from "../../types/NftId.sol";
10
+ import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
9
11
  import {Fee} from "../../types/Fee.sol";
10
- import {DISTRIBUTION} from "../../types/ObjectType.sol";
12
+ import {DISTRIBUTION_OWNER_ROLE} from "../../types/RoleId.sol";
13
+ import {KEEP_STATE} from "../../types/StateId.sol";
14
+ import {ObjectType, DISTRIBUTION, INSTANCE, DISTRIBUTION, DISTRIBUTOR} from "../../types/ObjectType.sol";
11
15
  import {Version, VersionLib} from "../../types/Version.sol";
12
16
 
13
17
  import {IVersionable} from "../../shared/IVersionable.sol";
14
18
  import {Versionable} from "../../shared/Versionable.sol";
15
19
 
16
- import {IService} from "../base/IService.sol";
17
- import {ServiceBase} from "../base/ServiceBase.sol";
18
- import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
20
+ import {IService} from "../../shared/IService.sol";
21
+ import {Service} from "../../shared/Service.sol";
22
+ import {ComponentService} from "../base/ComponentService.sol";
23
+ import {InstanceService} from "../InstanceService.sol";
24
+ import {IComponent} from "../../components/IComponent.sol";
25
+ import {IDistributionComponent} from "../../components/IDistributionComponent.sol";
19
26
  import {IDistributionService} from "./IDistributionService.sol";
20
27
 
28
+ import {UFixed} from "../../types/UFixed.sol";
29
+ import {DistributorType, DistributorTypeLib} from "../../types/DistributorType.sol";
30
+ import {ReferralId, ReferralStatus, ReferralLib} from "../../types/Referral.sol";
31
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
32
+ import {Key32} from "../../types/Key32.sol";
33
+ import {IDistribution} from "../module/IDistribution.sol";
34
+
35
+
21
36
  contract DistributionService is
22
- ComponentServiceBase,
37
+ ComponentService,
23
38
  IDistributionService
24
39
  {
25
- string public constant NAME = "DistributionService";
40
+ using NftIdLib for NftId;
26
41
 
27
- constructor(
28
- address registry,
29
- NftId registryNftId,
30
- address initialOwner
31
- ) ComponentServiceBase(registry, registryNftId, initialOwner)
42
+ address internal _registryAddress;
43
+
44
+ function _initialize(
45
+ address owner,
46
+ bytes memory data
47
+ )
48
+ internal
49
+ initializer
50
+ virtual override
32
51
  {
33
- _registerInterface(type(IDistributionService).interfaceId);
52
+ address initialOwner;
53
+ address registryAddress;
54
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
55
+ // TODO while DistributionService is not deployed in DistributionServiceManager constructor
56
+ // owner is DistributionServiceManager deployer
57
+ initializeService(registryAddress, owner);
58
+ registerInterface(type(IDistributionService).interfaceId);
34
59
  }
35
60
 
61
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
62
+ return DISTRIBUTION();
63
+ }
64
+
65
+ function register(address distributionAddress)
66
+ external
67
+ returns(NftId distributionNftId)
68
+ {
69
+ (
70
+ IComponent component,
71
+ address owner,
72
+ IInstance instance,
73
+ NftId instanceNftId
74
+ ) = _checkComponentForRegistration(
75
+ distributionAddress,
76
+ DISTRIBUTION(),
77
+ DISTRIBUTION_OWNER_ROLE());
78
+
79
+ IRegistry.ObjectInfo memory distributionInfo = getRegistryService().registerDistribution(component, owner);
80
+ IDistributionComponent distribution = IDistributionComponent(distributionAddress);
81
+ distribution.linkToRegisteredNftId();
82
+ distributionNftId = distributionInfo.nftId;
36
83
 
37
- function getName() public pure override(IService, ServiceBase) returns(string memory name) {
38
- return NAME;
84
+ instance.createDistributionSetup(distributionNftId, distribution.getSetupInfo());
85
+ getInstanceService().createGifTarget(instanceNftId, distributionAddress, distribution.getName());
86
+ getInstanceService().grantDistributionDefaultPermissions(instanceNftId, distributionAddress, distribution.getName());
39
87
  }
40
88
 
41
89
  function setFees(
@@ -44,11 +92,186 @@ contract DistributionService is
44
92
  external
45
93
  override
46
94
  {
47
- (IRegistry.ObjectInfo memory distributionInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
95
+ (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
96
+ InstanceReader instanceReader = instance.getInstanceReader();
97
+ NftId distributionNftId = info.nftId;
48
98
 
49
- NftId productNftId = instance.getProductNftId(distributionInfo.nftId);
50
- ITreasury.TreasuryInfo memory treasuryInfo = instance.getTreasuryInfo(productNftId);
51
- treasuryInfo.distributionFee = distributionFee;
52
- instance.setTreasuryInfo(productNftId, treasuryInfo);
99
+ ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
100
+ distSetupInfo.distributionFee = distributionFee;
101
+
102
+ instance.updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
53
103
  }
104
+
105
+ function createDistributorType(
106
+ string memory name,
107
+ UFixed minDiscountPercentage,
108
+ UFixed maxDiscountPercentage,
109
+ UFixed commissionPercentage,
110
+ uint32 maxReferralCount,
111
+ uint32 maxReferralLifetime,
112
+ bool allowSelfReferrals,
113
+ bool allowRenewals,
114
+ bytes memory data
115
+ )
116
+ external
117
+ returns (DistributorType distributorType)
118
+ {
119
+ (,NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
120
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
121
+ Key32 key32 = distributorType.toKey32();
122
+
123
+ if(!instance.exists(key32)) {
124
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
125
+ name,
126
+ minDiscountPercentage,
127
+ maxDiscountPercentage,
128
+ commissionPercentage,
129
+ maxReferralCount,
130
+ maxReferralLifetime,
131
+ allowSelfReferrals,
132
+ allowRenewals,
133
+ data);
134
+
135
+ instance.createDistributorType(key32, info);
136
+ }
137
+ }
138
+
139
+ function createDistributor(
140
+ address distributor,
141
+ DistributorType distributorType,
142
+ bytes memory data
143
+ ) external returns (NftId distributorNftId)
144
+ {
145
+ (, NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
146
+
147
+ distributorNftId = getRegistryService().registerDistributor(
148
+ IRegistry.ObjectInfo(
149
+ zeroNftId(),
150
+ distributionNftId,
151
+ DISTRIBUTOR(),
152
+ true, // intercepting property for bundles is defined on pool
153
+ address(0),
154
+ distributor,
155
+ ""
156
+ ));
157
+
158
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
159
+ distributorType,
160
+ true, // active
161
+ data);
162
+
163
+ instance.createDistributor(distributorNftId, info);
164
+ }
165
+
166
+ function updateDistributorType(
167
+ NftId distributorNftId,
168
+ DistributorType distributorType,
169
+ bytes memory data
170
+ ) external virtual
171
+ {
172
+ (,, IInstance instance) = _getAndVerifyCallingDistribution();
173
+
174
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
175
+ distributorType,
176
+ true, // active
177
+ data);
178
+
179
+ instance.updateDistributor(distributorNftId, info, KEEP_STATE());
180
+ }
181
+
182
+
183
+ function createReferral(
184
+ NftId distributorNftId,
185
+ string memory code,
186
+ UFixed discountPercentage,
187
+ uint32 maxReferrals,
188
+ Timestamp expiryAt,
189
+ bytes memory data
190
+ )
191
+ external
192
+ virtual
193
+ returns (ReferralId referralId)
194
+ {
195
+ (,NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
196
+ require(bytes(code).length > 0, "ERROR:DSV-030:CODE_INVALID");
197
+ require(expiryAt > zeroTimestamp(), "ERROR:DSV-031:EXPIRY_AT_ZERO");
198
+
199
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
200
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
201
+ distributorNftId,
202
+ code,
203
+ discountPercentage,
204
+ maxReferrals,
205
+ 0, // used referrals
206
+ expiryAt,
207
+ data
208
+ );
209
+
210
+ instance.createReferral(referralId.toKey32(), info);
211
+ return referralId;
212
+ }
213
+
214
+ function processSale(
215
+ ReferralId referralId,
216
+ uint256 premiumAmount
217
+ )
218
+ external
219
+ virtual
220
+ {
221
+ revert("NOT_IMPLEMENTED_YET");
222
+ }
223
+
224
+ function calculateFeeAmount(
225
+ ReferralId referralId,
226
+ uint256 premiumAmount
227
+ )
228
+ external
229
+ virtual
230
+ view
231
+ returns (uint256 feeAmount)
232
+ {
233
+ revert("NOT_IMPLEMENTED_YET");
234
+ }
235
+
236
+ function _getAndVerifyCallingDistribution()
237
+ internal
238
+ view
239
+ returns(
240
+ address distributionAddress,
241
+ NftId distributionNftId,
242
+ IInstance instance
243
+ )
244
+ {
245
+ ObjectType objectType;
246
+ (
247
+ distributionAddress,
248
+ distributionNftId,
249
+ objectType,
250
+ instance
251
+ ) = _getAndVerifyCaller();
252
+
253
+ require(objectType == DISTRIBUTION(), "ERROR:PRS-031:CALLER_NOT_DISTRUBUTION");
254
+ }
255
+
256
+ function _getAndVerifyCaller()
257
+ internal
258
+ view
259
+ returns(
260
+ address objectAddress,
261
+ NftId objectNftId,
262
+ ObjectType objectType,
263
+ IInstance instance
264
+ )
265
+ {
266
+ objectAddress = msg.sender;
267
+ objectNftId = getRegistry().getNftId(objectAddress);
268
+ require(objectNftId.gtz(), "ERROR:SRV-030:CALLER_UNKNOWN");
269
+ IRegistry.ObjectInfo memory info = getRegistry().getObjectInfo(objectNftId);
270
+ objectType = info.objectType;
271
+
272
+ IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(info.parentNftId);
273
+ require(parentInfo.objectType == INSTANCE(), "ERROR:SRV-031:PARENT_NOT_INSTANCE");
274
+ instance = IInstance(parentInfo.objectAddress);
275
+ }
276
+
54
277
  }
@@ -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(registryAddress)
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,83 @@
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 {Seconds} from "../../types/Seconds.sol";
11
+ import {StateId} from "../../types/StateId.sol";
12
+ import {Timestamp} from "../../types/Timestamp.sol";
13
+ import {UFixed} from "../../types/UFixed.sol";
14
+ import {Fee} from "../../types/Fee.sol";
15
+
16
+ /// @dev gif service responsible for creating applications
17
+ /// only product components may call transaction functions
18
+ interface IApplicationService is IService {
19
+
20
+ error IApplicationServicePolicyNotApplied(NftId applicationNftId);
21
+
22
+ /// @dev creates a new application based on the specified attributes
23
+ /// may only be called by a product component
24
+ function create(
25
+ address applicationOwner,
26
+ RiskId riskId,
27
+ uint256 sumInsuredAmount,
28
+ Seconds lifetime,
29
+ NftId bundleNftId,
30
+ ReferralId referralId,
31
+ bytes memory applicationData
32
+ ) external returns (NftId applicationNftId);
33
+
34
+ /// @dev updates application attributes
35
+ /// may only be called while the application is in applied state
36
+ /// may only be called by the referenced product related to applicationNftId
37
+ function adjust(
38
+ NftId applicationNftId,
39
+ RiskId riskId,
40
+ NftId bundleNftId,
41
+ ReferralId referralId,
42
+ uint256 sumInsuredAmount,
43
+ uint256 lifetime,
44
+ bytes memory applicationData
45
+ ) external;
46
+
47
+ /// @dev creates a new application that extends the provided policy
48
+ /// lifetime will seamlessly extend referenced policy, for closed policies
49
+ /// lifetime will start at underwriting time
50
+ /// product will need to limit the time window for renewal as underwriting
51
+ /// will lock the collateral at underwriting time which might be earlier than activation time
52
+ /// policyNftId needs to refer to an underwritten (or active or closed) policy
53
+ /// may only be called by the referenced product related to policyNftId
54
+ function renew(
55
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
56
+ NftId bundleNftId // will likely need a newer bundle for underwriting
57
+ ) external returns (NftId applicationNftId);
58
+
59
+ /// @dev revokes the application represented by {policyNftId}
60
+ /// an application can only be revoked in applied state
61
+ /// only the application holder may revoke an application
62
+ function revoke(NftId policyNftId) external;
63
+
64
+ /// @dev calculates the premium amount for the specified attributes
65
+ /// also returns the various fee components involved with creating a policy
66
+ function calculatePremium(
67
+ RiskId riskId,
68
+ uint256 sumInsuredAmount,
69
+ Seconds lifetime,
70
+ bytes memory applicationData,
71
+ NftId bundleNftId,
72
+ ReferralId referralId
73
+ )
74
+ external
75
+ view
76
+ returns (
77
+ uint256 premiumAmount,
78
+ uint256 distributionFeeAmount,
79
+ uint256 productFeeAmount,
80
+ uint256 poolFeeAmount,
81
+ uint256 bundleFeeAmount
82
+ );
83
+ }
@@ -0,0 +1,55 @@
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
+ import {IBundle} from "../module/IBundle.sol";
8
+ import {IInstance} from "../../instance/IInstance.sol";
9
+ import {Seconds} from "../../types/Seconds.sol";
10
+ import {StateId} from "../../types/StateId.sol";
11
+
12
+ interface IBundleService is IService {
13
+ error ErrorIBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, uint256 amount);
14
+
15
+ function createBundle(
16
+ address owner,
17
+ Fee memory fee,
18
+ uint256 amount,
19
+ Seconds lifetime,
20
+ bytes calldata filter
21
+ ) external returns(NftId bundleNftId);
22
+
23
+ function setBundleFee(
24
+ NftId bundleNftId,
25
+ Fee memory fee
26
+ ) external;
27
+
28
+ function updateBundle(NftId instanceNftId, NftId bundleNftId, IBundle.BundleInfo memory bundleInfo, StateId state) external;
29
+
30
+ function lockCollateral(
31
+ IInstance instanceNftId,
32
+ NftId policyNftId,
33
+ NftId bundleNftId,
34
+ uint256 collateralAmount,
35
+ uint256 netPremium
36
+ )
37
+ external
38
+ returns (
39
+ IBundle.BundleInfo memory bundleInfo
40
+ );
41
+
42
+ function increaseBalance(IInstance instance, NftId bundleNftId, uint256 amount) external;
43
+
44
+ function closePolicy(IInstance instance, NftId policyNftId, NftId bundleNftId, uint256 collateralAmount) external;
45
+
46
+ // function fundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
47
+
48
+ // function defundBundle(NftId bundleNftId, uint256 amount) external returns(uint256 netAmount);
49
+
50
+ function lockBundle(NftId bundleNftId) external;
51
+
52
+ function unlockBundle(NftId bundleNftId) external;
53
+
54
+ // function closeBundle(NftId bundleNftId) external;
55
+ }