@etherisc/gif-next 0.0.2-f8e07c7-917 → 0.0.2-f946ccd-184

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 (412) hide show
  1. package/README.md +19 -2
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -52
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +0 -19
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -248
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +24 -222
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +228 -217
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +93 -101
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +24 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +120 -31
  31. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  32. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1463 -0
  33. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  34. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
  35. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  36. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1712 -0
  37. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  38. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
  39. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  41. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  42. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1411 -0
  43. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1517 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +1978 -0
  49. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  50. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  51. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  52. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  54. package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
  55. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  56. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +97 -100
  57. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  58. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
  59. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  60. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +238 -123
  61. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  62. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
  63. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  64. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
  65. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  66. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +215 -219
  67. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  68. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  69. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  70. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  71. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  72. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  74. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  76. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  77. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  79. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  80. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  81. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  82. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  83. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  84. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +32 -238
  86. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  88. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  90. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +0 -37
  91. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  92. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +0 -222
  94. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  95. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
  96. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  97. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
  98. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  99. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +36 -284
  100. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  101. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  102. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  103. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +396 -163
  104. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +137 -89
  106. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  107. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  108. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  109. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +26 -95
  110. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  111. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +220 -100
  112. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  113. package/artifacts/contracts/pool/Pool.sol/Pool.json +26 -280
  114. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  115. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +269 -248
  116. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  117. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +66 -82
  118. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  119. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
  120. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  121. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
  122. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  123. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +3 -225
  124. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  125. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +2 -2
  126. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  127. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +206 -175
  128. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  129. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +92 -100
  130. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  131. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  132. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  133. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +114 -0
  134. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  135. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +266 -119
  136. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  137. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
  138. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  139. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +0 -37
  140. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  141. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  142. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  143. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +372 -316
  144. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
  146. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  147. package/artifacts/contracts/product/PricingService.sol/PricingService.json +118 -265
  148. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
  150. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  151. package/artifacts/contracts/product/Product.sol/Product.json +3 -225
  152. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  153. package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
  154. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  155. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
  156. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  158. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +221 -21
  160. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  161. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  162. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  163. package/artifacts/contracts/registry/Registry.sol/Registry.json +419 -82
  164. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +243 -131
  166. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  167. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -130
  168. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
  170. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  171. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  172. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +24 -14
  174. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  175. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  176. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  177. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  178. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Component.sol/Component.json +0 -211
  180. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  181. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +132 -199
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -114
  184. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  185. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
  186. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  187. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +56 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +0 -37
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  195. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  196. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +14 -46
  199. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  203. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  205. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +0 -222
  207. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  208. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  209. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  210. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  211. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  212. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -57
  213. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  214. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +18 -140
  215. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  216. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
  217. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  218. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  219. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  220. package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
  221. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  222. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  223. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  224. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -27
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +73 -93
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +85 -262
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +89 -84
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  247. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  249. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  251. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  253. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  255. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  257. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  259. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  261. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  263. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  265. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  267. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  269. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  271. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  273. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  275. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  277. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  278. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  280. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  281. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  282. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  284. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  286. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  288. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  290. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  291. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  292. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +39 -70
  293. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  294. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  295. package/contracts/authorization/AccessAdmin.sol +25 -24
  296. package/contracts/authorization/Authorization.sol +0 -1
  297. package/contracts/authorization/IAccessAdmin.sol +0 -1
  298. package/contracts/distribution/BasicDistribution.sol +4 -15
  299. package/contracts/distribution/BasicDistributionAuthorization.sol +2 -1
  300. package/contracts/distribution/Distribution.sol +22 -11
  301. package/contracts/distribution/DistributionService.sol +73 -25
  302. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  303. package/contracts/distribution/IDistributionComponent.sol +6 -1
  304. package/contracts/distribution/IDistributionService.sol +18 -2
  305. package/contracts/examples/fire/FirePool.sol +75 -0
  306. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  307. package/contracts/examples/fire/FireProduct.sol +324 -0
  308. package/contracts/examples/fire/FireProductAuthorization.sol +35 -0
  309. package/contracts/examples/fire/FireUSD.sol +26 -0
  310. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  311. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  312. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  313. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  314. package/contracts/instance/IInstance.sol +7 -30
  315. package/contracts/instance/Instance.sol +10 -35
  316. package/contracts/instance/InstanceAdmin.sol +23 -4
  317. package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
  318. package/contracts/instance/InstanceReader.sol +32 -7
  319. package/contracts/instance/InstanceService.sol +62 -39
  320. package/contracts/instance/InstanceServiceManager.sol +6 -7
  321. package/contracts/instance/InstanceStore.sol +12 -1
  322. package/contracts/instance/base/ObjectLifecycle.sol +9 -4
  323. package/contracts/instance/module/IBundle.sol +1 -1
  324. package/contracts/instance/module/IComponents.sol +1 -6
  325. package/contracts/instance/module/IDistribution.sol +0 -1
  326. package/contracts/instance/module/IPolicy.sol +22 -22
  327. package/contracts/mock/Dip.sol +1 -1
  328. package/contracts/oracle/Oracle.sol +4 -7
  329. package/contracts/oracle/OracleService.sol +9 -6
  330. package/contracts/oracle/OracleServiceManager.sol +6 -6
  331. package/contracts/pool/BasicPool.sol +7 -5
  332. package/contracts/pool/BasicPoolAuthorization.sol +8 -2
  333. package/contracts/pool/BundleService.sol +184 -30
  334. package/contracts/pool/BundleServiceManager.sol +6 -6
  335. package/contracts/pool/IBundleService.sol +33 -5
  336. package/contracts/pool/IPoolComponent.sol +7 -0
  337. package/contracts/pool/IPoolService.sol +36 -26
  338. package/contracts/pool/Pool.sol +39 -24
  339. package/contracts/pool/PoolService.sol +157 -85
  340. package/contracts/pool/PoolServiceManager.sol +4 -4
  341. package/contracts/product/ApplicationService.sol +43 -26
  342. package/contracts/product/ApplicationServiceManager.sol +4 -4
  343. package/contracts/product/BasicProduct.sol +3 -32
  344. package/contracts/product/ClaimService.sol +208 -78
  345. package/contracts/product/ClaimServiceManager.sol +4 -4
  346. package/contracts/product/IApplicationService.sol +1 -0
  347. package/contracts/product/IClaimService.sol +28 -5
  348. package/contracts/product/IPolicyService.sol +31 -32
  349. package/contracts/product/IPricingService.sol +7 -7
  350. package/contracts/product/IProductComponent.sol +0 -1
  351. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  352. package/contracts/product/PolicyService.sol +370 -194
  353. package/contracts/product/PolicyServiceManager.sol +4 -4
  354. package/contracts/product/PricingService.sol +46 -46
  355. package/contracts/product/PricingServiceManager.sol +3 -3
  356. package/contracts/product/Product.sol +67 -34
  357. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  358. package/contracts/product/RiskServiceManager.sol +39 -0
  359. package/contracts/registry/ChainNft.sol +65 -32
  360. package/contracts/registry/IRegistry.sol +49 -15
  361. package/contracts/registry/Registry.sol +321 -195
  362. package/contracts/registry/RegistryAdmin.sol +150 -51
  363. package/contracts/registry/RegistryService.sol +2 -2
  364. package/contracts/registry/RegistryServiceManager.sol +2 -2
  365. package/contracts/registry/ReleaseRegistry.sol +12 -8
  366. package/contracts/registry/ServiceAuthorizationV3.sol +2 -3
  367. package/contracts/shared/Component.sol +23 -29
  368. package/contracts/shared/ComponentService.sol +51 -32
  369. package/contracts/shared/ComponentServiceManager.sol +8 -5
  370. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  371. package/contracts/shared/ContractLib.sol +38 -0
  372. package/contracts/shared/IComponent.sol +4 -4
  373. package/contracts/shared/IComponentService.sol +5 -9
  374. package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
  375. package/contracts/shared/IPolicyHolder.sol +12 -22
  376. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  377. package/contracts/shared/InstanceLinkedComponent.sol +4 -4
  378. package/contracts/shared/NftOwnable.sol +7 -7
  379. package/contracts/shared/PolicyHolder.sol +14 -58
  380. package/contracts/shared/Registerable.sol +4 -4
  381. package/contracts/shared/RegistryLinked.sol +3 -2
  382. package/contracts/shared/Service.sol +16 -11
  383. package/contracts/shared/TokenHandler.sol +100 -19
  384. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  385. package/contracts/staking/IStaking.sol +2 -1
  386. package/contracts/staking/StakeManagerLib.sol +18 -25
  387. package/contracts/staking/Staking.sol +11 -27
  388. package/contracts/staking/StakingManager.sol +8 -6
  389. package/contracts/staking/StakingService.sol +10 -14
  390. package/contracts/staking/StakingServiceManager.sol +2 -2
  391. package/contracts/staking/TargetManagerLib.sol +7 -3
  392. package/contracts/type/Amount.sol +12 -5
  393. package/contracts/type/Blocknumber.sol +7 -1
  394. package/contracts/type/NftId.sol +1 -0
  395. package/contracts/type/ObjectType.sol +15 -11
  396. package/contracts/type/Referral.sol +1 -0
  397. package/contracts/type/RiskId.sol +15 -1
  398. package/contracts/type/Seconds.sol +21 -1
  399. package/contracts/type/StateId.sol +1 -0
  400. package/contracts/type/Timestamp.sol +11 -1
  401. package/contracts/type/UFixed.sol +29 -10
  402. package/contracts/upgradeability/ProxyManager.sol +67 -34
  403. package/contracts/upgradeability/Versionable.sol +2 -2
  404. package/package.json +1 -1
  405. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  406. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  407. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  408. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  409. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  410. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  411. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  412. package/contracts/product/ProductServiceManager.sol +0 -39
