@etherisc/gif-next 0.0.2-d13bb9e-069 → 0.0.2-d18e1c5-511

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 (571) hide show
  1. package/README.md +91 -7
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +684 -254
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +456 -24
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +560 -201
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +215 -18
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +265 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +473 -17
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +204 -312
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +431 -36
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +123 -196
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +629 -225
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +195 -83
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +102 -170
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +429 -77
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +227 -244
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +430 -35
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +445 -348
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +427 -36
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  50. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +408 -0
  51. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1198 -0
  53. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  55. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1466 -0
  57. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  59. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2185 -0
  61. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  63. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  65. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +293 -275
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  72. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +175 -185
  73. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +343 -251
  75. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +957 -362
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  81. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  82. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +55 -197
  83. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  84. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  85. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  86. package/artifacts/contracts/{shared/KeyValueStore.sol/KeyValueStore.json → instance/IBaseStore.sol/IBaseStore.json} +34 -227
  87. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  88. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +578 -65
  89. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  90. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +395 -60
  91. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  92. package/artifacts/contracts/instance/Instance.sol/Instance.json +641 -119
  93. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  94. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1023 -362
  95. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  96. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +328 -92
  97. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  98. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1131 -553
  99. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +416 -131
  101. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -61
  103. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1290 -1858
  105. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  106. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  107. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  108. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  109. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  110. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  111. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  112. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  113. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  114. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  115. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  116. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  117. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  118. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  119. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  120. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  121. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  122. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  123. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  124. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  125. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  126. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +161 -193
  128. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  129. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +424 -37
  130. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  131. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  132. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +116 -119
  133. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  134. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  135. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +137 -145
  137. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +196 -81
  139. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  140. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +153 -53
  141. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  142. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +165 -209
  143. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  144. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +430 -35
  145. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  146. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +347 -340
  147. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +144 -100
  149. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  150. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +247 -145
  151. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  152. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +131 -173
  153. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  154. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +400 -218
  155. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  156. package/artifacts/contracts/pool/Pool.sol/Pool.json +144 -191
  157. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  158. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  159. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  160. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +626 -405
  161. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +187 -79
  163. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  164. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +356 -57
  165. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  166. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +142 -50
  167. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  168. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +284 -233
  169. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  170. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +430 -35
  171. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  172. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +323 -184
  173. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +153 -93
  175. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  176. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +296 -9
  177. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  178. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +209 -18
  179. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  180. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +194 -54
  181. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  182. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +140 -37
  183. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  184. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +254 -198
  185. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  186. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +286 -21
  187. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  188. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +320 -184
  189. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  190. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  191. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  192. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +169 -85
  193. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  194. package/artifacts/contracts/product/PricingService.sol/PricingService.json +197 -130
  195. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  196. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +134 -66
  197. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  198. package/artifacts/contracts/product/Product.sol/Product.json +274 -223
  199. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  200. package/artifacts/contracts/product/RiskService.sol/RiskService.json +367 -82
  201. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  202. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +142 -50
  203. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  204. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  205. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  206. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +125 -33
  207. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  208. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +169 -37
  209. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  210. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  211. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  212. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  213. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  214. package/artifacts/contracts/registry/Registry.sol/Registry.json +169 -69
  215. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  216. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +766 -464
  217. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  218. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  219. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  220. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +206 -70
  221. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  222. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +118 -46
  223. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  224. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  225. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  226. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  227. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  228. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +478 -258
  229. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  230. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +489 -20
  231. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  232. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  233. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  234. package/artifacts/contracts/shared/Component.sol/Component.json +113 -103
  235. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  236. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +495 -517
  237. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  238. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +154 -86
  239. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  240. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
  241. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  242. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  243. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  244. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  245. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  246. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  247. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +93 -78
  249. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +432 -290
  251. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  252. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +116 -119
  253. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  254. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  255. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  257. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  258. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  260. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  261. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  262. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  263. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  264. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  265. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  266. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +136 -144
  267. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  268. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  269. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  270. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  271. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  272. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +37 -2
  273. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  274. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  275. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  276. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +171 -38
  277. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  278. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  279. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  280. package/artifacts/contracts/shared/Service.sol/Service.json +84 -2
  281. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  282. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  283. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  284. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  285. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  286. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  287. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  288. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1492 -183
  289. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  290. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  291. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  292. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  293. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  294. package/artifacts/contracts/staking/Staking.sol/Staking.json +1651 -304
  295. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  296. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  297. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  298. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +163 -66
  299. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  300. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  301. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  302. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +281 -173
  303. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  304. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +121 -53
  305. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  306. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1645 -790
  307. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  308. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  309. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  310. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
  311. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  312. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  314. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  316. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  318. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  320. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  322. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  324. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  326. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  327. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  328. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  330. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  331. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  332. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +49 -50
  334. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  336. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  338. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  340. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  341. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  342. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  343. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  344. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  346. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +64 -2
  348. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  350. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  352. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  354. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/String.sol/StrLib.json +69 -2
  356. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  358. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  360. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  361. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  362. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  364. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  365. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  366. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  367. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +95 -25
  368. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  369. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  370. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  371. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  372. package/contracts/accounting/AccountingService.sol +274 -0
  373. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  374. package/contracts/accounting/IAccountingService.sol +47 -0
  375. package/contracts/authorization/AccessAdmin.sol +460 -272
  376. package/contracts/authorization/AccessAdminLib.sol +396 -0
  377. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  378. package/contracts/authorization/Authorization.sol +159 -211
  379. package/contracts/authorization/IAccess.sol +25 -6
  380. package/contracts/authorization/IAccessAdmin.sol +87 -78
  381. package/contracts/authorization/IAuthorization.sol +9 -37
  382. package/contracts/authorization/IServiceAuthorization.sol +57 -17
  383. package/contracts/authorization/ServiceAuthorization.sol +255 -25
  384. package/contracts/distribution/BasicDistribution.sol +21 -19
  385. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  386. package/contracts/distribution/Distribution.sol +45 -95
  387. package/contracts/distribution/DistributionService.sol +221 -109
  388. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  389. package/contracts/distribution/IDistributionComponent.sol +4 -11
  390. package/contracts/distribution/IDistributionService.sol +38 -24
  391. package/contracts/examples/fire/FirePool.sol +24 -13
  392. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  393. package/contracts/examples/fire/FireProduct.sol +79 -56
  394. package/contracts/examples/fire/FireProductAuthorization.sol +3 -3
  395. package/contracts/examples/flight/FlightLib.sol +279 -0
  396. package/contracts/examples/flight/FlightOracle.sol +167 -0
  397. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  398. package/contracts/examples/flight/FlightPool.sol +89 -0
  399. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  400. package/contracts/examples/flight/FlightProduct.sol +470 -0
  401. package/contracts/examples/flight/FlightProductAuthorization.sol +44 -0
  402. package/contracts/examples/flight/FlightUSD.sol +26 -0
  403. package/contracts/examples/flight/originalV1.sol +396 -0
  404. package/contracts/examples/unpermissioned/SimpleDistribution.sol +43 -12
  405. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  406. package/contracts/examples/unpermissioned/SimpleOracle.sol +8 -12
  407. package/contracts/examples/unpermissioned/SimplePool.sol +36 -10
  408. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  409. package/contracts/examples/unpermissioned/SimpleProduct.sol +134 -48
  410. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  411. package/contracts/instance/BaseStore.sol +93 -0
  412. package/contracts/instance/BundleSet.sol +42 -38
  413. package/contracts/instance/IBaseStore.sol +37 -0
  414. package/contracts/instance/IInstance.sol +111 -18
  415. package/contracts/instance/IInstanceService.sol +61 -34
  416. package/contracts/instance/Instance.sol +196 -74
  417. package/contracts/instance/InstanceAdmin.sol +270 -179
  418. package/contracts/instance/InstanceAuthorizationV3.sol +152 -81
  419. package/contracts/instance/InstanceReader.sol +453 -314
  420. package/contracts/instance/InstanceService.sol +313 -264
  421. package/contracts/instance/InstanceServiceManager.sol +1 -1
  422. package/contracts/instance/InstanceStore.sol +152 -116
  423. package/contracts/instance/ProductStore.sol +290 -0
  424. package/contracts/instance/RiskSet.sol +126 -0
  425. package/contracts/instance/TargetNames.sol +10 -0
  426. package/contracts/instance/base/BalanceStore.sol +4 -6
  427. package/contracts/instance/base/ObjectCounter.sol +1 -2
  428. package/contracts/instance/base/ObjectLifecycle.sol +6 -8
  429. package/contracts/instance/base/ObjectSet.sol +31 -33
  430. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  431. package/contracts/instance/module/IBundle.sol +6 -5
  432. package/contracts/instance/module/IComponents.sol +25 -13
  433. package/contracts/instance/module/IDistribution.sol +21 -8
  434. package/contracts/instance/module/IPolicy.sol +28 -7
  435. package/contracts/instance/module/IRisk.sol +5 -0
  436. package/contracts/oracle/BasicOracle.sol +3 -7
  437. package/contracts/oracle/BasicOracleAuthorization.sol +14 -8
  438. package/contracts/oracle/IOracle.sol +9 -4
  439. package/contracts/oracle/IOracleService.sol +14 -13
  440. package/contracts/oracle/Oracle.sol +9 -24
  441. package/contracts/oracle/OracleService.sol +113 -84
  442. package/contracts/oracle/OracleServiceManager.sol +1 -1
  443. package/contracts/pool/BasicPool.sol +35 -40
  444. package/contracts/pool/BasicPoolAuthorization.sol +34 -11
  445. package/contracts/pool/BundleService.sol +112 -187
  446. package/contracts/pool/BundleServiceManager.sol +1 -1
  447. package/contracts/pool/IBundleService.sol +28 -55
  448. package/contracts/pool/IPoolComponent.sol +1 -7
  449. package/contracts/pool/IPoolService.sol +65 -66
  450. package/contracts/pool/Pool.sol +114 -136
  451. package/contracts/pool/PoolLib.sol +341 -0
  452. package/contracts/pool/PoolService.sol +308 -257
  453. package/contracts/pool/PoolServiceManager.sol +1 -1
  454. package/contracts/product/ApplicationService.sol +102 -26
  455. package/contracts/product/ApplicationServiceManager.sol +1 -1
  456. package/contracts/product/BasicProduct.sol +10 -15
  457. package/contracts/product/BasicProductAuthorization.sol +33 -12
  458. package/contracts/product/ClaimService.sol +241 -196
  459. package/contracts/product/ClaimServiceManager.sol +1 -1
  460. package/contracts/product/IApplicationService.sol +28 -3
  461. package/contracts/product/IClaimService.sol +18 -5
  462. package/contracts/product/IPolicyService.sol +34 -12
  463. package/contracts/product/IPricingService.sol +10 -9
  464. package/contracts/product/IProductComponent.sol +10 -1
  465. package/contracts/product/IRiskService.sol +25 -10
  466. package/contracts/product/PolicyService.sol +264 -305
  467. package/contracts/product/PolicyServiceLib.sol +139 -0
  468. package/contracts/product/PolicyServiceManager.sol +1 -1
  469. package/contracts/product/PricingService.sol +58 -52
  470. package/contracts/product/PricingServiceManager.sol +3 -3
  471. package/contracts/product/Product.sol +136 -77
  472. package/contracts/product/RiskService.sol +130 -37
  473. package/contracts/product/RiskServiceManager.sol +1 -1
  474. package/contracts/registry/ChainNft.sol +10 -11
  475. package/contracts/registry/IRegistry.sol +29 -27
  476. package/contracts/registry/IRegistryService.sol +6 -4
  477. package/contracts/registry/IRelease.sol +29 -0
  478. package/contracts/registry/ITransferInterceptor.sol +1 -2
  479. package/contracts/registry/Registry.sol +44 -15
  480. package/contracts/registry/RegistryAdmin.sol +107 -380
  481. package/contracts/registry/RegistryAuthorization.sol +336 -0
  482. package/contracts/registry/RegistryService.sol +41 -59
  483. package/contracts/registry/RegistryServiceManager.sol +1 -1
  484. package/contracts/registry/ReleaseAdmin.sol +195 -0
  485. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  486. package/contracts/registry/ReleaseRegistry.sol +278 -244
  487. package/contracts/registry/ServiceAuthorizationV3.sol +203 -59
  488. package/contracts/registry/TokenRegistry.sol +61 -59
  489. package/contracts/shared/Component.sol +67 -125
  490. package/contracts/shared/ComponentService.sol +425 -375
  491. package/contracts/shared/ComponentServiceManager.sol +1 -1
  492. package/contracts/shared/ContractLib.sol +277 -3
  493. package/contracts/shared/IComponent.sol +6 -18
  494. package/contracts/shared/IComponentService.sol +43 -40
  495. package/contracts/shared/IInstanceLinkedComponent.sol +3 -22
  496. package/contracts/shared/ILifecycle.sol +3 -1
  497. package/contracts/shared/INftOwnable.sol +4 -0
  498. package/contracts/shared/IRegisterable.sol +22 -1
  499. package/contracts/shared/IService.sol +3 -5
  500. package/contracts/shared/InitializableERC165.sol +9 -1
  501. package/contracts/shared/InstanceLinkedComponent.sol +114 -53
  502. package/contracts/shared/Lifecycle.sol +15 -4
  503. package/contracts/shared/NftOwnable.sol +29 -7
  504. package/contracts/shared/PolicyHolder.sol +4 -3
  505. package/contracts/shared/Registerable.sol +50 -19
  506. package/contracts/shared/RegistryLinked.sol +7 -13
  507. package/contracts/shared/Service.sol +14 -34
  508. package/contracts/shared/TokenHandler.sol +275 -72
  509. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  510. package/contracts/staking/IStaking.sol +271 -72
  511. package/contracts/staking/IStakingService.sol +45 -78
  512. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  513. package/contracts/staking/Staking.sol +524 -225
  514. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  515. package/contracts/staking/StakingManager.sol +4 -3
  516. package/contracts/staking/StakingReader.sol +70 -82
  517. package/contracts/staking/StakingService.sol +62 -148
  518. package/contracts/staking/StakingServiceManager.sol +6 -4
  519. package/contracts/staking/StakingStore.sol +1093 -330
  520. package/contracts/staking/TargetHandler.sol +132 -0
  521. package/contracts/staking/TargetManagerLib.sol +69 -46
  522. package/contracts/type/Amount.sol +4 -0
  523. package/contracts/type/Blocknumber.sol +15 -15
  524. package/contracts/type/ChainId.sol +101 -0
  525. package/contracts/type/Fee.sol +8 -8
  526. package/contracts/type/Key32.sol +2 -2
  527. package/contracts/type/Key32Set.sol +62 -0
  528. package/contracts/type/NftId.sol +6 -0
  529. package/contracts/type/ObjectType.sol +71 -68
  530. package/contracts/type/Referral.sol +6 -0
  531. package/contracts/type/RequestIdSet.sol +62 -0
  532. package/contracts/type/RiskId.sol +26 -8
  533. package/contracts/type/RoleId.sol +61 -55
  534. package/contracts/type/Seconds.sol +23 -0
  535. package/contracts/type/Selector.sol +5 -0
  536. package/contracts/type/StateId.sol +14 -1
  537. package/contracts/type/String.sol +42 -0
  538. package/contracts/type/Timestamp.sol +14 -8
  539. package/contracts/type/UFixed.sol +35 -127
  540. package/contracts/type/Version.sol +54 -5
  541. package/contracts/upgradeability/IVersionable.sol +3 -0
  542. package/contracts/upgradeability/ProxyManager.sol +27 -12
  543. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  544. package/contracts/upgradeability/Versionable.sol +6 -3
  545. package/package.json +5 -4
  546. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  547. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  548. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  549. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  550. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  552. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  553. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -432
  554. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  555. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  556. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  557. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  558. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  559. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  560. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  561. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
  562. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  563. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  564. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  565. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  566. package/contracts/instance/module/IAccess.sol +0 -46
  567. package/contracts/shared/ComponentVerifyingService.sol +0 -116
  568. package/contracts/shared/IKeyValueStore.sol +0 -54
  569. package/contracts/shared/InitializableCustom.sol +0 -177
  570. package/contracts/shared/KeyValueStore.sol +0 -131
  571. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,31 +1,30 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccountingService} from "../accounting/IAccountingService.sol";
