@etherisc/gif-next 0.0.2-eb1b869-461 → 0.0.2-eb98db7-932

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 (460) hide show
  1. package/README.md +403 -8
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
  3. package/artifacts/contracts/components/Component.sol/Component.json +683 -35
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +4 -0
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +1346 -0
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → components/IComponent.sol/IComponent.json} +284 -223
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +887 -0
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +806 -0
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +1140 -146
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +1056 -156
  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 +1779 -774
  24. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  25. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +498 -0
  26. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  27. package/artifacts/contracts/instance/Instance.sol/Instance.json +2514 -851
  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 +1386 -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/ComponentService.sol/ComponentService.json +541 -0
  40. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +429 -0
  42. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{lifecycle/ILifecycle.sol/ILifecycleModule.json → base/ILifecycle.sol/ILifecycle.json} +10 -77
  44. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  45. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +502 -0
  46. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  47. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +169 -0
  48. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +254 -0
  50. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  52. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  54. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  55. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  56. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  57. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  58. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +4 -0
  59. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.json +10 -0
  60. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +4 -0
  61. package/artifacts/contracts/instance/{treasury → module}/ITreasury.sol/ITreasury.json +1 -1
  62. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  63. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +858 -0
  64. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +657 -0
  66. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  67. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1085 -0
  68. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +661 -0
  70. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
  71. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +743 -0
  72. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  73. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
  74. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1087 -0
  76. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +729 -0
  78. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +462 -0
  80. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  81. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +622 -0
  82. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
  83. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +398 -0
  84. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +520 -0
  86. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +572 -0
  88. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +4 -0
  89. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +336 -0
  90. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +373 -0
  92. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  93. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1109 -0
  94. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  95. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +717 -0
  96. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +716 -0
  98. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +649 -0
  100. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +4 -0
  101. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +766 -0
  102. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +649 -0
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +239 -2
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +578 -29
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  109. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +879 -0
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  111. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +34 -0
  112. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  113. package/artifacts/contracts/registry/Registry.sol/Registry.json +651 -68
  114. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  117. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1166 -0
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  119. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +670 -0
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  121. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  123. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +498 -0
  124. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +107 -0
  126. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  128. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  129. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +46 -74
  130. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/product/IProductService.sol/IProductService.json → shared/IPolicyHolder.sol/IPolicyHolder.json} +68 -66
  132. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +188 -0
  134. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  135. package/artifacts/contracts/{registry/IRegistry.sol → shared/IRegistryLinked.sol}/IRegistryLinked.json +18 -19
  136. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  137. package/artifacts/contracts/{components/IPool.sol/IPoolComponent.json → shared/IService.sol/IService.json} +120 -117
  138. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  140. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +251 -0
  142. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  143. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
  144. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  145. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +582 -0
  146. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +352 -0
  148. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
  150. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  151. package/artifacts/contracts/shared/Service.sol/Service.json +414 -0
  152. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  153. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +96 -0
  154. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  155. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  156. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  158. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +4 -0
  159. package/artifacts/contracts/test/TestFee.sol/TestFee.json +119 -0
  160. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +4 -0
  161. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +383 -0
  162. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +4 -0
  163. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +116 -0
  164. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +4 -0
  165. package/artifacts/contracts/test/TestService.sol/TestService.json +510 -0
  166. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +4 -0
  167. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +376 -0
  168. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +4 -0
  169. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +218 -0
  170. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +4 -0
  171. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +104 -0
  172. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +4 -0
  173. package/artifacts/contracts/test/Usdc.sol/USDC.json +376 -0
  174. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  175. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +10 -0
  176. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  178. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  179. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
  180. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  181. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +104 -0
  182. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +4 -0
  183. package/artifacts/contracts/types/Fee.sol/FeeLib.json +257 -0
  184. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +4 -0
  185. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +125 -0
  186. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +65 -4
  188. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  189. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +33 -0
  190. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +4 -0
  191. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +100 -0
  192. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  194. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  195. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
  196. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +4 -0
  197. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +123 -0
  198. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +4 -0
  199. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +86 -0
  200. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +4 -0
  201. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +156 -0
  202. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  203. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +2 -2
  204. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  205. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +77 -2
  206. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +4 -0
  207. package/artifacts/contracts/{experiment/types/TypeB.sol/TypeBLib.json → types/UFixed.sol/MathLib.json} +4 -4
  208. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +4 -0
  209. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +479 -0
  210. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +4 -0
  211. package/artifacts/contracts/types/Version.sol/VersionLib.json +177 -0
  212. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +4 -0
  213. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +49 -0
  214. package/contracts/components/Component.sol +211 -47
  215. package/contracts/components/Distribution.sol +287 -0
  216. package/contracts/components/IComponent.sol +54 -0
  217. package/contracts/components/IDistributionComponent.sol +92 -0
  218. package/contracts/components/IPoolComponent.sol +87 -0
  219. package/contracts/components/IProductComponent.sol +39 -0
  220. package/contracts/components/Pool.sol +229 -27
  221. package/contracts/components/Product.sol +243 -47
  222. package/contracts/instance/BundleManager.sol +125 -0
  223. package/contracts/instance/Cloneable.sol +46 -0
  224. package/contracts/instance/IInstance.sol +91 -24
  225. package/contracts/instance/IInstanceService.sol +59 -0
  226. package/contracts/instance/Instance.sol +270 -51
  227. package/contracts/instance/InstanceAccessManager.sol +297 -0
  228. package/contracts/instance/InstanceReader.sol +293 -0
  229. package/contracts/instance/InstanceService.sol +476 -0
  230. package/contracts/instance/InstanceServiceManager.sol +54 -0
  231. package/contracts/instance/ObjectManager.sol +84 -0
  232. package/contracts/instance/base/ComponentService.sol +134 -0
  233. package/contracts/instance/base/IKeyValueStore.sol +49 -0
  234. package/contracts/instance/base/ILifecycle.sol +30 -0
  235. package/contracts/instance/base/KeyValueStore.sol +172 -0
  236. package/contracts/instance/base/Lifecycle.sol +100 -0
  237. package/contracts/instance/module/IAccess.sol +47 -0
  238. package/contracts/instance/module/IBundle.sol +20 -0
  239. package/contracts/instance/module/IDistribution.sol +40 -0
  240. package/contracts/instance/module/IPolicy.sol +47 -0
  241. package/contracts/instance/module/IRisk.sol +11 -0
  242. package/contracts/instance/module/ISetup.sol +48 -0
  243. package/contracts/instance/module/ITreasury.sol +23 -0
  244. package/contracts/instance/service/ApplicationService.sol +268 -0
  245. package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
  246. package/contracts/instance/service/BundleService.sol +298 -0
  247. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  248. package/contracts/instance/service/ClaimService.sol +151 -0
  249. package/contracts/instance/service/ClaimServiceManager.sol +35 -0
  250. package/contracts/instance/service/DistributionService.sol +346 -0
  251. package/contracts/instance/service/DistributionServiceManager.sol +51 -0
  252. package/contracts/instance/service/IApplicationService.sol +82 -0
  253. package/contracts/instance/service/IBundleService.sol +54 -0
  254. package/contracts/instance/service/IClaimService.sol +61 -0
  255. package/contracts/instance/service/IDistributionService.sol +73 -0
  256. package/contracts/instance/service/IPolicyService.sol +89 -0
  257. package/contracts/instance/service/IPoolService.sol +20 -0
  258. package/contracts/instance/service/IProductService.sol +40 -0
  259. package/contracts/instance/service/PolicyService.sol +476 -0
  260. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  261. package/contracts/instance/service/PoolService.sol +109 -0
  262. package/contracts/instance/service/PoolServiceManager.sol +51 -0
  263. package/contracts/instance/service/ProductService.sol +233 -0
  264. package/contracts/instance/service/ProductServiceManager.sol +54 -0
  265. package/contracts/registry/ChainNft.sol +129 -62
  266. package/contracts/registry/IRegistry.sol +73 -41
  267. package/contracts/registry/IRegistryService.sol +67 -0
  268. package/contracts/registry/ITransferInterceptor.sol +6 -0
  269. package/contracts/registry/Registry.sol +408 -126
  270. package/contracts/registry/RegistryAccessManager.sol +216 -0
  271. package/contracts/registry/RegistryService.sol +283 -0
  272. package/contracts/registry/RegistryServiceManager.sol +62 -0
  273. package/contracts/registry/ReleaseManager.sol +322 -0
  274. package/contracts/registry/TokenRegistry.sol +116 -0
  275. package/contracts/shared/ContractDeployerLib.sol +72 -0
  276. package/contracts/shared/ERC165.sol +27 -0
  277. package/contracts/shared/INftOwnable.sol +23 -0
  278. package/contracts/shared/IPolicyHolder.sol +26 -0
  279. package/contracts/shared/IRegisterable.sol +15 -0
  280. package/contracts/shared/IRegistryLinked.sol +12 -0
  281. package/contracts/shared/IService.sol +16 -0
  282. package/contracts/shared/IVersionable.sol +53 -0
  283. package/contracts/shared/NftOwnable.sol +120 -0
  284. package/contracts/shared/PolicyHolder.sol +81 -0
  285. package/contracts/shared/ProxyManager.sol +169 -0
  286. package/contracts/shared/Registerable.sol +74 -0
  287. package/contracts/shared/RegistryLinked.sol +48 -0
  288. package/contracts/shared/Service.sol +58 -0
  289. package/contracts/shared/TokenHandler.sol +27 -0
  290. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  291. package/contracts/shared/Versionable.sol +59 -0
  292. package/contracts/test/TestFee.sol +25 -0
  293. package/contracts/test/TestRegisterable.sol +18 -0
  294. package/contracts/test/TestRoleId.sol +14 -0
  295. package/contracts/test/TestService.sol +25 -0
  296. package/contracts/{mock/Dip.sol → test/TestToken.sol} +5 -5
  297. package/contracts/test/TestVersion.sol +44 -0
  298. package/contracts/test/TestVersionable.sol +17 -0
  299. package/contracts/{mock → test}/Usdc.sol +1 -1
  300. package/contracts/types/AddressSet.sol +58 -0
  301. package/contracts/types/ClaimId.sol +52 -0
  302. package/contracts/types/DistributorType.sol +55 -0
  303. package/contracts/types/Fee.sol +44 -20
  304. package/contracts/types/Key32.sol +50 -0
  305. package/contracts/types/NftId.sol +22 -1
  306. package/contracts/types/NftIdSet.sol +62 -0
  307. package/contracts/types/NumberId.sol +52 -0
  308. package/contracts/types/ObjectType.sol +64 -15
  309. package/contracts/types/PayoutId.sol +54 -0
  310. package/contracts/types/Referral.sol +85 -0
  311. package/contracts/types/RiskId.sol +43 -0
  312. package/contracts/types/RoleId.sol +90 -0
  313. package/contracts/types/StateId.sol +18 -4
  314. package/contracts/types/Timestamp.sol +29 -4
  315. package/contracts/types/UFixed.sol +138 -23
  316. package/contracts/types/Version.sol +107 -0
  317. package/package.json +11 -5
  318. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  319. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  320. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  321. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  322. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  323. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  324. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  325. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  326. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  327. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  328. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  329. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  330. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  331. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  332. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  333. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  334. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  335. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  336. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  337. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  338. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  339. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  340. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  341. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  342. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  343. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  344. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  345. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  346. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  347. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  349. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  351. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  353. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  355. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  356. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  357. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  358. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  359. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  360. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.json +0 -35
  361. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  362. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  363. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  364. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  365. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  366. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  367. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  368. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  369. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  370. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  371. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  372. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  373. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  374. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  375. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  376. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  377. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  378. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  379. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  380. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  381. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  382. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  383. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  384. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  385. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  386. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  387. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  388. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  389. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  390. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  391. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  392. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  393. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  394. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  395. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  396. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  397. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  398. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  399. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  400. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  401. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  402. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  403. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  404. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  405. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  406. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  407. package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
  408. package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
  409. package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
  410. package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
  411. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
  412. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
  413. package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
  414. package/artifacts/contracts/mock/Usdc.sol/USDC.json +0 -338
  415. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  416. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  417. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  418. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  419. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  420. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  421. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  422. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  423. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  424. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  425. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  426. package/contracts/components/IPool.sol +0 -15
  427. package/contracts/components/IProduct.sol +0 -16
  428. package/contracts/experiment/errors/Require.sol +0 -38
  429. package/contracts/experiment/errors/Revert.sol +0 -44
  430. package/contracts/experiment/inheritance/A.sol +0 -53
  431. package/contracts/experiment/inheritance/B.sol +0 -28
  432. package/contracts/experiment/inheritance/C.sol +0 -34
  433. package/contracts/experiment/inheritance/IA.sol +0 -13
  434. package/contracts/experiment/inheritance/IB.sol +0 -10
  435. package/contracts/experiment/inheritance/IC.sol +0 -12
  436. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  437. package/contracts/experiment/statemachine/ISM.sol +0 -25
  438. package/contracts/experiment/statemachine/README.md +0 -112
  439. package/contracts/experiment/statemachine/SM.sol +0 -57
  440. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  441. package/contracts/experiment/types/TypeA.sol +0 -47
  442. package/contracts/experiment/types/TypeB.sol +0 -29
  443. package/contracts/instance/access/Access.sol +0 -165
  444. package/contracts/instance/access/IAccess.sol +0 -63
  445. package/contracts/instance/component/ComponentModule.sol +0 -274
  446. package/contracts/instance/component/IComponent.sol +0 -74
  447. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  448. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  449. package/contracts/instance/policy/IPolicy.sol +0 -50
  450. package/contracts/instance/policy/PolicyModule.sol +0 -114
  451. package/contracts/instance/pool/IPoolModule.sol +0 -23
  452. package/contracts/instance/pool/PoolModule.sol +0 -81
  453. package/contracts/instance/product/IProductService.sol +0 -36
  454. package/contracts/instance/product/ProductService.sol +0 -136
  455. package/contracts/instance/treasury/ITreasury.sol +0 -91
  456. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  457. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  458. package/contracts/mock/TestPool.sol +0 -16
  459. package/contracts/mock/TestProduct.sol +0 -39
  460. package/contracts/registry/IChainNft.sol +0 -21
