@etherisc/gif-next 0.0.2-bc11089-132 → 0.0.2-bca28f1-935

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 (286) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +897 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +896 -235
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +137 -86
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +798 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +662 -43
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +661 -5
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +603 -204
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +529 -122
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  40. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
  41. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +706 -56
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +152 -19
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +560 -272
  48. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +103 -176
  50. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
  52. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +460 -191
  54. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +187 -85
  56. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
  58. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  59. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/base/ComponentService.sol/ComponentService.json} +321 -9
  60. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  64. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +24 -13
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1117 -0
  76. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
  77. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +495 -100
  78. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  79. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +172 -26
  80. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +554 -62
  82. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +197 -23
  84. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → service/IApplicationService.sol/IApplicationService.json} +221 -104
  86. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +181 -52
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +229 -19
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  91. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +152 -32
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +32 -19
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +32 -19
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +481 -87
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +203 -25
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +301 -62
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +169 -23
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +301 -62
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +169 -15
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +185 -77
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +238 -235
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +243 -129
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +181 -97
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +150 -29
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  130. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +37 -0
  132. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  134. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +18 -5
  136. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +69 -0
  138. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IService.sol/IService.json +32 -19
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +156 -11
  144. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +269 -0
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +156 -6
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -11
  150. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +105 -0
  152. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  153. package/artifacts/contracts/shared/Service.sol/Service.json +178 -19
  154. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  155. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  157. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -2
  159. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +152 -11
  162. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  164. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestService.sol/TestService.json +196 -37
  166. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -8
  170. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  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/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  176. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  179. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  181. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  182. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  183. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  186. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  188. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  190. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  192. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  198. package/contracts/components/Component.sol +236 -0
  199. package/contracts/components/Distribution.sol +209 -64
  200. package/contracts/components/IComponent.sol +50 -0
  201. package/contracts/components/IDistributionComponent.sol +59 -3
  202. package/contracts/components/IPoolComponent.sol +50 -29
  203. package/contracts/components/IProductComponent.sol +7 -3
  204. package/contracts/components/Pool.sol +135 -152
  205. package/contracts/components/Product.sol +103 -117
  206. package/contracts/instance/BundleManager.sol +7 -11
  207. package/contracts/instance/IInstance.sol +35 -11
  208. package/contracts/instance/IInstanceService.sol +23 -2
  209. package/contracts/instance/Instance.sol +67 -62
  210. package/contracts/instance/InstanceAccessManager.sol +31 -38
  211. package/contracts/instance/InstanceReader.sol +3 -25
  212. package/contracts/instance/InstanceService.sol +198 -56
  213. package/contracts/instance/InstanceServiceManager.sol +5 -8
  214. package/contracts/instance/ObjectManager.sol +7 -24
  215. package/contracts/instance/base/ComponentService.sol +134 -0
  216. package/contracts/instance/module/IAccess.sol +4 -5
  217. package/contracts/instance/module/ISetup.sol +5 -4
  218. package/contracts/instance/service/ApplicationService.sol +268 -0
  219. package/contracts/instance/service/BundleService.sol +52 -14
  220. package/contracts/instance/service/BundleServiceManager.sol +5 -8
  221. package/contracts/instance/service/DistributionService.sol +208 -49
  222. package/contracts/instance/service/DistributionServiceManager.sol +6 -9
  223. package/contracts/instance/service/IApplicationService.sol +82 -0
  224. package/contracts/instance/service/IBundleService.sol +12 -3
  225. package/contracts/instance/service/IDistributionService.sol +53 -0
  226. package/contracts/instance/service/IPolicyService.sol +17 -16
  227. package/contracts/instance/service/PolicyService.sol +148 -132
  228. package/contracts/instance/service/PoolService.sol +27 -42
  229. package/contracts/instance/service/PoolServiceManager.sol +5 -8
  230. package/contracts/instance/service/ProductService.sol +100 -40
  231. package/contracts/registry/ChainNft.sol +1 -1
  232. package/contracts/registry/IRegistry.sol +37 -19
  233. package/contracts/registry/IRegistryService.sol +30 -13
  234. package/contracts/registry/Registry.sol +233 -217
  235. package/contracts/registry/RegistryAccessManager.sol +216 -0
  236. package/contracts/registry/RegistryService.sol +81 -162
  237. package/contracts/registry/RegistryServiceManager.sol +18 -36
  238. package/contracts/registry/ReleaseManager.sol +331 -0
  239. package/contracts/registry/TokenRegistry.sol +11 -9
  240. package/contracts/shared/ERC165.sol +12 -11
  241. package/contracts/shared/INftOwnable.sol +12 -6
  242. package/contracts/shared/IPolicyHolder.sol +26 -0
  243. package/contracts/shared/IRegisterable.sol +4 -6
  244. package/contracts/shared/IRegistryLinked.sol +15 -0
  245. package/contracts/shared/IService.sol +2 -1
  246. package/contracts/shared/IVersionable.sol +2 -2
  247. package/contracts/shared/NftOwnable.sol +113 -57
  248. package/contracts/shared/PolicyHolder.sol +81 -0
  249. package/contracts/shared/ProxyManager.sol +6 -5
  250. package/contracts/shared/Registerable.sol +15 -24
  251. package/contracts/shared/RegistryLinked.sol +64 -0
  252. package/contracts/shared/Service.sol +18 -13
  253. package/contracts/shared/Versionable.sol +3 -2
  254. package/contracts/test/TestRegisterable.sol +1 -1
  255. package/contracts/test/TestService.sol +4 -3
  256. package/contracts/types/DistributorType.sol +2 -2
  257. package/contracts/types/ObjectType.sol +6 -2
  258. package/contracts/types/RoleId.sol +4 -5
  259. package/package.json +3 -3
  260. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  261. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  262. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -384
  263. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  264. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  265. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  266. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  267. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  268. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  269. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  270. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  271. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  272. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  273. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  274. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  275. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  276. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  277. package/contracts/components/BaseComponent.sol +0 -148
  278. package/contracts/components/IBaseComponent.sol +0 -32
  279. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  280. package/contracts/instance/IInstanceBase.sol +0 -26
  281. package/contracts/instance/InstanceBase.sol +0 -41
  282. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  283. package/contracts/instance/base/IInstanceBase.sol +0 -23
  284. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  285. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  286. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -1,7 +1,6 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