4
5
  import {IBundle} from "../instance/module/IBundle.sol";
5
6
  import {IBundleService} from "./IBundleService.sol";
6
- import {IComponents} from "../instance/module/IComponents.sol";
7
7
  import {IComponentService} from "../shared/IComponentService.sol";
8
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
9
  import {IRegistryService} from "../registry/IRegistryService.sol";
10
10
  import {IInstance} from "../instance/IInstance.sol";
11
11
  import {InstanceStore} from "../instance/InstanceStore.sol";
12
- import {IPolicy} from "../instance/module/IPolicy.sol";
13
12
 
14
13
  import {Amount, AmountLib} from "../type/Amount.sol";
15
14
  import {BundleSet} from "../instance/BundleSet.sol";
16
- import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
17
15
  import {Fee} from "../type/Fee.sol";
18
16
  import {InstanceReader} from "../instance/InstanceReader.sol";
19
17
  import {NftId, NftIdLib} from "../type/NftId.sol";
20
- import {ObjectType, COMPONENT, POOL, BUNDLE, REGISTRY} from "../type/ObjectType.sol";
21
- import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
18
+ import {ObjectType, ACCOUNTING, COMPONENT, POOL, BUNDLE, POLICY, REGISTRY} from "../type/ObjectType.sol";
19
+ import {PoolLib} from "./PoolLib.sol";
22
20
  import {Seconds} from "../type/Seconds.sol";