@@ -60,7 +60,7 @@ contract InstanceService is
60
60
 
61
61
  modifier onlyInstance() {
62
62
  address instanceAddress = msg.sender;
63
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
63
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
64
64
  if (instanceNftId.eqz()) {
65
65
  revert ErrorInstanceServiceNotRegistered(instanceAddress);
66
66
  }
@@ -104,32 +104,9 @@ contract InstanceService is
104
104
  // tx sender will become instance owner
105
105
  address instanceOwner = msg.sender;
106
106
 
107
- // start with setting up a new OZ access manager
108
- AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
109
- Clones.clone(_masterAccessManager));
110
-
111
- // set up the instance admin
112
- InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
113
- clonedAccessManager.initialize(
114
- address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
115
-
116
- clonedInstanceAdmin.initialize(
117
- clonedAccessManager,
118
- InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
119
-
120
- InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
121
- BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
122
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
123
-
124
- // clone instance
125
- clonedInstance = Instance(Clones.clone(_masterInstance));
126
- clonedInstance.initialize(
127
- clonedInstanceAdmin,
128
- clonedInstanceStore,
129
- clonedBundleSet,
130
- clonedInstanceReader,
131
- getRegistry(),
132
- instanceOwner);
107
+ // create instance admin and instance
108
+ InstanceAdmin instanceAdmin = _createInstanceAdmin();
109
+ clonedInstance = _createInstance(instanceAdmin, instanceOwner);
133
110
 
134
111
  // register cloned instance with registry
135
112
  clonedInstanceNftId = _registryService.registerInstance(
@@ -142,7 +119,7 @@ contract InstanceService is
142
119
  TargetManagerLib.getDefaultRewardRate());
143
120
 
144
121
  // MUST be set after instance is set up and registered
145
- clonedInstanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
122
+ instanceAdmin.initializeInstanceAuthorization(address(clonedInstance));
146
123
 
147
124
  emit LogInstanceCloned(
148
125
  clonedInstanceNftId,
@@ -155,7 +132,7 @@ contract InstanceService is
155
132
  virtual
156
133
  onlyInstance()
157
134
  {
158
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
135
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
159
136
  _stakingService.setInstanceLockingPeriod(
160
137
  instanceNftId,
161
138
  stakeLockingPeriod);
@@ -167,7 +144,7 @@ contract InstanceService is
167
144
  virtual
168
145
  onlyInstance()
169
146
  {
170
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
147
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
171
148
  _stakingService.setInstanceRewardRate(
172
149
  instanceNftId,
173
150
  rewardRate);
@@ -179,7 +156,7 @@ contract InstanceService is
179
156
  virtual
180
157
  onlyInstance()
181
158
  {
182
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
159
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
183
160
  _stakingService.refillInstanceRewardReserves(
184
161
  instanceNftId,
185
162
  rewardProvider,
@@ -193,7 +170,7 @@ contract InstanceService is
193
170
  onlyInstance()
194
171
  returns (Amount newBalance)
195
172
  {
196
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
173
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
197
174
  _stakingService.withdrawInstanceRewardReserves(
198
175
  instanceNftId,
199
176
  dipAmount);
@@ -337,7 +314,7 @@ contract InstanceService is
337
314
 
338
315
  InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
339
316
  instanceAdmin.initializeComponentAuthorization(
340
- address(component),
317
+ component,
341
318
  component.getAuthorization());
342
319
  }
343
320
 
@@ -362,6 +339,53 @@ contract InstanceService is
362
339
  );
363
340
  }
364
341
 
342
+ /// @dev create new cloned instance admin
343
+ /// function used to setup a new instance
344
+ function _createInstanceAdmin()
345
+ internal
346
+ virtual
347
+ returns (InstanceAdmin clonedInstanceAdmin)
348
+ {
349
+ // start with setting up a new OZ access manager
350
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
351
+ Clones.clone(_masterAccessManager));
352
+
353
+ // set up the instance admin
354
+ clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
355
+ clonedAccessManager.initialize(
356
+ address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
357
+
358
+ clonedInstanceAdmin.initialize(
359
+ clonedAccessManager,
360
+ InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
361
+ }
362
+
363
+
364
+ /// @dev create new cloned instance
365
+ /// function used to setup a new instance
366
+ function _createInstance(
367
+ InstanceAdmin instanceAdmin,
368
+ address instanceOwner
369
+ )
370
+ internal
371
+ virtual
372
+ returns (Instance clonedInstance)
373
+ {
374
+ InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
375
+ BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
376
+ InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
377
+
378
+ // clone instance
379
+ clonedInstance = Instance(Clones.clone(_masterInstance));
380
+ clonedInstance.initialize(
381
+ instanceAdmin,
382
+ clonedInstanceStore,
383
+ clonedBundleSet,
384
+ clonedInstanceReader,
385
+ getRegistry(),
386
+ instanceOwner);
387
+ }
388
+
365
389
 
366
390
  /// all gif targets MUST be children of instanceNftId
367
391
  function _createGifTarget(
@@ -398,21 +422,20 @@ contract InstanceService is
398
422
  bytes memory data
399
423
  )
400
424
  internal
401
- initializer
402
425
  virtual override
426
+ initializer()
403
427
  {
404
428
  (
405
- address registryAddress,,
406
- //address managerAddress
429
+ address registryAddress,
407
430
  address authority
408
- ) = abi.decode(data, (address, address, address));
431
+ ) = abi.decode(data, (address, address));
409
432
 
410
- initializeService(registryAddress, authority, owner);
433
+ _initializeService(registryAddress, authority, owner);
411
434
 
412
435
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
413
436
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
414
437
 
415
- registerInterface(type(IInstanceService).interfaceId);
438
+ _registerInterface(type(IInstanceService).interfaceId);
416
439
  }
417
440
 
418
441
 
@@ -12,16 +12,15 @@ contract InstanceServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with instance service implementation
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- InstanceService instSrv = new InstanceService{salt: salt}();
21
- // bytes memory initCode = type(InstanceService).creationCode;
22
- bytes memory data = abi.encode(registryAddress, address(this), authority);
23
- IVersionable versionable = deployDetermenistic(
24
- address(instSrv),
19
+ InstanceService svc = new InstanceService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
25
24
  data,
26
25
  salt);
27
26
 
@@ -7,7 +7,7 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ObjectType, BUNDLE, POLICY, POOL, PRODUCT, COMPONENT, DISTRIBUTOR, DISTRIBUTOR_TYPE} from "../type/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
11
11
  import {RequestId} from "../type/RequestId.sol";
12
12
  import {RiskId} from "../type/RiskId.sol";
13
13
  import {StateId} from "../type/StateId.sol";
@@ -116,6 +116,7 @@ contract InstanceStore is
116
116
 
117
117
  //--- Distributor -------------------------------------------------------//
118
118
  function createDistributor(NftId distributorNftId, IDistribution.DistributorInfo memory info) external restricted() {
119
+ _registerBalanceTarget(distributorNftId);
119
120
  _create(_toNftKey32(distributorNftId, DISTRIBUTOR()), abi.encode(info));
120
121
  }
121
122
 
@@ -194,6 +195,16 @@ contract InstanceStore is
194
195
  _updateState(_toNftKey32(policyNftId, POLICY()), newState);
195
196
  }
196
197
 
198
+
199
+ //--- Premium (Policy) ----------------------------------------------//
200
+ function createPremium(NftId policyNftId, IPolicy.PremiumInfo memory premium) external restricted() {
201
+ _create(_toNftKey32(policyNftId, PREMIUM()), abi.encode(premium));
202
+ }
203
+
204
+ function updatePremiumState(NftId policyNftId, StateId newState) external restricted() {
205
+ _updateState(_toNftKey32(policyNftId, PREMIUM()), newState);
206
+ }
207
+
197
208
  //--- Claim -------------------------------------------------------------//
198
209
  function createClaim(NftId policyNftId, ClaimId claimId, IPolicy.ClaimInfo memory claim) external restricted() {
199
210
  _create(_toClaimKey32(policyNftId, claimId), abi.encode(claim));
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
5
5
 
6
- import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
6
+ import {COMPONENT, BUNDLE, POLICY, REQUEST, RISK, CLAIM, PAYOUT, POOL, PREMIUM, PRODUCT, DISTRIBUTION, DISTRIBUTOR, DISTRIBUTOR_TYPE, REFERRAL} from "../../type/ObjectType.sol";
7
7
  import {ACTIVE, PAUSED, ARCHIVED, CLOSED, APPLIED, COLLATERALIZED, REVOKED, SUBMITTED, CONFIRMED, DECLINED, EXPECTED, PAID, FULFILLED, FAILED, CANCELLED} from "../../type/StateId.sol";
8
8
  import {Lifecycle} from "../../shared/Lifecycle.sol";
9
9
 
@@ -23,6 +23,7 @@ contract ObjectLifecycle is
23
23
  _setupBundleLifecycle();
24
24
  _setupComponentLifecycle();
25
25
  _setupPolicyLifecycle();
26
+ _setupPremiumLifecycle();
26
27
  _setupClaimLifecycle();
27
28
  _setupPayoutLifecycle();
28
29
  _setupRiskLifecycle();
@@ -54,9 +55,12 @@ contract ObjectLifecycle is
54
55
  setStateTransition(POLICY(), APPLIED(), REVOKED());
55
56
  setStateTransition(POLICY(), APPLIED(), DECLINED());
56
57
  setStateTransition(POLICY(), APPLIED(), COLLATERALIZED());
57
- setStateTransition(POLICY(), APPLIED(), ACTIVE());
58
- setStateTransition(POLICY(), COLLATERALIZED(), ACTIVE());
59
- setStateTransition(POLICY(), ACTIVE(), CLOSED());
58
+ setStateTransition(POLICY(), COLLATERALIZED(), CLOSED());
59
+ }
60
+
61
+ function _setupPremiumLifecycle() private {
62
+ setInitialState(PREMIUM(), EXPECTED());
63
+ setStateTransition(PREMIUM(), EXPECTED(), PAID());
60
64
  }
61
65
 
62
66
  function _setupClaimLifecycle() private {
@@ -68,6 +72,7 @@ contract ObjectLifecycle is
68
72
 
69
73
  function _setupPayoutLifecycle() private {
70
74
  setInitialState(PAYOUT(), EXPECTED());
75
+ // TODO: add state cancelled
71
76
  setStateTransition(PAYOUT(), EXPECTED(), PAID());
72
77
  }
73
78
 
@@ -13,7 +13,7 @@ interface IBundle {
13
13
  NftId poolNftId;
14
14
  Fee fee; // bundle fee on net premium amounts
15
15
  bytes filter; // required conditions for applications to be considered for collateralization by this bundle
16
- Seconds lifetime; // lifetime of bundle after creation
16
+ Timestamp activatedAt;
17
17
  Timestamp expiredAt; // no new policies starting with this timestamp
18
18
  Timestamp closedAt; // no open policies, locked amount = 0
19
19
  }
@@ -35,17 +35,12 @@ interface IComponents {
35
35
 
36
36
 
37
37
  struct PoolInfo {
38
- NftId productNftId; // the nft of the product this pool is linked to
38
+ Amount maxBalanceAmount; // max balance amount allowed for pool
39
39
  RoleId bundleOwnerRole; // the required role for bundle owners
40
- // TODO maxCapitalAmount -> maxBalanceAmount
41
- Amount maxCapitalAmount; // max capital amount allowed for pool
42
40
  bool isInterceptingBundleTransfers; // intercepts nft transfers for bundles
43
41
  bool isExternallyManaged; // funding bundles is restricted to book keeping, actual funds may be provided as needed to support payouts
44
42
  bool isVerifyingApplications; // underwriting requires the pool component checks/confirms the applications
45
43
  UFixed collateralizationLevel; // factor to calculate collateral for sum insurance (default 100%)
46
44
  UFixed retentionLevel; // amount of collateral held in pool (default 100%)
47
- Fee poolFee; // pool fee on net premium
48
- Fee stakingFee; // pool fee on staked capital from investor
49
- Fee performanceFee; // pool fee on profits from capital investors
50
45
  }
51
46
  }
@@ -25,7 +25,6 @@ interface IDistribution {
25
25
  DistributorType distributorType;
26
26
  bool active;
27
27
  bytes data;
28
- Amount commissionAmount;
29
28
  uint32 numPoliciesSold;
30
29
  }
31
30
 
@@ -11,7 +11,7 @@ import {Timestamp} from "../../type/Timestamp.sol";
11
11
 
12
12
  interface IPolicy {
13
13
 
14
- struct Premium {
14
+ struct PremiumInfo {
15
15
  // premium splitting per target wallet
16
16
  Amount productFeeAmount;
17
17
  Amount distributionFeeAndCommissionAmount;
@@ -19,26 +19,26 @@ interface IPolicy {
19
19
 
20
20
  // detailed positions
21
21
  // this is the net premium calculated by the product
22
- uint256 netPremiumAmount;
22
+ Amount netPremiumAmount;
23
23
  // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
24
- uint256 fullPremiumAmount;
25
- // premium = fullPremium - discount
26
- uint256 premiumAmount;
27
- uint256 productFeeFixAmount;
28
- uint256 poolFeeFixAmount;
29
- uint256 bundleFeeFixAmount;
30
- uint256 distributionFeeFixAmount;
31
- uint256 productFeeVarAmount;
32
- uint256 poolFeeVarAmount;
33
- uint256 bundleFeeVarAmount;
34
- uint256 distributionFeeVarAmount;
35
- uint256 distributionOwnerFeeFixAmount;
24
+ Amount fullPremiumAmount;
25
+ // effective premium = fullPremium - discount
26
+ Amount premiumAmount;
27
+ Amount productFeeFixAmount;
28
+ Amount poolFeeFixAmount;
29
+ Amount bundleFeeFixAmount;
30
+ Amount distributionFeeFixAmount;
31
+ Amount productFeeVarAmount;
32
+ Amount poolFeeVarAmount;
33
+ Amount bundleFeeVarAmount;
34
+ Amount distributionFeeVarAmount;
35
+ Amount distributionOwnerFeeFixAmount;
36
36
  // this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
37
- uint256 distributionOwnerFeeVarAmount;
37
+ Amount distributionOwnerFeeVarAmount;
38
38
  // this value is based on distributor type referenced in the referral
39
- uint256 commissionAmount;
39
+ Amount commissionAmount;
40
40
  // this is based on referral used
41
- uint256 discountAmount;
41
+ Amount discountAmount;
42
42
  }
43
43
 
44
44
  /// @dev policy data for the full policy lifecycle
@@ -49,7 +49,6 @@ interface IPolicy {
49
49
  RiskId riskId;
50
50
  Amount sumInsuredAmount;
51
51
  Amount premiumAmount; // expected premium at application time
52
- Amount premiumPaidAmount; // actual paid premium
53
52
  Seconds lifetime;
54
53
  // policy application data, no changes after applying for a policy
55
54
  bytes applicationData;
@@ -69,8 +68,8 @@ interface IPolicy {
69
68
  Amount paidAmount;
70
69
  uint8 payoutsCount;
71
70
  uint8 openPayoutsCount;
72
- bytes submissionData; // claim submission data, no changes after submitting the claim
73
- bytes processData; // data that may include information supporting confirm or decline
71
+ bytes submissionData; // use case specific claim submission data, no changes after submitting the claim
72
+ bytes processData; // use case specific data that may include information supporting confirm or decline
74
73
  Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
75
74
  }
76
75
 
@@ -78,7 +77,8 @@ interface IPolicy {
78
77
  struct PayoutInfo {
79
78
  ClaimId claimId;
80
79
  Amount amount;
81
- bytes data;
82
- Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
80
+ address beneficiary; // for address(0) beneficiary is policy nft owner
81
+ bytes data; // use case specific supporting data
82
+ Timestamp paidAt; // timestamp for actual payout
83
83
  }
84
84
  }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
4
+ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
5
 
6
6
  contract Dip is ERC20 {
7
7
 
@@ -8,14 +8,10 @@ import {IComponentService} from "../shared/IComponentService.sol";
8
8
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
9
9
  import {IOracleComponent} from "./IOracleComponent.sol";
10
10
  import {IOracleService} from "./IOracleService.sol";
11
- import {IRegistry} from "../registry/IRegistry.sol";
12
- import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
13
- import {NftId, NftIdLib} from "../type/NftId.sol";
11
+ import {NftId} from "../type/NftId.sol";
14
12
  import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
15
- import {InstanceReader} from "../instance/InstanceReader.sol";
16
13
  import {RequestId} from "../type/RequestId.sol";
17
- import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
18
- import {UFixed} from "../type/UFixed.sol";
14
+ import {Timestamp} from "../type/Timestamp.sol";
19
15
 
20
16
 
21
17
  abstract contract Oracle is
@@ -75,6 +71,7 @@ abstract contract Oracle is
75
71
  return false;
76
72
  }
77
73
 
74
+ /// @dev Not relevant for oracle components
78
75
  function withdrawFees(Amount amount)
79
76
  external
80
77
  virtual
@@ -117,7 +114,7 @@ abstract contract Oracle is
117
114
  $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
118
115
  $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
119
116
 
120
- registerInterface(type(IOracleComponent).interfaceId);
117
+ _registerInterface(type(IOracleComponent).interfaceId);
121
118
  }
122
119
 
123
120
 
@@ -27,14 +27,16 @@ contract OracleService is
27
27
  bytes memory data
28
28
  )
29
29
  internal
30
- initializer
31
30
  virtual override
31
+ initializer()
32
32
  {
33
- address initialOwner;
34
- address registryAddress;
35
- (registryAddress, initialOwner) = abi.decode(data, (address, address));
36
- initializeService(registryAddress, address(0), owner);
37
- registerInterface(type(IOracleService).interfaceId);
33
+ (
34
+ address registryAddress,
35
+ address authority
36
+ ) = abi.decode(data, (address, address));
37
+
38
+ _initializeService(registryAddress, authority, owner);
39
+ _registerInterface(type(IOracleService).interfaceId);
38
40
  }
39
41
 
40
42
  function request(
@@ -64,6 +66,7 @@ contract OracleService is
64
66
  ORACLE(),
65
67
  true); // only active
66
68
 
69
+ // TODO move to stronger validation, requester and oracle need to belong to same product cluster
67
70
  // check that requester and oracle share same instance
68
71
  if (componentInfo.parentNftId != oracleInfo.parentNftId) {
69
72
  revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
@@ -12,15 +12,15 @@ contract OracleServiceManager is ProxyManager {
12
12
  /// @dev initializes proxy manager with service implementation and deploys instance
13
13
  constructor(
14
14
  address authority,
15
- address registryAddress,
15
+ address registry,
16
16
  bytes32 salt
17
17
  )
18
- ProxyManager(registryAddress)
19
18
  {
20
- OracleService orclSrv = new OracleService{salt: salt}();
21
- bytes memory data = abi.encode(registryAddress, address(this), authority);
22
- IVersionable versionable = deployDetermenistic(
23
- address(orclSrv),
19
+ OracleService svc = new OracleService{salt: salt}();
20
+ bytes memory data = abi.encode(registry, authority);
21
+ IVersionable versionable = initialize(
22
+ registry,
23
+ address(svc),
24
24
  data,
25
25
  salt);
26
26
 
@@ -14,6 +14,7 @@ import {NftId, NftIdLib} from "../type/NftId.sol";
14
14
  import {BUNDLE, COMPONENT, POOL} from "../type/ObjectType.sol";
15
15
  import {RoleId, PUBLIC_ROLE} from "../type/RoleId.sol";
16
16
  import {Seconds} from "../type/Seconds.sol";
17
+ import {Timestamp} from "../type/Timestamp.sol";
17
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
18
19
  import {UFixed, UFixedLib} from "../type/UFixed.sol";
19
20
 
@@ -81,8 +82,9 @@ abstract contract BasicPool is
81
82
  virtual
82
83
  restricted()
83
84
  onlyBundleOwner(bundleNftId)
85
+ returns(Timestamp newExpiredAt)
84
86
  {
85
- _extend(bundleNftId, lifetimeExtension);
87
+ return _extend(bundleNftId, lifetimeExtension);
86
88
  }
87
89
 
88
90
 
@@ -106,13 +108,13 @@ abstract contract BasicPool is
106
108
  }
107
109
 
108
110
 
109
- function close(NftId bundleNftId)
111
+ function closeBundle(NftId bundleNftId)
110
112
  public
111
113
  virtual
112
114
  restricted()
113
115
  onlyBundleOwner(bundleNftId)
114
116
  {
115
- _close(bundleNftId);
117
+ _closeBundle(bundleNftId);
116
118
  }
117
119
 
118
120
 
@@ -129,13 +131,13 @@ abstract contract BasicPool is
129
131
  }
130
132
 
131
133
 
132
- function setMaxCapitalAmount(Amount maxCapitalAmount)
134
+ function setMaxBalanceAmount(Amount maxBalanceAmount)
133
135
  public
134
136
  virtual
135
137
  restricted()
136
138
  onlyOwner()
137
139
  {
138
- _setMaxCapitalAmount(maxCapitalAmount);
140
+ _setMaxBalanceAmount(maxBalanceAmount);
139
141
  }
140
142
 
141
143
 
@@ -5,6 +5,7 @@ import {Authorization} from "../authorization/Authorization.sol";
5
5
  import {BasicPool} from "./BasicPool.sol";
6
6
  import {IAccess} from "../authorization/IAccess.sol";
7
7
  import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
+ import {IPoolComponent} from "./IPoolComponent.sol";
8
9
  import {POOL} from "../type/ObjectType.sol";
9
10
  import {PUBLIC_ROLE} from "../../contracts/type/RoleId.sol";
10
11
  import {RoleId} from "../type/RoleId.sol";
@@ -39,14 +40,19 @@ contract BasicPoolAuthorization
39
40
  _authorize(functions, BasicPool.extend.selector, "extend");
40
41
  _authorize(functions, BasicPool.lockBundle.selector, "lockBundle");
41
42
  _authorize(functions, BasicPool.unlockBundle.selector, "unlockBundle");
42
- _authorize(functions, BasicPool.close.selector, "close");
43
+ _authorize(functions, BasicPool.closeBundle.selector, "closeBundle");
43
44
  _authorize(functions, BasicPool.setBundleFee.selector, "setBundleFee");
44
45
 
45
- _authorize(functions, BasicPool.setMaxCapitalAmount.selector, "setMaxCapitalAmount");
46
+ _authorize(functions, BasicPool.setMaxBalanceAmount.selector, "setMaxBalanceAmount");
46
47
  _authorize(functions, BasicPool.setBundleOwnerRole.selector, "setBundleOwnerRole");
47
48
  _authorize(functions, BasicPool.setFees.selector, "setFees");
49
+ _authorize(functions, BasicPool.stake.selector, "stake");
50
+ _authorize(functions, BasicPool.unstake.selector, "unstake");
51
+ _authorize(functions, BasicPool.extend.selector, "extend");
48
52
 
49
53
  _authorize(functions, IInstanceLinkedComponent.withdrawFees.selector, "withdrawFees");
54
+
55
+ _authorize(functions, IPoolComponent.withdrawBundleFees.selector, "withdrawBundleFees");
50
56
  }
51
57
  }
52
58