4
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
5
 
7
6
  import {RoleId} from "../../types/RoleId.sol";
@@ -34,15 +33,15 @@ interface IAccess {
34
33
  error ErrorIAccessRoleNameNotUnique(RoleId roleId, ShortString name);
35
34
  error ErrorIAccessRoleInvalidUpdate(RoleId roleId, bool isCustom);
36
35
  error ErrorIAccessRoleIsCustomIsImmutable(RoleId roleId, bool isCustom, bool isCustomExisting);
37
- error ErrorIAccessSetLockedForNonexstentRole(RoleId roleId);
38
36
  error ErrorIAccessGrantNonexstentRole(RoleId roleId);
39
37
  error ErrorIAccessRevokeNonexstentRole(RoleId roleId);
40
38
  error ErrorIAccessRenounceNonexstentRole(RoleId roleId);
41
39
 
42
40
  error ErrorIAccessTargetAddressZero();
43
- error ErrorIAccessTargetAlreadyExists(address target, ShortString name);
41
+ error ErrorIAccessTargetDoesNotExist(ShortString name);
42
+ error ErrorIAccessTargetAddressDoesNotExist(address target);
43
+ error ErrorIAccessTargetExists(address target, ShortString name);
44
44
  error ErrorIAccessTargetNameEmpty(address target);
45
45
  error ErrorIAccessTargetNameExists(address target, address existingTarget, ShortString name);
46
- error ErrorIAccessSetLockedForNonexstentTarget(address target);
47
-
46
+ error ErrorIAccessTargetLocked(address target);
48
47
  }
