@etherisc/gif-next 0.0.2-f761c0d-394 → 0.0.2-f78c672-338

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 (547) hide show
  1. package/README.md +58 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1007 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +744 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +203 -77
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +233 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +200 -16
  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 +142 -44
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +107 -15
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +176 -451
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +206 -27
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +125 -365
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +469 -283
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +151 -109
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +133 -183
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +314 -86
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1475 -0
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +589 -0
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2032 -0
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +589 -0
  49. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1431 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +589 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1195 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1655 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +589 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2432 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +589 -0
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  67. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +164 -63
  69. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +108 -106
  71. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  72. package/artifacts/contracts/instance/Instance.sol/Instance.json +201 -161
  73. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +447 -144
  75. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +150 -90
  77. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1026 -298
  79. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +134 -269
  81. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -92
  83. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +640 -493
  85. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  87. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  89. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  90. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  94. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  96. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  98. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  102. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  103. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  104. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  105. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  106. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +139 -335
  107. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +180 -29
  109. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +128 -126
  112. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +69 -11
  114. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  115. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +115 -303
  116. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +153 -190
  118. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +122 -88
  120. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  121. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +162 -387
  122. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  123. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +206 -27
  124. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  125. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +331 -204
  126. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +143 -97
  128. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  129. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +206 -29
  130. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  131. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +143 -195
  132. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +464 -312
  134. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  135. package/artifacts/contracts/pool/Pool.sol/Pool.json +128 -370
  136. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  137. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +456 -0
  138. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  139. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +653 -532
  140. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +163 -97
  142. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  143. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +194 -178
  144. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  145. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +100 -90
  146. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  147. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +258 -396
  148. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  149. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +206 -27
  150. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  151. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +415 -234
  152. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +140 -114
  154. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  155. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +136 -9
  156. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  157. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +308 -16
  158. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  159. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +365 -104
  160. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  161. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +157 -83
  162. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  163. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +250 -198
  164. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  165. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +88 -8
  166. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  167. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +459 -309
  168. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  169. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +293 -0
  170. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  171. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +141 -99
  172. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  173. package/artifacts/contracts/product/PricingService.sol/PricingService.json +253 -306
  174. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  175. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +123 -121
  176. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  177. package/artifacts/contracts/product/Product.sol/Product.json +256 -394
  178. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  179. package/artifacts/contracts/product/RiskService.sol/RiskService.json +688 -0
  180. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +736 -0
  182. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  183. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  184. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  185. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +370 -22
  186. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +72 -152
  188. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  189. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +597 -80
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +351 -169
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +109 -292
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +94 -80
  200. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +1849 -0
  202. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  204. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1333 -0
  206. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  208. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  209. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  210. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Component.sol/Component.json +76 -265
  212. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +579 -495
  214. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +143 -107
  216. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +57 -111
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +541 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  226. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +89 -88
  228. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +547 -224
  230. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  231. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +117 -126
  232. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  234. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  235. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  236. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  238. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  240. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +148 -0
  242. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  243. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  244. package/artifacts/contracts/shared/IService.sol/IService.json +55 -2
  245. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  246. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  247. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  248. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +104 -303
  249. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  250. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  251. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  253. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  254. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  255. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  257. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  258. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  259. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +122 -97
  261. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  262. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  263. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  264. package/artifacts/contracts/shared/Service.sol/Service.json +57 -111
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  266. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  267. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  268. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  269. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  270. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  271. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +134 -125
  273. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  274. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +77 -16
  275. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +85 -105
  277. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  278. package/artifacts/contracts/staking/Staking.sol/Staking.json +210 -366
  279. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  281. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +122 -95
  283. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  284. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  285. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  286. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +122 -164
  287. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  288. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -85
  289. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +156 -110
  291. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  292. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +59 -23
  293. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  294. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Amount.sol/AmountLib.json +61 -8
  296. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  298. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  299. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  300. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  301. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  302. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  304. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  306. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  307. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  308. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  310. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  311. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  312. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  314. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  316. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  318. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  320. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  322. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -15
  324. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
  326. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  328. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  330. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  332. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +52 -2
  337. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +66 -2
  341. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  342. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  344. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  346. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  347. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  348. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  349. package/contracts/accounting/AccountingService.sol +262 -0
  350. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  351. package/contracts/accounting/IAccountingService.sol +45 -0
  352. package/contracts/authorization/AccessAdmin.sol +232 -134
  353. package/contracts/authorization/AccessManagerCloneable.sol +136 -3
  354. package/contracts/authorization/Authorization.sol +321 -202
  355. package/contracts/authorization/IAccess.sol +1 -0
  356. package/contracts/authorization/IAccessAdmin.sol +17 -10
  357. package/contracts/authorization/IAuthorization.sol +27 -7
  358. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  359. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  360. package/contracts/distribution/BasicDistribution.sol +18 -25
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +26 -9
  362. package/contracts/distribution/Distribution.sol +41 -74
  363. package/contracts/distribution/DistributionService.sol +191 -108
  364. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  365. package/contracts/distribution/IDistributionComponent.sol +9 -14
  366. package/contracts/distribution/IDistributionService.sol +40 -22
  367. package/contracts/examples/fire/DamageLevel.sol +59 -0
  368. package/contracts/examples/fire/FirePool.sol +90 -0
  369. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  370. package/contracts/examples/fire/FireProduct.sol +437 -0
  371. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  372. package/contracts/examples/fire/FireUSD.sol +26 -0
  373. package/contracts/examples/unpermissioned/SimpleDistribution.sol +85 -0
  374. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  376. package/contracts/examples/unpermissioned/SimplePool.sol +106 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +377 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +130 -0
  381. package/contracts/instance/IInstance.sol +25 -41
  382. package/contracts/instance/IInstanceService.sol +13 -33
  383. package/contracts/instance/Instance.sol +60 -67
  384. package/contracts/instance/InstanceAdmin.sol +258 -87
  385. package/contracts/instance/InstanceAuthorizationV3.sol +64 -53
  386. package/contracts/instance/InstanceReader.sol +288 -43
  387. package/contracts/instance/InstanceService.sol +129 -168
  388. package/contracts/instance/InstanceServiceManager.sol +8 -13
  389. package/contracts/instance/InstanceStore.sol +24 -2
  390. package/contracts/instance/RiskSet.sol +118 -0
  391. package/contracts/instance/base/ObjectCounter.sol +1 -2
  392. package/contracts/instance/base/ObjectLifecycle.sol +11 -4
  393. package/contracts/instance/base/ObjectSet.sol +77 -0
  394. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  395. package/contracts/instance/module/IBundle.sol +1 -1
  396. package/contracts/instance/module/IComponents.sol +14 -15
  397. package/contracts/instance/module/IDistribution.sol +5 -3
  398. package/contracts/instance/module/IPolicy.sol +26 -25
  399. package/contracts/instance/module/IRisk.sol +3 -0
  400. package/contracts/mock/Dip.sol +1 -1
  401. package/contracts/oracle/BasicOracle.sol +0 -1
  402. package/contracts/oracle/BasicOracleAuthorization.sol +3 -12
  403. package/contracts/oracle/IOracleComponent.sol +2 -1
  404. package/contracts/oracle/IOracleService.sol +2 -1
  405. package/contracts/oracle/Oracle.sol +21 -22
  406. package/contracts/oracle/OracleService.sol +113 -81
  407. package/contracts/oracle/OracleServiceManager.sol +8 -11
  408. package/contracts/pool/BasicPool.sol +38 -27
  409. package/contracts/pool/BasicPoolAuthorization.sol +36 -9
  410. package/contracts/pool/BundleService.sol +204 -105
  411. package/contracts/pool/BundleServiceManager.sol +8 -11
  412. package/contracts/pool/IBundleService.sol +31 -22
  413. package/contracts/pool/IPoolComponent.sol +20 -10
  414. package/contracts/pool/IPoolService.sol +90 -75
  415. package/contracts/pool/Pool.sol +145 -111
  416. package/contracts/pool/PoolLib.sol +216 -0
  417. package/contracts/pool/PoolService.sol +546 -241
  418. package/contracts/pool/PoolServiceManager.sol +6 -9
  419. package/contracts/product/ApplicationService.sol +98 -78
  420. package/contracts/product/ApplicationServiceManager.sol +6 -6
  421. package/contracts/product/BasicProduct.sol +13 -44
  422. package/contracts/product/BasicProductAuthorization.sol +25 -9
  423. package/contracts/product/ClaimService.sol +365 -175
  424. package/contracts/product/ClaimServiceManager.sol +6 -6
  425. package/contracts/product/IApplicationService.sol +9 -2
  426. package/contracts/product/IClaimService.sol +44 -8
  427. package/contracts/product/IPolicyService.sol +53 -36
  428. package/contracts/product/IPricingService.sol +11 -10
  429. package/contracts/product/IProductComponent.sol +28 -5
  430. package/contracts/product/{IProductService.sol → IRiskService.sol} +8 -8
  431. package/contracts/product/PolicyService.sol +476 -269
  432. package/contracts/product/PolicyServiceLib.sol +65 -0
  433. package/contracts/product/PolicyServiceManager.sol +6 -9
  434. package/contracts/product/PricingService.sol +71 -62
  435. package/contracts/product/PricingServiceManager.sol +6 -9
  436. package/contracts/product/Product.sol +169 -92
  437. package/contracts/product/RiskService.sol +154 -0
  438. package/contracts/product/RiskServiceManager.sol +39 -0
  439. package/contracts/registry/ChainNft.sol +72 -40
  440. package/contracts/registry/IRegistry.sol +74 -29
  441. package/contracts/registry/IRegistryService.sol +3 -10
  442. package/contracts/registry/IRelease.sol +26 -0
  443. package/contracts/registry/ITransferInterceptor.sol +1 -2
  444. package/contracts/registry/Registry.sol +368 -216
  445. package/contracts/registry/RegistryAdmin.sol +185 -196
  446. package/contracts/registry/RegistryService.sol +41 -66
  447. package/contracts/registry/RegistryServiceManager.sol +5 -5
  448. package/contracts/registry/ReleaseAdmin.sol +245 -0
  449. package/contracts/registry/ReleaseLifecycle.sol +8 -3
  450. package/contracts/registry/ReleaseRegistry.sol +511 -0
  451. package/contracts/registry/ServiceAuthorizationV3.sol +99 -52
  452. package/contracts/registry/TokenRegistry.sol +8 -10
  453. package/contracts/shared/Component.sol +74 -128
  454. package/contracts/shared/ComponentService.sol +453 -342
  455. package/contracts/shared/ComponentServiceManager.sol +10 -7
  456. package/contracts/shared/ComponentVerifyingService.sol +28 -17
  457. package/contracts/shared/ContractLib.sol +253 -0
  458. package/contracts/shared/IComponent.sol +8 -17
  459. package/contracts/shared/IComponentService.sol +49 -39
  460. package/contracts/shared/IInstanceLinkedComponent.sol +7 -27
  461. package/contracts/shared/ILifecycle.sol +3 -1
  462. package/contracts/shared/INftOwnable.sol +2 -0
  463. package/contracts/shared/IPolicyHolder.sol +12 -22
  464. package/contracts/shared/IRegisterable.sol +23 -1
  465. package/contracts/shared/IService.sol +4 -6
  466. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +3 -3
  467. package/contracts/shared/InstanceLinkedComponent.sol +81 -35
  468. package/contracts/shared/KeyValueStore.sol +1 -1
  469. package/contracts/shared/Lifecycle.sol +15 -4
  470. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  471. package/contracts/shared/NftOwnable.sol +31 -11
  472. package/contracts/shared/PolicyHolder.sol +17 -57
  473. package/contracts/shared/Registerable.sol +55 -21
  474. package/contracts/shared/RegistryLinked.sol +9 -14
  475. package/contracts/shared/Service.sol +18 -36
  476. package/contracts/shared/TokenHandler.sol +309 -26
  477. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  478. package/contracts/staking/IStaking.sol +8 -11
  479. package/contracts/staking/IStakingService.sol +20 -8
  480. package/contracts/staking/StakeManagerLib.sol +19 -26
  481. package/contracts/staking/Staking.sol +86 -73
  482. package/contracts/staking/StakingManager.sol +10 -12
  483. package/contracts/staking/StakingReader.sol +24 -21
  484. package/contracts/staking/StakingService.sol +54 -35
  485. package/contracts/staking/StakingServiceManager.sol +8 -7
  486. package/contracts/staking/StakingStore.sol +12 -22
  487. package/contracts/staking/TargetManagerLib.sol +7 -3
  488. package/contracts/type/Amount.sol +27 -5
  489. package/contracts/type/Blocknumber.sol +7 -1
  490. package/contracts/type/ClaimId.sol +6 -1
  491. package/contracts/type/Key32.sol +2 -2
  492. package/contracts/type/Key32Set.sol +62 -0
  493. package/contracts/type/NftId.sol +7 -0
  494. package/contracts/type/ObjectType.sol +55 -27
  495. package/contracts/type/PayoutId.sol +10 -10
  496. package/contracts/type/Referral.sol +1 -0
  497. package/contracts/type/RiskId.sol +38 -6
  498. package/contracts/type/RoleId.sol +23 -15
  499. package/contracts/type/Seconds.sol +21 -1
  500. package/contracts/type/Selector.sol +5 -0
  501. package/contracts/type/StateId.sol +15 -1
  502. package/contracts/type/Timestamp.sol +10 -5
  503. package/contracts/type/UFixed.sol +35 -122
  504. package/contracts/type/Version.sol +18 -6
  505. package/contracts/{shared → upgradeability}/ProxyManager.sol +71 -38
  506. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  507. package/contracts/{shared → upgradeability}/Versionable.sol +2 -2
  508. package/package.json +7 -6
  509. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  510. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  511. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  512. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  513. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  514. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  515. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -181
  517. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  518. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  519. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  520. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  521. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  522. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  524. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  525. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  526. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  527. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  528. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  529. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  530. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  531. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  532. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  533. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  534. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  535. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  536. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  537. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  538. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  539. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  540. package/contracts/instance/BundleManager.sol +0 -126
  541. package/contracts/instance/base/ObjectManager.sol +0 -79
  542. package/contracts/instance/module/IAccess.sol +0 -46
  543. package/contracts/product/ProductService.sol +0 -124
  544. package/contracts/product/ProductServiceManager.sol +0 -42
  545. package/contracts/registry/ReleaseManager.sol +0 -487
  546. package/contracts/shared/InitializableCustom.sol +0 -177
  547. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {InstanceReader} from "../instance/InstanceReader.sol";