21
+ import {Service} from "../shared/Service.sol";
22
+ import {StateId, ACTIVE, PAUSED, CLOSED, KEEP_STATE} from "../type/StateId.sol";
23
23
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
24
24
 
25
- string constant BUNDLE_SERVICE_NAME = "BundleService";
26
25
 
27
26
  contract BundleService is
28
- ComponentVerifyingService,
27
+ Service,
29
28
  IBundleService
30
29
  {
31
30
 
@@ -33,6 +32,7 @@ contract BundleService is
33
32
 
34
33
  address private _registryAddress;
35
34
  IRegistryService private _registryService;
35
+ IAccountingService private _accountingService;
36
36
  IComponentService private _componentService;
37
37
 
38
38
  function _initialize(
@@ -44,13 +44,14 @@ contract BundleService is
44
44
  initializer()
45
45
  {
46
46
  (
47
- address registryAddress,
48
- address authority
47
+ address authority,
48
+ address registry
49
49
  ) = abi.decode(data, (address, address));
50
50
 
51
- _initializeService(registryAddress, authority, owner);
51
+ __Service_init(authority, registry, owner);
52
52
 
53
53
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
54
+ _accountingService = IAccountingService(_getServiceAddress(ACCOUNTING()));
54
55
  _componentService = IComponentService(_getServiceAddress(COMPONENT()));
55
56
 
56
57
  _registerInterface(type(IBundleService).interfaceId);
@@ -63,8 +64,11 @@ contract BundleService is
63
64
  )
64
65
  external
65
66
  virtual
67
+ restricted()
66
68
  {
67
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
69
+ _checkNftType(bundleNftId, BUNDLE());
70
+
71
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
68
72
  InstanceReader instanceReader = instance.getInstanceReader();
69
73
  IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
70
74
  if(bundleInfo.poolNftId.eqz()) {
@@ -77,23 +81,24 @@ contract BundleService is
77
81
 
78
82
  bundleInfo.fee = fee;
79
83
  instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
84
+
85
+ emit LogBundleServiceBundleFeeUpdated(bundleNftId, fee.fixedFee, fee.fractionalFee);
80
86
  }
81
87
 
82
88
 
83
89
  function create(
84
- IInstance instance,
85
- NftId poolNftId,
86
90
  address owner,
87
91
  Fee memory bundleFee,
88
- Amount stakingAmount,
89
92
  Seconds lifetime,
90
93
  bytes calldata filter
91
94
  )
92
95
  external
93
- override
94
- restricted
96
+ virtual
97
+ restricted()
95
98
  returns(NftId bundleNftId)
96
99
  {
100
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
101
+
97
102
  // register bundle with registry
98
103
  bundleNftId = _registryService.registerBundle(
99
104
  IRegistry.ObjectInfo(
@@ -115,25 +120,17 @@ contract BundleService is
115
120
  poolNftId: poolNftId,
116
121
  fee: bundleFee,
117
122
  filter: filter,
118
- activatedAt: TimestampLib.blockTimestamp(),
119
- expiredAt: TimestampLib.blockTimestamp().addSeconds(lifetime),
123
+ activatedAt: TimestampLib.current(),
124
+ expiredAt: TimestampLib.current().addSeconds(lifetime),
120
125
  closedAt: zeroTimestamp()
121
126
  })
122
127
  );
123
128
 
124
- if (stakingAmount.gtz()) {
125
- // bundle book keeping
126
- _componentService.increaseBundleBalance(
127
- instanceStore,
128
- bundleNftId,
129
- stakingAmount,
130
- AmountLib.zero()); // fee amount
131
- }
132
-
133
129
  // put bundle under bundle managemet
134
130
  BundleSet bundleManager = instance.getBundleSet();
135
131
  bundleManager.add(bundleNftId);
136
- // TODO add logging
132
+
133
+ emit LogBundleServiceBundleCreated(bundleNftId, poolNftId, lifetime);
137
134
  }
138
135
 
139
136
 
@@ -148,69 +145,69 @@ contract BundleService is
148
145
  virtual
149
146
  restricted()
150
147
  {
148
+ // checks
149
+ _checkNftType(policyNftId, POLICY());
150
+ _checkNftType(bundleNftId, BUNDLE());
151
+
151
152
  InstanceReader instanceReader = instance.getInstanceReader();
152
- StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
153
- IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
154
153
 
155
- // ensure bundle is active and not yet expired
156
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
157
- revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
154
+ {
155
+ StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
156
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
157
+
158
+ // ensure bundle is active and not yet expired
159
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.current()) {
160
+ revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
161
+ }
158
162
  }
159
163
 
160
- // ensure bundle capacity is sufficent to collateralize policy
161
164
  InstanceStore instanceStore = instance.getInstanceStore();
162
- (
163
- Amount balanceAmount,
164
- Amount lockedAmount,
165
- Amount feeAmount
166
- ) = instanceStore.getAmounts(bundleNftId);
167
165
 
168
- Amount capacity = balanceAmount - (lockedAmount + feeAmount);
169
- if(capacity < collateralAmount) {
170
- revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
166
+ {
167
+ // ensure bundle capacity is sufficent to collateralize policy
168
+ (
169
+ Amount balanceAmount,
170
+ Amount lockedAmount,
171
+ Amount feeAmount
172
+ ) = instanceStore.getAmounts(bundleNftId);
173
+
174
+ Amount capacity = balanceAmount - (lockedAmount + feeAmount);
175
+ if(capacity < collateralAmount) {
176
+ revert ErrorBundleServiceCapacityInsufficient(bundleNftId, capacity, collateralAmount);
177
+ }
171
178
  }
172
179
 
180
+ // effects
173
181
  // updated locked amount
174
182
  instanceStore.increaseLocked(bundleNftId, collateralAmount);
175
-
176
- // link policy to bundle in bundle manger
177
- _linkPolicy(instance, policyNftId);
178
- }
179
-
180
183
 
181
- function lock(NftId bundleNftId)
182
- external
183
- virtual
184
- {
185
- (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
186
-
187
- // udpate bundle state
188
- instance.getInstanceStore().updateBundleState(bundleNftId, PAUSED());
189
-
190
- // update set of active bundles
191
- BundleSet bundleManager = instance.getBundleSet();
192
- bundleManager.lock(bundleNftId);
193
-
194
- emit LogBundleServiceBundleLocked(bundleNftId);
184
+ emit LogBundleServiceCollateralLocked(bundleNftId, policyNftId, collateralAmount);
195
185
  }
196
186
 
197
187
 
198
- function unlock(NftId bundleNftId)
188
+ function setLocked(NftId bundleNftId, bool locked)
199
189
  external
200
190
  virtual
191
+ restricted()
201
192
  {
202
- (,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
193
+ // checks
194
+ _checkNftType(bundleNftId, BUNDLE());
203
195
 
204
- // udpate bundle state
205
- instance.getInstanceStore().updateBundleState(bundleNftId, ACTIVE());
196
+ (, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
206
197
 
198
+ // effects
207
199
  // update set of active bundles
208
200
  BundleSet bundleManager = instance.getBundleSet();
209
- bundleManager.unlock(bundleNftId);
210
201
 
211
- emit LogBundleServiceBundleActivated(bundleNftId);
202
+ if (locked) {
203
+ bundleManager.lock(bundleNftId);
204
+ emit LogBundleServiceBundleLocked(bundleNftId);
205
+ } else {
206
+ bundleManager.unlock(bundleNftId);
207
+ emit LogBundleServiceBundleUnlocked(bundleNftId);
208
+ }
212
209
  }
213
-
210
+
214
211
 
215
212
  function close(
216
213
  IInstance instance,
@@ -218,9 +215,12 @@ contract BundleService is
218
215
  )
219
216
  external
220
217
  virtual
221
- restricted
218
+ restricted()
222
219
  returns (Amount unstakedAmount, Amount feeAmount)
223
220
  {
221
+ // checks
222
+ _checkNftType(bundleNftId, BUNDLE());
223
+
224
224
  InstanceReader instanceReader = instance.getInstanceReader();
225
225
 
226
226
  // ensure no open policies attached to bundle
@@ -230,6 +230,7 @@ contract BundleService is
230
230
  revert ErrorBundleServiceBundleWithOpenPolicies(bundleNftId, openPolicies);
231
231
  }
232
232
 
233
+ // effects
233
234
  {
234
235
  // update bundle state
235
236
  InstanceStore instanceStore = instance.getInstanceStore();
@@ -240,55 +241,66 @@ contract BundleService is
240
241
  Amount balanceAmountWithFees = instanceReader.getBalanceAmount(bundleNftId);
241
242
  feeAmount = instanceReader.getFeeAmount(bundleNftId);
242
243
  unstakedAmount = balanceAmountWithFees - feeAmount;
243
- _componentService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
244
+ _accountingService.decreaseBundleBalance(instanceStore, bundleNftId, unstakedAmount, feeAmount);
244
245
  }
246
+
247
+ emit LogBundleServiceBundleClosed(bundleNftId);
245
248
  }
246
249
 
247
250
  /// @inheritdoc IBundleService
248
251
  function stake(
249
- IInstance instance,
252
+ InstanceReader instanceReader,
253
+ InstanceStore instanceStore,
250
254
  NftId bundleNftId,
251
255
  Amount amount
252
256
  )
253
257
  external
254
258
  virtual
255
- // TODO: restricted() (once #462 is done)
259
+ restricted()
256
260
  {
257
- IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
258
- StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
261
+ // checks
262
+ _checkNftType(bundleNftId, BUNDLE());
263
+
264
+ IBundle.BundleInfo memory bundleInfo = instanceReader.getBundleInfo(bundleNftId);
265
+ StateId bundleState = instanceReader.getBundleState(bundleNftId);
259
266
 
260
267
  if( (bundleState != ACTIVE() && bundleState != PAUSED()) // locked bundles can be staked
261
- || bundleInfo.expiredAt < TimestampLib.blockTimestamp()
268
+ || bundleInfo.expiredAt < TimestampLib.current()
262
269
  || bundleInfo.closedAt.gtz()) {
263
270
  revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
264
271
  }
265
272
 
266
- _componentService.increaseBundleBalance(
267
- instance.getInstanceStore(),
273
+ // effects
274
+ _accountingService.increaseBundleBalance(
275
+ instanceStore,
268
276
  bundleNftId,
269
277
  amount,
270
278
  AmountLib.zero());
279
+
280
+ emit LogBundleServiceBundleStaked(bundleNftId, amount);
271
281
  }
272
282
 
273
283
  /// @inheritdoc IBundleService
274
284
  function unstake(
275
- IInstance instance,
285
+ InstanceStore instanceStore,
276
286
  NftId bundleNftId,
277
287
  Amount amount
278
288
  )
279
289
  external
280
290
  virtual
281
- // TODO: restricted() (once #462 is done)
291
+ restricted()
282
292
  returns (Amount unstakedAmount)
283
293
  {
284
- InstanceStore instanceStore = instance.getInstanceStore();
294
+ // checks
295
+ _checkNftType(bundleNftId, BUNDLE());
296
+
285
297
  (
286
298
  Amount balanceAmount,
287
299
  Amount lockedAmount,
288
300
  Amount feeAmount
289
301
  ) = instanceStore.getAmounts(bundleNftId);
290
302
 
291
- Amount unstakedAmount = amount;
303
+ unstakedAmount = amount;
292
304
  Amount availableAmount = balanceAmount - (lockedAmount + feeAmount);
293
305
 
294
306
  // if amount is max, then unstake all available
@@ -301,23 +313,27 @@ contract BundleService is
301
313
  revert ErrorBundleServiceUnstakeAmountExceedsLimit(amount, availableAmount);
302
314
  }
303
315
 
304
- _componentService.decreaseBundleBalance(
316
+ // effects
317
+ _accountingService.decreaseBundleBalance(
305
318
  instanceStore,
306
319
  bundleNftId,
307
320
  unstakedAmount,
308
321
  AmountLib.zero());
309
-
310
- return unstakedAmount;
322
+
323
+ emit LogBundleServiceBundleUnstaked(bundleNftId, unstakedAmount);
311
324
  }
312
325
 
313
326
  /// @inheritdoc IBundleService
314
327
  function extend(NftId bundleNftId, Seconds lifetimeExtension)
315
328
  external
316
329
  virtual
317
- // TODO: restricted() (once #462 is done)
330
+ restricted()
318
331
  returns (Timestamp extendedExpiredAt)
319
332
  {
320
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
333
+ // checks
334
+ _checkNftType(bundleNftId, BUNDLE());
335
+
336
+ (NftId poolNftId, IInstance instance) = PoolLib.getAndVerifyActivePool(getRegistry(), msg.sender);
321
337
  IBundle.BundleInfo memory bundleInfo = instance.getInstanceReader().getBundleInfo(bundleNftId);
322
338
  StateId bundleState = instance.getInstanceReader().getBundleState(bundleNftId);
323
339
 
@@ -327,7 +343,7 @@ contract BundleService is
327
343
  }
328
344
 
329
345
  // ensure bundle is active and not yet expired
330
- if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.blockTimestamp()) {
346
+ if(bundleState != ACTIVE() || bundleInfo.expiredAt < TimestampLib.current()) {
331
347
  revert ErrorBundleServiceBundleNotOpen(bundleNftId, bundleState, bundleInfo.expiredAt);
332
348
  }
333
349
 
@@ -335,17 +351,18 @@ contract BundleService is
335
351
  revert ErrorBundleServiceExtensionLifetimeIsZero();
336
352
  }
337
353
 
354
+ // effects
338
355
  bundleInfo.expiredAt = bundleInfo.expiredAt.addSeconds(lifetimeExtension);
339
- instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
356
+ extendedExpiredAt = bundleInfo.expiredAt;
340
357
 
341
- emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, bundleInfo.expiredAt);
358
+ instance.getInstanceStore().updateBundle(bundleNftId, bundleInfo, KEEP_STATE());
342
359
 
343
- return bundleInfo.expiredAt;
360
+ emit LogBundleServiceBundleExtended(bundleNftId, lifetimeExtension, extendedExpiredAt);
344
361
  }
345
362
 
346
363
 
347
364
  function releaseCollateral(
348
- IInstance instance,
365
+ InstanceStore instanceStore,
349
366
  NftId policyNftId,
350
367
  NftId bundleNftId,
351
368
  Amount collateralAmount
@@ -354,106 +371,14 @@ contract BundleService is
354
371
  virtual
355
372
  restricted()
356
373
  {
357
- instance.getInstanceStore().decreaseLocked(bundleNftId, collateralAmount);
358
- }
359
-
360
- /// @dev unlinks policy from bundle
361
- function unlinkPolicy(
362
- IInstance instance,
363
- NftId policyNftId
364
- )
365
- external
366
- virtual
367
- restricted
368
- {
369
- // ensure policy is closeable
370
- if (!policyIsCloseable(instance, policyNftId)) {
371
- revert ErrorBundleServicePolicyNotCloseable(policyNftId);
372
- }
373
-
374
- instance.getBundleSet().unlinkPolicy(policyNftId);
375
- }
376
-
377
- /// @inheritdoc IBundleService
378
- function withdrawBundleFees(NftId bundleNftId, Amount amount)
379
- public
380
- virtual
381
- // TODO: restricted() (once #462 is done)
382
- returns (Amount withdrawnAmount)
383
- {
384
- (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
385
- InstanceReader reader = instance.getInstanceReader();
386
-
387
- IComponents.ComponentInfo memory poolInfo = reader.getComponentInfo(poolNftId);
388
- address poolWallet = poolInfo.wallet;
389
-
390
- IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
391
-
392
- // determine withdrawn amount
393
- withdrawnAmount = amount;
394
- if (withdrawnAmount.gte(AmountLib.max())) {
395
- withdrawnAmount = reader.getFeeAmount(bundleNftId);
396
- } else {
397
- if (withdrawnAmount.gt(reader.getFeeAmount(bundleNftId))) {
398
- revert ErrorBundleServiceFeesWithdrawAmountExceedsLimit(withdrawnAmount, reader.getFeeAmount(bundleNftId));
399
- }
400
- }
401
-
402
- // decrease fee counters by withdrawnAmount
403
- {
404
- InstanceStore store = instance.getInstanceStore();
405
- // decrease fee amount of the bundle
406
- _componentService.decreaseBundleBalance(store, bundleNftId, AmountLib.zero(), withdrawnAmount);
407
- // decrease pool balance
408
- _componentService.decreasePoolBalance(store, poolNftId, withdrawnAmount, AmountLib.zero());
409
- }
410
-
411
- // transfer amount to bundle owner
412
- {
413
- address owner = getRegistry().ownerOf(bundleNftId);
414
- emit LogBundleServiceFeesWithdrawn(bundleNftId, owner, address(poolInfo.token), withdrawnAmount);
415
- poolInfo.tokenHandler.distributeTokens(poolWallet, owner, withdrawnAmount);
416
- }
417
- }
374
+ _checkNftType(policyNftId, POLICY());
375
+ _checkNftType(bundleNftId, BUNDLE());
418
376
 
419
- /// @inheritdoc IBundleService
420
- function policyIsCloseable(IInstance instance, NftId policyNftId)
421
- public
422
- view
423
- returns (bool isCloseable)
424
- {
425
- IPolicy.PolicyInfo memory info = instance.getInstanceReader().getPolicyInfo(policyNftId);
426
-
427
- if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
428
- if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
429
- if (info.closedAt.gtz()) { return false; } // not closeable: already closed
430
- if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
431
-
432
- // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
433
- if (info.claimAmount == info.sumInsuredAmount) { return true; }
377
+ instanceStore.decreaseLocked(bundleNftId, collateralAmount);
434
378
 
435
- // not closeable: not yet expired
436
- if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
437
-
438
- // all conditionsl to close the policy are met
439
- return true;
379
+ emit LogBundleServiceCollateralReleased(bundleNftId, policyNftId, collateralAmount);
440
380
  }
441
381
 
442
- /// @dev links policy to bundle
443
- function _linkPolicy(IInstance instance, NftId policyNftId)
444
- internal
445
- {
446
- InstanceReader instanceReader = instance.getInstanceReader();
447
- IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
448
-
449
- // ensure policy has not yet been activated in a previous tx already
450
- if (policyInfo.activatedAt.gtz() && policyInfo.activatedAt < TimestampLib.blockTimestamp()) {
451
- revert BundleSet.ErrorBundleSetPolicyAlreadyActivated(policyNftId);
452
- }
453
-
454
- BundleSet bundleManager = instance.getBundleSet();
455
- bundleManager.linkPolicy(policyNftId);
456
- }
457
382
 
458
383
  function _getDomain() internal pure override returns(ObjectType) {
459
384
  return BUNDLE();
@@ -17,7 +17,7 @@ contract BundleServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  BundleService svc = new BundleService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -1,21 +1,21 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IService} from "../shared/IService.sol";
5
+ import {IInstance} from "../instance/IInstance.sol";
6
+
4
7
  import {Amount} from "../type/Amount.sol";
5
8
  import {NftId} from "../type/NftId.sol";
6
9
  import {Fee} from "../type/Fee.sol";
7
- import {IService} from "../shared/IService.sol";
8
- import {IBundle} from "../instance/module/IBundle.sol";
9
- import {IInstance} from "../instance/IInstance.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
10
12
  import {Seconds} from "../type/Seconds.sol";
11
13
  import {StateId} from "../type/StateId.sol";
12
14
  import {Timestamp} from "../type/Timestamp.sol";
15
+ import {UFixed} from "../type/UFixed.sol";
13
16
 
14
17
  interface IBundleService is IService {
15
18
 
16
- event LogBundleServiceBundleActivated(NftId bundleNftId);
17
- event LogBundleServiceBundleLocked(NftId bundleNftId);
18
-
19
19
  error ErrorBundleServiceInsufficientAllowance(address bundleOwner, address tokenHandlerAddress, Amount amount);
20
20
  error ErrorBundleServiceBundleNotOpen(NftId bundleNftId, StateId state, Timestamp expiredAt);
21
21
  error ErrorBundleServiceCapacityInsufficient(NftId bundleNftId, Amount capacityAmount, Amount collateralAmount);
@@ -25,24 +25,26 @@ interface IBundleService is IService {
25
25
  error ErrorBundleServiceBundlePoolMismatch(NftId bundleNftId, NftId expectedPool, NftId actualPool);
26
26
 
27
27
  error ErrorBundleServicePolicyNotCloseable(NftId policyNftId);
28
-
29
- error ErrorBundleServiceFeesWithdrawAmountExceedsLimit(Amount amount, Amount limit);
30
28
 
31
29
  error ErrorBundleServiceUnstakeAmountExceedsLimit(Amount amount, Amount limit);
32
30
 
33
31
  error ErrorBundleServiceExtensionLifetimeIsZero();
34
32
 
35
- event LogBundleServiceFeesWithdrawn(NftId bundleNftId, address recipient, address tokenAddress, Amount amount);
33
+ event LogBundleServiceBundleCreated(NftId bundleNftId, NftId poolNftId, Seconds lifetime);
34
+ event LogBundleServiceBundleClosed(NftId bundleNftId);
35
+ event LogBundleServiceBundleLocked(NftId bundleNftId);
36
+ event LogBundleServiceBundleUnlocked(NftId bundleNftId);
36
37
  event LogBundleServiceBundleExtended(NftId bundleNftId, Seconds lifetimeExtension, Timestamp extendedExpiredAt);
38
+ event LogBundleServiceBundleFeeUpdated(NftId bundleNftId, Amount fixedFee, UFixed fractionalFee);
39
+ event LogBundleServiceCollateralLocked(NftId bundleNftId, NftId policyNftId, Amount collateralAmount);
40
+ event LogBundleServiceCollateralReleased(NftId bundleNftId, NftId policyNftId, Amount collateralAmount);
41
+ event LogBundleServiceBundleStaked(NftId bundleNftId, Amount amount);
42
+ event LogBundleServiceBundleUnstaked(NftId bundleNftId, Amount amount);
37
43
 
38
- /// @dev create a new bundle for the specified attributes
39
- /// may only be called by pool service
44
+ /// @dev Create a new bundle for the specified attributes.
40
45
  function create(
41
- IInstance instance, // instance relevant for bundle
42
- NftId poolNftId, // the pool the bundle will be linked to
43
46
  address owner, // initial bundle owner
44
47
  Fee memory fee, // fees deducted from premium that go to bundle owner
45
- Amount stakingAmount, // staking amount - staking fees result in initial bundle capital
46
48
  Seconds lifetime, // initial duration for which new policies are covered
47
49
  bytes calldata filter // optional use case specific criteria that define if a policy may be covered by this bundle
48
50
  )
@@ -52,28 +54,24 @@ interface IBundleService is IService {
52
54
 
53
55
  /// @dev increase bundle stakes by the specified amount. bundle must not be expired or closed
54
56
  /// may only be called by the pool service
55
- function stake(IInstance instance, NftId bundleNftId, Amount amount) external;
57
+ function stake(
58
+ InstanceReader instanceReader,
59
+ InstanceStore instanceStore,
60
+ NftId bundleNftId,
61
+ Amount amount
62
+ ) external;
56
63
 
57
64
  /// @dev decrease bundle stakes by the specified amount
58
65
  /// may only be called by the pool service
59
- /// @param instance the instance relevant for the bundle
60
- /// @param bundleNftId the bundle nft id
61
- /// @param amount the amount to unstake (set to AmountLib.max() to unstake all available stakes)
62
- /// @return unstakedAmount the effective unstaked amount
63
- function unstake(IInstance instance, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
66
+ function unstake(InstanceStore instanceStore, NftId bundleNftId, Amount amount) external returns (Amount unstakedAmount);
64
67
 
65
68
  /// @dev extend the lifetime of the bundle by the specified time in seconds
66
69
  function extend(NftId bundleNftId, Seconds lifetimeExtension) external returns (Timestamp extendedExpiredAt);
67
70
 
68
- /// @dev locks the specified bundle, locked bundles are not available to collateralize new policies
69
- /// only active bundles may be locked
70
- /// may only be called by registered and unlocked pool components
71
- function lock(NftId bundleNftId) external;
72
-
73
- /// @dev activates the specified bundle
74
- /// only locked bundles may be unlocked
75
- /// may only be called by registered and unlocked pool components
76
- function unlock(NftId bundleNftId) external;
71
+ /// @dev locks/unlocks the specified bundle.
72
+ /// locked bundles are not available to collateralize new policies.
73
+ /// may only be called by registered and unlocked pool components.
74
+ function setLocked(NftId bundleNftId, bool locked) external;
77
75
 
78
76
  /// @dev closes the specified bundle
79
77
  /// only open bundles (active or locked) may be closed
@@ -110,34 +108,9 @@ interface IBundleService is IService {
110
108
  /// @dev releases the specified collateral in the bundle
111
109
  /// may only be called by pool service
112
110
  function releaseCollateral(
113
- IInstance instance,
111
+ InstanceStore instanceStore,
114
112
  NftId policyNftId,
115
113
  NftId bundleNftId,
116
114
  Amount collateralAmount
117
115
  ) external;
118
-
119
- /// @dev unlink policy from bundle
120
- /// policy may only be unlinked if policy is closeable
121
- /// may only be called by pool service
122
- function unlinkPolicy(
123
- IInstance instance,
124
- NftId policyNftId
125
- ) external;
126
-
127
- // FIXME: move to pool service
128
- /// @dev Withdraw bundle feeds for the given bundle
129
- /// @param bundleNftId the bundle Nft Id
130
- /// @param amount the amount to withdraw. If set to AMOUNT_MAX, the full commission available is withdrawn
131
- /// @return withdrawnAmount the effective withdrawn amount
132
- function withdrawBundleFees(NftId bundleNftId, Amount amount) external returns (Amount withdrawnAmount);
133
-
134
- /// @dev returns true iff policy may be closed
135
- /// a policy can be closed all conditions below are met
136
- /// - policy exists
137
- /// - has been activated
138
- /// - is not yet closed
139
- /// - has no open claims
140
- /// - claim amount matches sum insured amount or is expired
141
- function policyIsCloseable(IInstance instance, NftId policyNftId) external view returns (bool isCloseable);
142
-
143
116
  }