@@ -28,19 +28,20 @@ interface ISetup {
28
28
  NftId productNftId;
29
29
  TokenHandler tokenHandler;
30
30
  Fee distributionFee; // default distribution fee (no referral id)
31
- bool isIntercepting; // intercepts nft transfers (for distributors)
32
31
  address wallet;
33
32
  }
34
33
 
35
34
  struct PoolSetupInfo {
36
35
  NftId productNftId;
37
36
  TokenHandler tokenHandler;
38
- UFixed collateralizationLevel;
37
+ bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
38
+ bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
39
+ bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
40
+ UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
41
+ UFixed retentionLevel; // amount of collateral held in pool (default 100%)
39
42
  Fee poolFee; // pool fee on net premium
40
43
  Fee stakingFee; // pool fee on staked capital from investor
41
44
  Fee performanceFee; // pool fee on profits from capital investors
42
- bool isIntercepting; // intercepts nft transfers (for bundles)
43
- bool isConfirmingApplication; // confirms applications before they are underwritten
44
45
  address wallet;
45
46
  }
46
47
  }
@@ -0,0 +1,268 @@
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, 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 {Version, VersionLib} from "../../types/Version.sol";
36
+
37
+ import {ComponentService} from "../base/ComponentService.sol";
38
+ import {InstanceReader} from "../InstanceReader.sol";
39
+ import {IApplicationService} from "./IApplicationService.sol";
40
+ import {IBundleService} from "./IBundleService.sol";
41
+ import {IPoolService} from "./IPoolService.sol";
42
+ import {IService} from "../../shared/IService.sol";
43
+ import {Service} from "../../shared/Service.sol";
44
+
45
+
46
+ contract ApplicationService is
47
+ ComponentService,
48
+ IApplicationService
49
+ {
50
+
51
+
52
+ function initialize(
53
+ address owner,
54
+ bytes memory data
55
+ )
56
+ public
57
+ virtual
58
+ initializer()
59
+ {
60
+ // TODO check this, might no longer be the way, refactor if necessary
61
+ address registryAddress;
62
+ address initialOwner;
63
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
64
+
65
+ initializeService(registryAddress, owner);
66
+ registerInterface(type(IApplicationService).interfaceId);
67
+ }
68
+
69
+
70
+ function create(
71
+ address applicationOwner,
72
+ RiskId riskId,
73
+ NftId bundleNftId,
74
+ ReferralId referralId,
75
+ uint256 sumInsuredAmount,
76
+ uint256 lifetime,
77
+ bytes memory applicationData
78
+ )
79
+ external
80
+ virtual override
81
+ returns (NftId applicationNftId)
82
+ {
83
+ (IRegistry.ObjectInfo memory productInfo, IInstance instance) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
84
+ // TODO: add validations (see create bundle in pool service)
85
+
86
+ applicationNftId = getRegistryService().registerPolicy(
87
+ IRegistry.ObjectInfo(
88
+ zeroNftId(),
89
+ productInfo.nftId,
90
+ POLICY(),
91
+ false, // intercepting property for policies is defined on product
92
+ address(0),
93
+ applicationOwner,
94
+ ""
95
+ )
96
+ );
97
+
98
+ (uint256 premiumAmount,,,,) = calculatePremium(
99
+ riskId,
100
+ sumInsuredAmount,
101
+ lifetime,
102
+ applicationData,
103
+ bundleNftId,
104
+ referralId
105
+ );
106
+
107
+ IPolicy.PolicyInfo memory policyInfo = IPolicy.PolicyInfo(
108
+ productInfo.nftId,
109
+ bundleNftId,
110
+ referralId,
111
+ riskId,
112
+ sumInsuredAmount,
113
+ premiumAmount,
114
+ 0,
115
+ lifetime,
116
+ applicationData,
117
+ "",
118
+ 0,
119
+ 0,
120
+ 0,
121
+ zeroTimestamp(),
122
+ zeroTimestamp(),
123
+ zeroTimestamp()
124
+ );
125
+
126
+ instance.createPolicy(applicationNftId, policyInfo);
127
+ instance.updatePolicyState(applicationNftId, APPLIED());
128
+
129
+ // TODO: add logging
130
+ }
131
+
132
+
133
+ function renew(
134
+ NftId policyNftId, // policy to be renewd (renewal inherits policy attributes)
135
+ NftId bundleNftId // will likely need a newer bundle for underwriting
136
+ )
137
+ external
138
+ virtual override
139
+ returns (NftId applicationNftId)
140
+ {
141
+
142
+ }
143
+
144
+
145
+ function ajust(
146
+ NftId applicationNftId,
147
+ RiskId riskId,
148
+ NftId bundleNftId,
149
+ ReferralId referralId,
150
+ uint256 sumInsuredAmount,
151
+ uint256 lifetime,
152
+ bytes memory applicationData
153
+ )
154
+ external
155
+ virtual override
156
+ {
157
+
158
+ }
159
+
160
+ function revoke(NftId policyNftId)
161
+ external
162
+ virtual override
163
+ {
164
+
165
+ }
166
+
167
+
168
+ function calculatePremium(
169
+ RiskId riskId,
170
+ uint256 sumInsuredAmount,
171
+ uint256 lifetime,
172
+ bytes memory applicationData,
173
+ NftId bundleNftId,
174
+ ReferralId referralId
175
+ )
176
+ public
177
+ view
178
+ virtual override
179
+ returns (
180
+ uint256 premiumAmount,
181
+ uint256 distributionFeeAmount,
182
+ uint256 productFeeAmount,
183
+ uint256 poolFeeAmount,
184
+ uint256 bundleFeeAmount
185
+ )
186
+ {
187
+ Product product = _getAndVerifyInstanceAndProduct();
188
+ uint256 netPremiumAmount = product.calculateNetPremium(
189
+ sumInsuredAmount,
190
+ riskId,
191
+ lifetime,
192
+ applicationData
193
+ );
194
+
195
+ (
196
+ productFeeAmount,
197
+ poolFeeAmount,
198
+ bundleFeeAmount,
199
+ distributionFeeAmount
200
+ ) = _calculateFeeAmounts(
201
+ netPremiumAmount,
202
+ product,
203
+ bundleNftId,
204
+ referralId
205
+ );
206
+
207
+ premiumAmount = netPremiumAmount + productFeeAmount;
208
+ premiumAmount += poolFeeAmount + bundleFeeAmount;
209
+ premiumAmount += distributionFeeAmount;
210
+ }
211
+
212
+
213
+ function getDomain() public pure override(IService, Service) returns(ObjectType) {
214
+ return APPLICATION();
215
+ }
216
+
217
+
218
+ // internal functions
219
+
220
+ function _calculateFeeAmounts(
221
+ uint256 netPremiumAmount,
222
+ Product product,
223
+ NftId bundleNftId,
224
+ ReferralId referralId
225
+ )
226
+ internal
227
+ view
228
+ returns (
229
+ uint256 productFeeAmount,
230
+ uint256 poolFeeAmount,
231
+ uint256 bundleFeeAmount,
232
+ uint256 distributionFeeAmount
233
+ )
234
+ {
235
+ InstanceReader instanceReader;
236
+ {
237
+ IInstance instance = product.getInstance();
238
+ instanceReader = instance.getInstanceReader();
239
+ }
240
+
241
+ NftId poolNftId = product.getPoolNftId();
242
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
243
+ require(bundleInfo.poolNftId == poolNftId,"ERROR:PRS-035:BUNDLE_POOL_MISMATCH");
244
+
245
+ {
246
+ ISetup.ProductSetupInfo memory productSetupInfo = instanceReader.getProductSetupInfo(product.getProductNftId());
247
+ (productFeeAmount,) = FeeLib.calculateFee(productSetupInfo.productFee, netPremiumAmount);
248
+ }
249
+ {
250
+ ISetup.PoolSetupInfo memory poolSetupInfo = instanceReader.getPoolSetupInfo(poolNftId);
251
+ (poolFeeAmount,) = FeeLib.calculateFee(poolSetupInfo.poolFee, netPremiumAmount);
252
+ }
253
+ {
254
+ NftId distributionNftId = product.getDistributionNftId();
255
+ ISetup.DistributionSetupInfo memory distributionSetupInfo = instanceReader.getDistributionSetupInfo(distributionNftId);
256
+ (distributionFeeAmount,) = FeeLib.calculateFee(distributionSetupInfo.distributionFee, netPremiumAmount);
257
+ }
258
+
259
+ (bundleFeeAmount,) = FeeLib.calculateFee(bundleInfo.fee, netPremiumAmount);
260
+ }
261
+
262
+
263
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
264
+ IRegistry.ObjectInfo memory productInfo;
265
+ (productInfo,) = _getAndVerifyComponentInfoAndInstance(PRODUCT());
266
+ product = Product(productInfo.objectAddress);
267
+ }
268
+ }
@@ -14,7 +14,7 @@ import {Versionable} from "../../shared/Versionable.sol";
14
14
  import {INftOwnable} from "../../shared/INftOwnable.sol";