5
+ import {IPolicy} from "../instance/module/IPolicy.sol";
6
+ import {IPolicyService} from "../product/IPolicyService.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {StateId, CLOSED, COLLATERALIZED} from "../type/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
+
11
+ library PolicyServiceLib {
12
+
13
+ function checkExpiration(
14
+ Timestamp newExpiredAt,
15
+ NftId policyNftId,
16
+ StateId policyState,
17
+ IPolicy.PolicyInfo memory policyInfo
18
+ )
19
+ external
20
+ view
21
+ {
22
+ if (policyState != COLLATERALIZED()) {
23
+ revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
24
+ }
25
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) {
26
+ revert IPolicyService.ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
27
+ }
28
+
29
+ // check expiredAt represents a valid expiry time
30
+ if (newExpiredAt >= policyInfo.expiredAt) {
31
+ revert IPolicyService.ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, newExpiredAt);
32
+ }
33
+
34
+ if (newExpiredAt.gtz() && newExpiredAt < TimestampLib.blockTimestamp()) {
35
+ revert IPolicyService.ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), newExpiredAt);
36
+ }
37
+ }
38
+
39
+ function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
40
+ external
41
+ view
42
+ returns (bool isCloseable)
43
+ {
44
+ // policy already closed
45
+ if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
46
+ return false;
47
+ }
48
+
49
+ IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
50
+
51
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
52
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
53
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
54
+
55
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
56
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
57
+
58
+ // not closeable: not yet expired
59
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
60
+
61
+ // all conditions to close the policy are met
62
+ return true;
63
+ }
64
+
65
+ }
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {PolicyService} from "./PolicyService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {VersionLib} from "../type/Version.sol";
10
7
 