@@ -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 {BundleService} from "./BundleService.sol";
7
+ import {Registry} from "../../registry/Registry.sol";
8
+ import {RegistryService} from "../../registry/RegistryService.sol";
9
+ import {ObjectType, REGISTRY} from "../../types/ObjectType.sol";
10
+
11
+ contract BundleServiceManager is ProxyManager {
12
+
13
+ BundleService private _bundleService;
14
+
15
+ /// @dev initializes proxy manager with pool service implementation
16
+ constructor(
17
+ address registryAddress
18
+ )
19
+ ProxyManager(registryAddress)
20
+ {
21
+ BundleService bundleSrv = new BundleService();
22
+ bytes memory data = abi.encode(registryAddress, address(this));
23
+ IVersionable versionable = deploy(
24
+ address(bundleSrv),
25
+ data);
26
+
27
+ _bundleService = BundleService(address(versionable));
28
+
29
+ // TODO `this` must have a role or own nft to register service
30
+ //Registry registry = Registry(registryAddress);
31
+ //address registryServiceAddress = registry.getServiceAddress(REGISTRY(), _bundleService.getMajorVersion());
32
+ //RegistryService registryService = RegistryService(registryServiceAddress);
33
+ //registryService.registerService(_poolService);
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(_poolService));
40
+ }
41
+
42
+ //--- view functions ----------------------------------------------------//
43
+ function getBundleService()
44
+ external
45
+ view
46
+ returns (BundleService)
47
+ {
48
+ return _bundleService;
49
+ }
50
+
51
+ }
@@ -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
+ }
@@ -0,0 +1,346 @@
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, zeroNftId} from "../../types/NftId.sol";
11
+ import {Fee, FeeLib} 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, INSTANCE, DISTRIBUTION, DISTRIBUTOR} 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 {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";
26
+ import {IDistributionService} from "./IDistributionService.sol";
27
+
28
+ import {UFixed, UFixedLib} 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
+
36
+ contract DistributionService is
37
+ ComponentService,
38
+ IDistributionService
39
+ {
40
+ using NftIdLib for NftId;
41
+ using TimestampLib for Timestamp;
42
+ using UFixedLib for UFixed;
43
+ using FeeLib for Fee;
44
+
45
+ address internal _registryAddress;
46
+
47
+ function _initialize(
48
+ address owner,
49
+ bytes memory data
50
+ )
51
+ internal
52
+ initializer
53
+ virtual override
54
+ {
55
+ address initialOwner;
56
+ address registryAddress;
57
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
58
+ // TODO while DistributionService is not deployed in DistributionServiceManager constructor
59
+ // owner is DistributionServiceManager deployer
60
+ initializeService(registryAddress, owner);
61
+ registerInterface(type(IDistributionService).interfaceId);
62
+ }
63
+
64
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
65
+ return DISTRIBUTION();
66
+ }
67
+
68
+ function register(address distributionAddress)
69
+ external
70
+ returns(NftId distributionNftId)
71
+ {
72
+ (
73
+ IComponent component,
74
+ address owner,
75
+ IInstance instance,
76
+ NftId instanceNftId
77
+ ) = _checkComponentForRegistration(
78
+ distributionAddress,
79
+ DISTRIBUTION(),
80
+ DISTRIBUTION_OWNER_ROLE());
81
+
82
+ IRegistry.ObjectInfo memory distributionInfo = getRegistryService().registerDistribution(component, owner);
83
+ IDistributionComponent distribution = IDistributionComponent(distributionAddress);
84
+ distribution.linkToRegisteredNftId();
85
+ distributionNftId = distributionInfo.nftId;
86
+
87
+ instance.createDistributionSetup(distributionNftId, distribution.getSetupInfo());
88
+ getInstanceService().createGifTarget(instanceNftId, distributionAddress, distribution.getName());
89
+ getInstanceService().grantDistributionDefaultPermissions(instanceNftId, distributionAddress, distribution.getName());
90
+ }
91
+
92
+ function setFees(
93
+ Fee memory distributionFee
94
+ )
95
+ external
96
+ override
97
+ {
98
+ (IRegistry.ObjectInfo memory info , IInstance instance) = _getAndVerifyComponentInfoAndInstance(DISTRIBUTION());
99
+ InstanceReader instanceReader = instance.getInstanceReader();
100
+ NftId distributionNftId = info.nftId;
101
+
102
+ ISetup.DistributionSetupInfo memory distSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
103
+ distSetupInfo.distributionFee = distributionFee;
104
+
105
+ instance.updateDistributionSetup(distributionNftId, distSetupInfo, KEEP_STATE());
106
+ }
107
+
108
+ function createDistributorType(
109
+ string memory name,
110
+ UFixed minDiscountPercentage,
111
+ UFixed maxDiscountPercentage,
112
+ UFixed commissionPercentage,
113
+ uint32 maxReferralCount,
114
+ uint32 maxReferralLifetime,
115
+ bool allowSelfReferrals,
116
+ bool allowRenewals,
117
+ bytes memory data
118
+ )
119
+ external
120
+ returns (DistributorType distributorType)
121
+ {
122
+ (,NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
123
+ distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
124
+ Key32 key32 = distributorType.toKey32();
125
+
126
+ // FIXME: commission <= maxDiscountPercentage
127
+ // FIXME: maxDiscountPercentage <= distributionFee
128
+
129
+ if(!instance.exists(key32)) {
130
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo(
131
+ name,
132
+ minDiscountPercentage,
133
+ maxDiscountPercentage,
134
+ commissionPercentage,
135
+ maxReferralCount,
136
+ maxReferralLifetime,
137
+ allowSelfReferrals,
138
+ allowRenewals,
139
+ data);
140
+
141
+ instance.createDistributorType(key32, info);
142
+ }
143
+ }
144
+
145
+ function createDistributor(
146
+ address distributor,
147
+ DistributorType distributorType,
148
+ bytes memory data
149
+ ) external returns (NftId distributorNftId)
150
+ {
151
+ (, NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
152
+
153
+ distributorNftId = getRegistryService().registerDistributor(
154
+ IRegistry.ObjectInfo(
155
+ zeroNftId(),
156
+ distributionNftId,
157
+ DISTRIBUTOR(),
158
+ true, // intercepting property for bundles is defined on pool
159
+ address(0),
160
+ distributor,
161
+ ""
162
+ ));
163
+
164
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
165
+ distributorType,
166
+ true, // active
167
+ data);
168
+
169
+ instance.createDistributor(distributorNftId, info);
170
+ }
171
+
172
+ function updateDistributorType(
173
+ NftId distributorNftId,
174
+ DistributorType distributorType,
175
+ bytes memory data
176
+ ) external virtual
177
+ {
178
+ (,, IInstance instance) = _getAndVerifyCallingDistribution();
179
+
180
+ IDistribution.DistributorInfo memory info = IDistribution.DistributorInfo(
181
+ distributorType,
182
+ true, // active
183
+ data);
184
+
185
+ instance.updateDistributor(distributorNftId, info, KEEP_STATE());
186
+ }
187
+
188
+
189
+ function createReferral(
190
+ NftId distributorNftId,
191
+ string memory code,
192
+ UFixed discountPercentage,
193
+ uint32 maxReferrals,
194
+ Timestamp expiryAt,
195
+ bytes memory data
196
+ )
197
+ external
198
+ virtual
199
+ returns (ReferralId referralId)
200
+ {
201
+ (,NftId distributionNftId, IInstance instance) = _getAndVerifyCallingDistribution();
202
+ require(bytes(code).length > 0, "ERROR:DSV-030:CODE_INVALID");
203
+ require(expiryAt > zeroTimestamp(), "ERROR:DSV-031:EXPIRY_AT_ZERO");
204
+
205
+ InstanceReader instanceReader = instance.getInstanceReader();
206
+ IDistribution.DistributorInfo memory distributorTypeInfo = instanceReader.getDistributorInfo(distributorNftId);
207
+ DistributorType distributorType = distributorTypeInfo.distributorType;
208
+ IDistribution.DistributorTypeInfo memory distributorTypeData = instanceReader.getDistributorTypeInfo(distributorType);
209
+
210
+ // FIXME: no require
211
+ require(distributorTypeData.maxReferralCount >= maxReferrals, "ERROR:DSV-032:MAX_REFERRALS_EXCEEDED");
212
+ require(distributorTypeData.minDiscountPercentage <= discountPercentage, "ERROR:DSV-033:DISCOUNT_TOO_LOW");
213
+ require(distributorTypeData.maxDiscountPercentage >= discountPercentage, "ERROR:DSV-034:DISCOUNT_TOO_HIGH");
214
+ require(expiryAt.toInt() - TimestampLib.blockTimestamp().toInt() <= distributorTypeData.maxReferralLifetime, "ERROR:DSV-035:EXPIRY_TOO_LONG");
215
+
216
+ referralId = ReferralLib.toReferralId(distributionNftId, code);
217
+ IDistribution.ReferralInfo memory info = IDistribution.ReferralInfo(
218
+ distributorNftId,
219
+ code,
220
+ discountPercentage,
221
+ maxReferrals,
222
+ 0, // used referrals
223
+ expiryAt,
224
+ data
225
+ );
226
+
227
+ instance.createReferral(referralId.toKey32(), info);
228
+ return referralId;
229
+ }
230
+
231
+ function processSale(
232
+ ReferralId referralId,
233
+ uint256 premiumAmount
234
+ )
235
+ external
236
+ virtual
237
+ {
238
+ // TODO: fetch referral
239
+ // TODO: update referral usage numbers
240
+ // TODO: update bookkeeping
241
+ // TODO: calculate commission for distributor
242
+ // TODO: calculate fee for distribution owner
243
+ // TODO: updates sum of commission per distributor -> DistributorInfo
244
+ // TODO: updates sum of fee per distribution owner
245
+ revert("NOT_IMPLEMENTED_YET");
246
+ }
247
+
248
+ function calculateFeeAmount(
249
+ NftId distributionNftId,
250
+ ReferralId referralId,
251
+ uint256 netPremiumAmount
252
+ )
253
+ external
254
+ virtual
255
+ view
256
+ returns (uint256 feeAmount)
257
+ {
258
+ (address distributionAddress, IInstance instance) = _getAndVerifyDistribution(distributionNftId);
259
+ InstanceReader reader = instance.getInstanceReader();
260
+
261
+ // calculate fee based on the distribution components fee
262
+ ISetup.DistributionSetupInfo memory setupInfo = reader.getDistributionSetupInfo(distributionNftId);
263
+ Fee memory fee = setupInfo.distributionFee;
264
+ (feeAmount,) = fee.calculateFee(netPremiumAmount);
265
+
266
+ if (referralIsValid(distributionNftId, referralId)) {
267
+ // (distributionFee(fixed + pct) - referralDiscount(pct)) ... discount <= distributionFee
268
+ IDistribution.ReferralInfo memory info = reader.getReferralInfo(referralId);
269
+ uint256 discountAmount = UFixedLib.toUFixed(netPremiumAmount).mul(info.discountPercentage).toInt();
270
+ if (discountAmount > feeAmount) {
271
+ feeAmount = 0;
272
+ } else {
273
+ feeAmount -= discountAmount;
274
+ }
275
+ }
276
+ // else - just use distributionFee from component
277
+ }
278
+
279
+ function referralIsValid(NftId distributionNftId, ReferralId referralId) public view returns (bool isValid) {
280
+ (address distributionAddress, IInstance instance) = _getAndVerifyDistribution(distributionNftId);
281
+ IDistribution.ReferralInfo memory info = instance.getInstanceReader().getReferralInfo(referralId);
282
+
283
+ if (info.distributorNftId.eqz()) {
284
+ return false;
285
+ }
286
+
287
+ isValid = info.expiryAt.eqz() || (info.expiryAt.gtz() && TimestampLib.blockTimestamp() <= info.expiryAt);
288
+ isValid = isValid && info.usedReferrals < info.maxReferrals;
289
+ }
290
+
291
+ function _getAndVerifyCallingDistribution()
292
+ internal
293
+ view
294
+ returns(
295
+ address distributionAddress,
296
+ NftId distributionNftId,
297
+ IInstance instance
298
+ )
299
+ {
300
+ ObjectType objectType;
301
+ (
302
+ distributionAddress,
303
+ distributionNftId,
304
+ objectType,
305
+ instance
306
+ ) = _getAndVerifyCaller();
307
+
308
+ require(objectType == DISTRIBUTION(), "ERROR:PRS-031:CALLER_NOT_DISTRUBUTION");
309
+ }
310
+
311
+ function _getAndVerifyDistribution(NftId distributionNftId)
312
+ internal
313
+ view
314
+ returns(
315
+ address distributionAddress,
316
+ IInstance instance
317
+ )
318
+ {
319
+ IRegistry.ObjectInfo memory info = getRegistry().getObjectInfo(distributionNftId);
320
+ IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(info.parentNftId);
321
+ require(parentInfo.objectType == INSTANCE(), "ERROR:SRV-031:PARENT_NOT_INSTANCE");
322
+ instance = IInstance(parentInfo.objectAddress);
323
+ }
324
+
325
+ function _getAndVerifyCaller()
326
+ internal
327
+ view
328
+ returns(
329
+ address objectAddress,
330
+ NftId objectNftId,
331
+ ObjectType objectType,
332
+ IInstance instance
333
+ )
334
+ {
335
+ objectAddress = msg.sender;
336
+ objectNftId = getRegistry().getNftId(objectAddress);
337
+ require(objectNftId.gtz(), "ERROR:SRV-030:CALLER_UNKNOWN");
338
+ IRegistry.ObjectInfo memory info = getRegistry().getObjectInfo(objectNftId);
339
+ objectType = info.objectType;
340
+
341
+ IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(info.parentNftId);
342
+ require(parentInfo.objectType == INSTANCE(), "ERROR:SRV-031:PARENT_NOT_INSTANCE");
343
+ instance = IInstance(parentInfo.objectAddress);
344
+ }
345
+
346
+ }
@@ -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
+ }