15
15
 
16
16
  import {NftId, NftIdLib, zeroNftId} from "../../types/NftId.sol";
17
- import {POOL, BUNDLE} from "../../types/ObjectType.sol";
17
+ import {ObjectType, POOL, BUNDLE} from "../../types/ObjectType.sol";
18
18
  import {POOL_OWNER_ROLE, RoleId} from "../../types/RoleId.sol";
19
19
  import {Fee, FeeLib} from "../../types/Fee.sol";
20
20
  import {Version, VersionLib} from "../../types/Version.sol";
@@ -24,17 +24,16 @@ import {TimestampLib, zeroTimestamp} from "../../types/Timestamp.sol";
24
24
  import {IService} from "../../shared/IService.sol";
25
25
  import {Service} from "../../shared/Service.sol";
26
26
  import {BundleManager} from "../BundleManager.sol";
27
- import {ComponentServiceBase} from "../base/ComponentServiceBase.sol";
27
+ import {ComponentService} from "../base/ComponentService.sol";
28
28
  import {IBundleService} from "./IBundleService.sol";
29
29
  import {IRegistryService} from "../../registry/IRegistryService.sol";
30
30
  import {InstanceService} from "../InstanceService.sol";
31
31
  import {InstanceReader} from "../InstanceReader.sol";