11
8
  contract PolicyServiceManager is ProxyManager {
12
9
 
@@ -15,14 +12,14 @@ contract PolicyServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with product service implementation
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
19
  PolicyService svc = new PolicyService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
26
23
  address(svc),
27
24
  data,
28
25
  salt);
@@ -9,7 +9,7 @@ import {NftId} from "../type/NftId.sol";
9
9
  import {Fee} from "../type/Fee.sol";
10
10
  import {ReferralId} from "../type/Referral.sol";
11
11
  import {RiskId} from "../type/RiskId.sol";
12
- import {PRODUCT, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
12
+ import {PRODUCT, BUNDLE, DISTRIBUTION, PRICE} from "../type/ObjectType.sol";
13
13
  import {IRegistry} from "../registry/IRegistry.sol";
14
14
 
15
15
  import {IProductComponent} from "./IProductComponent.sol";
@@ -31,11 +31,8 @@ contract PricingService is
31
31
  ComponentVerifyingService,
32
32
  IPricingService
33
33
  {
34
- using UFixedLib for UFixed;
35
-
36
34
  IDistributionService internal _distributionService;
37
35
 
38
-
39
36
  function _initialize(
40
37
  address owner,
41
38
  bytes memory data
@@ -45,15 +42,15 @@ contract PricingService is
45
42
  initializer()
46
43
  {
47
44
  (
48
- address registryAddress,,
49
- //address managerAddress
50
- address authority
51
- ) = abi.decode(data, (address, address, address));
45
+ address authority,
46
+ address registry
47
+ ) = abi.decode(data, (address, address));
52
48
 
53
- initializeService(registryAddress, authority, owner);
54
- registerInterface(type(IPricingService).interfaceId);
49
+ __Service_init(authority, registry, owner);
55
50
 
56
51
  _distributionService = IDistributionService(_getServiceAddress(DISTRIBUTION()));
52
+
53
+ _registerInterface(type(IPricingService).interfaceId);
57
54
  }
58
55
 
59
56
  /// @dev calculates the premium amount for the specified attributes
@@ -71,9 +68,12 @@ contract PricingService is
71
68
  view
72
69
  virtual override
73
70
  returns (
74
- IPolicy.Premium memory premium
71
+ IPolicy.PremiumInfo memory premium
75
72
  )
76
73
  {
74
+ _checkNftType(productNftId, PRODUCT());
75
+ _checkNftType(bundleNftId, BUNDLE());
76
+
77
77
  InstanceReader reader;
78
78
  Amount netPremiumAmount;
79
79
 
@@ -84,8 +84,14 @@ contract PricingService is
84
84
  IInstance instance
85
85
  ) = _getAndVerifyComponentInfo(productNftId, PRODUCT(), false);
86
86
 
87
+ // get instance reader from local instance variable
87
88
  reader = instance.getInstanceReader();
88
89
 
90
+ NftId riskProductNftId = reader.getRiskInfo(riskId).productNftId;
91
+ if (!productNftId.eq(riskProductNftId)) {
92
+ revert ErrorPricingServiceRiskProductMismatch(riskId, riskProductNftId, productNftId);
93
+ }
94
+
89
95
  // calculate net premium
90
96
  netPremiumAmount = IProductComponent(registryInfo.objectAddress).calculateNetPremium(
91
97
  sumInsuredAmount,
@@ -98,45 +104,49 @@ contract PricingService is
98
104
  {
99
105
  // get configurations for all involed objects
100
106
  IComponents.ProductInfo memory productInfo = reader.getProductInfo(productNftId);
107
+ IComponents.FeeInfo memory feeInfo = reader.getFeeInfo(productNftId);
101
108
 
102
109
  IBundle.BundleInfo memory bundleInfo = reader.getBundleInfo(bundleNftId);
103
110
  if(bundleInfo.poolNftId != productInfo.poolNftId) {
104
- revert ErrorIPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
111
+ revert ErrorPricingServiceBundlePoolMismatch(bundleNftId, bundleInfo.poolNftId, productInfo.poolNftId);
105
112
  }
106
113
 
107
- // calculate premium, order is important
114
+ // calculate fixed fees for product, pool, bundle
108
115
  premium = _getFixedFeeAmounts(
109
116
  netPremiumAmount,
110
- productInfo,
117
+ feeInfo,
111
118
  bundleInfo
112
119
  );
113
120
 
121
+ // calculate variable fees for product, pool, bundle
114
122
  premium = _calculateVariableFeeAmounts(
115
123
  premium,
116
- productInfo,
124
+ feeInfo,
117
125
  bundleInfo
118
126
  );
119
127
 
128
+ // calculate distribution fee and (if applicable) commission
120
129
  premium = _calculateDistributionOwnerFeeAmount(
121
130
  premium,
122
- productInfo,
131
+ feeInfo,
132
+ productInfo.distributionNftId,
123
133
  referralId,
124
134
  reader
125
135
  );
126
136
 
137
+ // calculate resulting amounts for product, pool, and distribution wallets
127
138
  premium = _calculateTargetWalletAmounts(premium);
128
139
 
129
140
  // sanity check to validate the fee calculation
130
- if(AmountLib.toAmount(premium.premiumAmount) !=
131
- premium.productFeeAmount
141
+ if(premium.premiumAmount != premium.productFeeAmount
132
142
  + premium.distributionFeeAndCommissionAmount
133
143
  + premium.poolPremiumAndFeeAmount)
134
144
  {
135
145
  revert ErrorPricingServiceTargetWalletAmountsMismatch();
136
146
  }
137
147
 
138
- if (premium.distributionOwnerFeeFixAmount < productInfo.minDistributionOwnerFee.fixedFee) {
139
- revert ErrorIPricingServiceFeeCalculationMismatch(
148
+ if (premium.distributionOwnerFeeFixAmount.toInt() < feeInfo.minDistributionOwnerFee.fixedFee) {
149
+ revert ErrorPricingServiceFeeCalculationMismatch(
140
150
  premium.distributionFeeFixAmount,
141
151
  premium.distributionFeeVarAmount,
142
152
  premium.distributionOwnerFeeFixAmount,
@@ -147,7 +157,7 @@ contract PricingService is
147
157
  }
148
158
 
149
159
  if ((premium.distributionFeeVarAmount) != (premium.discountAmount + premium.distributionOwnerFeeVarAmount + premium.commissionAmount)) {
150
- revert ErrorIPricingServiceFeeCalculationMismatch(
160
+ revert ErrorPricingServiceFeeCalculationMismatch(
151
161
  premium.distributionFeeFixAmount,
152
162
  premium.distributionFeeVarAmount,
153
163
  premium.distributionOwnerFeeFixAmount,
@@ -162,89 +172,90 @@ contract PricingService is
162
172
  // internal functions
163
173
  function _getFixedFeeAmounts(
164
174
  Amount netPremiumAmount,
165
- IComponents.ProductInfo memory productInfo,
175
+ IComponents.FeeInfo memory feeInfo,
166
176
  IBundle.BundleInfo memory bundleInfo
167
177
  )
168
178
  internal
169
179
  pure
170
180
  returns (
171
- IPolicy.Premium memory premium
181
+ IPolicy.PremiumInfo memory premium
172
182
  )
173
183
  {
174
184
  // initial premium amount is the net premium
175
- premium.netPremiumAmount = netPremiumAmount.toInt();
176
- premium.fullPremiumAmount = netPremiumAmount.toInt();
185
+ premium.netPremiumAmount = netPremiumAmount;
186
+ premium.fullPremiumAmount = netPremiumAmount;
177
187
 
178
- uint256 t = productInfo.productFee.fixedFee;
188
+ Amount t = AmountLib.toAmount(feeInfo.productFee.fixedFee);
179
189
  premium.productFeeFixAmount = t;
180
- premium.fullPremiumAmount += t;
190
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
181
191
 
182
- t = productInfo.poolFee.fixedFee;
192
+ t = AmountLib.toAmount(feeInfo.poolFee.fixedFee);
183
193
  premium.poolFeeFixAmount = t;
184
- premium.fullPremiumAmount += t;
194
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
185
195
 
186
- t = bundleInfo.fee.fixedFee;
196
+ t = AmountLib.toAmount(bundleInfo.fee.fixedFee);
187
197
  premium.bundleFeeFixAmount = t;
188
- premium.fullPremiumAmount += t;
198
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
189
199
 
190
- t = productInfo.distributionFee.fixedFee;
200
+ t = AmountLib.toAmount(feeInfo.distributionFee.fixedFee);
191
201
  premium.distributionFeeFixAmount = t;
192
- premium.fullPremiumAmount += t;
202
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
193
203
  }
194
204
 
195
205
  function _calculateVariableFeeAmounts(
196
- IPolicy.Premium memory premium,
197
- IComponents.ProductInfo memory productInfo,
206
+ IPolicy.PremiumInfo memory premium,
207
+ IComponents.FeeInfo memory feeInfo,
198
208
  IBundle.BundleInfo memory bundleInfo
199
209
  )
200
210
  internal
201
211
  pure
202
212
  returns (
203
- IPolicy.Premium memory intermadiatePremium
213
+ IPolicy.PremiumInfo memory intermadiatePremium
204
214
  )
205
215
  {
206
- UFixed netPremiumAmount = UFixedLib.toUFixed(premium.netPremiumAmount);
216
+ Amount netPremiumAmount = premium.netPremiumAmount;
207
217
 
208
- uint256 t = (netPremiumAmount * productInfo.productFee.fractionalFee).toInt();
218
+ Amount t = netPremiumAmount.multiplyWith(feeInfo.productFee.fractionalFee);
209
219
  premium.productFeeVarAmount = t;
210
- premium.fullPremiumAmount += t;
220
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
211
221
 
212
- t = (netPremiumAmount * productInfo.poolFee.fractionalFee).toInt();
222
+ t = netPremiumAmount.multiplyWith(feeInfo.poolFee.fractionalFee);
213
223
  premium.poolFeeVarAmount = t;
214
- premium.fullPremiumAmount += t;
224
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
215
225
 
216
- t = (netPremiumAmount * bundleInfo.fee.fractionalFee).toInt();
226
+ t = netPremiumAmount.multiplyWith(bundleInfo.fee.fractionalFee);
217
227
  premium.bundleFeeVarAmount = t;
218
- premium.fullPremiumAmount += t;
228
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
219
229
 
220
- t = (netPremiumAmount * productInfo.distributionFee.fractionalFee).toInt();
230
+ t = netPremiumAmount.multiplyWith(feeInfo.distributionFee.fractionalFee);
221
231
  premium.distributionFeeVarAmount = t;
222
- premium.fullPremiumAmount += t;
232
+ premium.fullPremiumAmount = premium.fullPremiumAmount + t;
223
233
 
224
234
  return premium;
225
235
  }
226
236
 
227
237
  function _calculateDistributionOwnerFeeAmount(
228
- IPolicy.Premium memory premium,
229
- IComponents.ProductInfo memory productInfo,
238
+ IPolicy.PremiumInfo memory premium,
239
+ IComponents.FeeInfo memory feeInfo,
240
+ NftId distributionNftId,
230
241
  // ISetup.DistributionSetupInfo memory distInfo,
231
242
  ReferralId referralId,
232
243
  InstanceReader reader
233
244
  )
234
245
  internal
235
246
  view
236
- returns (IPolicy.Premium memory finalPremium)
247
+ returns (IPolicy.PremiumInfo memory finalPremium)
237
248
  {
238
249
 
239
250
  // if the referral is not valid, then the distribution owner gets everything
240
- if (! _distributionService.referralIsValid(productInfo.distributionNftId, referralId)) {
251
+ if (distributionNftId.eqz() || ! _distributionService.referralIsValid(distributionNftId, referralId)) {
241
252
  premium.distributionOwnerFeeFixAmount = premium.distributionFeeFixAmount;
242
253
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount;
243
254
  premium.premiumAmount = premium.fullPremiumAmount;
244
255
  return premium;
245
256
  }
246
257
 
247
- Fee memory minDistributionOwnerFee = productInfo.minDistributionOwnerFee;
258
+ Fee memory minDistributionOwnerFee = feeInfo.minDistributionOwnerFee;
248
259
 
249
260
  // if the referral is valid, the the commission and discount are calculated based in the full premium
250
261
  // the remaing amount goes to the distribution owner
@@ -253,10 +264,10 @@ contract PricingService is
253
264
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
254
265
  IDistribution.DistributorTypeInfo memory distributorTypeInfo = reader.getDistributorTypeInfo(distributorInfo.distributorType);
255
266
 
256
- uint256 commissionAmount = UFixedLib.toUFixed(premium.netPremiumAmount).mul(distributorTypeInfo.commissionPercentage).toInt();
267
+ Amount commissionAmount = premium.netPremiumAmount.multiplyWith(distributorTypeInfo.commissionPercentage);
257
268
  premium.commissionAmount = commissionAmount;
258
- premium.discountAmount = UFixedLib.toUFixed(premium.fullPremiumAmount).mul(referralInfo.discountPercentage).toInt();
259
- premium.distributionOwnerFeeFixAmount = minDistributionOwnerFee.fixedFee;
269
+ premium.discountAmount = premium.fullPremiumAmount.multiplyWith(referralInfo.discountPercentage);
270
+ premium.distributionOwnerFeeFixAmount = AmountLib.toAmount(minDistributionOwnerFee.fixedFee);
260
271
  premium.distributionOwnerFeeVarAmount = premium.distributionFeeVarAmount - commissionAmount - premium.discountAmount;
261
272
  premium.premiumAmount = premium.fullPremiumAmount - premium.discountAmount;
262
273
  }
@@ -266,29 +277,27 @@ contract PricingService is
266
277
 
267
278
 
268
279
  function _calculateTargetWalletAmounts(
269
- IPolicy.Premium memory premium
280
+ IPolicy.PremiumInfo memory premium
270
281
  )
271
282
  internal
272
283
  virtual
273
284
  view
274
285
  returns (
275
- IPolicy.Premium memory premiumWithTargetWalletAmounts
286
+ IPolicy.PremiumInfo memory premiumWithTargetWalletAmounts
276
287
  )
277
288
  {
278
289
  // fees for product owner
279
- premium.productFeeAmount = AmountLib.toAmount(
280
- premium.productFeeFixAmount + premium.productFeeVarAmount);
290
+ premium.productFeeAmount = premium.productFeeFixAmount + premium.productFeeVarAmount;
281
291
 
282
292
  // fees for distribution owner + distributor commission
283
- premium.distributionFeeAndCommissionAmount = AmountLib.toAmount(
293
+ premium.distributionFeeAndCommissionAmount =
284
294
  premium.distributionFeeFixAmount + premium.distributionOwnerFeeVarAmount
285
- + premium.commissionAmount);
295
+ + premium.commissionAmount;
286
296
 
287
297
  // net premium + fees for pool owner + bundle owner
288
- premium.poolPremiumAndFeeAmount = AmountLib.toAmount(
289
- premium.netPremiumAmount
298
+ premium.poolPremiumAndFeeAmount = premium.netPremiumAmount
290
299
  + premium.poolFeeFixAmount + premium.poolFeeVarAmount
291
- + premium.bundleFeeFixAmount + premium.bundleFeeVarAmount);
300
+ + premium.bundleFeeFixAmount + premium.bundleFeeVarAmount;
292
301
 
293
302
  premiumWithTargetWalletAmounts = premium;
294
303
  }
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {PricingService} from "./PricingService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract PricingServiceManager is ProxyManager {
12
9
 
@@ -15,14 +12,14 @@ contract PricingServiceManager is ProxyManager {
15
12
  /// @dev initializes proxy manager with pricing service implementation and deploys instance
16
13
  constructor(
17
14
  address authority,
18
- address registryAddress,
15
+ address registry,
19
16
  bytes32 salt
20
17
  )
21
- ProxyManager(registryAddress)
22
18
  {
23
19
  PricingService pricingSrv = new PricingService{salt: salt}();
24
- bytes memory data = abi.encode(registryAddress, address(this), authority);
25
- IVersionable versionable = deployDetermenistic(
20
+ bytes memory data = abi.encode(authority, registry);
21
+ IVersionable versionable = initialize(
22
+ registry,
26
23
  address(pricingSrv),
27
24
  data,
28
25
  salt);