32
- import {IBaseComponent} from "../../components/IBaseComponent.sol";
33
32
 
34
33
  string constant BUNDLE_SERVICE_NAME = "BundleService";
35
34
 
36
35
  contract BundleService is
37
- ComponentServiceBase,
36
+ ComponentService,
38
37
  IBundleService
39
38
  {
40
39
  using NftIdLib for NftId;
@@ -56,13 +55,12 @@ contract BundleService is
56
55
  (registryAddress, initialOwner) = abi.decode(data, (address, address));
57
56
  // TODO while PoolService is not deployed in PoolServiceManager constructor
58
57
  // owner is PoolServiceManager deployer
59
- _initializeService(registryAddress, owner);
60
-
61
- _registerInterface(type(IBundleService).interfaceId);
58
+ initializeService(registryAddress, owner);
59
+ registerInterface(type(IBundleService).interfaceId);
62
60
  }
63
61
 
64
- function getName() public pure override(Service, IService) returns(string memory name) {
65
- return NAME;
62
+ function getDomain() public pure override(Service, IService) returns(ObjectType) {
63
+ return BUNDLE();
66
64
  }
67
65
 
68
66
  function createBundle(
@@ -165,17 +163,23 @@ contract BundleService is
165
163
  bundleManager.unlock(bundleNftId);
166
164
  }
167
165
 
168
- function underwritePolicy(IInstance instance,
166
+ function lockCollateral(
167
+ IInstance instance,
169
168
  NftId policyNftId,
170
169
  NftId bundleNftId,
171
170
  uint256 collateralAmount,
172
171
  uint256 netPremiumAmount
173
172
  )
174
173
  external
175
- onlyService
174
+ onlyService
175
+ returns (
176
+ IBundle.BundleInfo memory bundleInfo
177
+ )
176
178
  {
177
179
  InstanceReader instanceReader = instance.getInstanceReader();
178
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
180
+ bundleInfo = instanceReader.getBundleInfo(bundleNftId);
181
+
182
+ // TODO add validation
179
183
 
180
184
  // lock collateral
181
185
  bundleInfo.lockedAmount += collateralAmount;
@@ -186,6 +190,40 @@ contract BundleService is
186
190
  linkPolicy(instance, policyNftId);
187
191
  }
188
192
 
193
+ function increaseBalance(IInstance instance,
194
+ NftId bundleNftId,
195
+ uint256 amount
196
+ )
197
+ external
198
+ onlyService
199
+ {
200
+ InstanceReader instanceReader = instance.getInstanceReader();
201
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
202
+
203
+ bundleInfo.balanceAmount += amount;
204
+
205
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
206
+ }
207
+
208
+ function closePolicy(IInstance instance,
209
+ NftId policyNftId,
210
+ NftId bundleNftId,
211
+ uint256 collateralAmount
212
+ )
213
+ external
214
+ onlyService
215
+ {
216
+ InstanceReader instanceReader = instance.getInstanceReader();
217
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
218
+
219
+ // lock collateral
220
+ bundleInfo.lockedAmount -= collateralAmount;
221
+
222
+ instance.updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
223
+
224
+ unlinkPolicy(instance, policyNftId);
225
+ }
226
+
189
227
  /// @dev links policy to bundle
190
228
  function linkPolicy(IInstance instance, NftId policyNftId)
191
229
  internal
@@ -219,8 +257,8 @@ contract BundleService is
219
257
  }
220
258
 
221
259
  // ensure policy is closeable
222
- if (policyInfo.expiredAt < TimestampLib.blockTimestamp()
223
- || policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
260
+ if ( TimestampLib.blockTimestamp() < policyInfo.expiredAt
261
+ && policyInfo.payoutAmount < policyInfo.sumInsuredAmount)
224
262
  {
225
263
  revert BundleManager.ErrorBundleManagerPolicyNotCloseable(policyNftId);
226
264
  }
@@ -6,7 +6,7 @@ import {ProxyManager} from "../../shared/ProxyManager.sol";
6
6
  import {BundleService} from "./BundleService.sol";
7
7
  import {Registry} from "../../registry/Registry.sol";
8
8
  import {RegistryService} from "../../registry/RegistryService.sol";
9
- import {VersionLib} from "../../types/Version.sol";
9
+ import {ObjectType, REGISTRY} from "../../types/ObjectType.sol";
10
10
 
11
11
  contract BundleServiceManager is ProxyManager {
12
12
 
@@ -26,10 +26,10 @@ contract BundleServiceManager is ProxyManager {
26
26
 
27
27
  _bundleService = BundleService(address(versionable));
28
28
 
29
- Registry registry = Registry(registryAddress);
30
- address registryServiceAddress = registry.getServiceAddress("RegistryService", VersionLib.toVersion(3, 0, 0).toMajorPart());
31
- RegistryService registryService = RegistryService(registryServiceAddress);
32
- // TODO this must have a role or own nft to register service
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
33
  //registryService.registerService(_poolService);
34
34
 
35
35
  // TODO no nft to link yet
@@ -37,9 +37,6 @@ contract BundleServiceManager is ProxyManager {
37
37
  //_linkToNftOwnable(
38
38
  // address(registryAddress),
39
39
  // address(_poolService));
40
-
41
- // implies that after this constructor call only upgrade functionality is available
42
- _isDeployed = true;
43
40
  }
44
41
 
45
42
  //--- view functions ----------------------------------------------------//