@etherisc/gif-next 3.0.0-24be7ed-702 → 3.0.0-2866c01-498

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 (449) hide show
  1. package/README.md +10 -1
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +44 -58
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +35 -39
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +16 -22
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +119 -119
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +145 -100
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +42 -29
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
  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 +75 -63
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +20 -114
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +2 -2
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +2 -96
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +207 -134
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +66 -66
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +2 -96
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +115 -42
  37. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  38. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +2 -2
  39. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +22 -97
  41. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +2 -2
  43. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +49 -129
  45. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +20 -20
  47. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +2 -2
  49. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.dbg.json +4 -0
  50. package/artifacts/contracts/examples/flight/FlightLib.sol/FlightLib.json +799 -0
  51. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.dbg.json +4 -0
  52. package/artifacts/contracts/examples/flight/FlightMessageVerifier.sol/FlightMessageVerifier.json +229 -0
  53. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.dbg.json +4 -0
  54. package/artifacts/contracts/examples/flight/FlightNft.sol/FlightNft.json +801 -0
  55. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  56. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1278 -0
  57. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +896 -0
  59. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  60. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1391 -0
  61. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +844 -0
  63. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  64. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2214 -0
  65. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  66. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +891 -0
  67. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.dbg.json +4 -0
  68. package/artifacts/contracts/examples/flight/FlightProductManager.sol/FlightProductManager.json +711 -0
  69. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  70. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +586 -0
  71. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  72. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  74. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +26 -120
  75. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  76. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +2 -2
  77. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  78. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +17 -92
  79. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  80. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +30 -105
  81. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  82. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +2 -2
  83. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  84. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +25 -100
  85. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  86. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +20 -20
  87. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +1 -1
  88. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +50 -0
  89. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +56 -56
  91. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +50 -0
  93. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  94. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +23 -23
  95. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  96. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +82 -9
  97. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  98. package/artifacts/contracts/instance/Instance.sol/Instance.json +33 -33
  99. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  100. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +197 -197
  101. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  102. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +2 -2
  103. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  104. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +236 -75
  105. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  106. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +125 -36
  107. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  108. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +32 -32
  109. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  110. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +164 -114
  111. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +1 -1
  112. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +134 -84
  113. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  114. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +61 -61
  115. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  116. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  117. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  118. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  119. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  120. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  121. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  122. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  123. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  124. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  125. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +2 -2
  126. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  127. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  128. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  129. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  130. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  131. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  132. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  133. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  134. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +6 -81
  135. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  136. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  137. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  138. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  139. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +2 -77
  140. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  141. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +20 -14
  142. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  143. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +2 -77
  144. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  145. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +58 -52
  146. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  147. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +41 -41
  148. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  149. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +5 -80
  150. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  151. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +2 -2
  152. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  153. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +94 -82
  154. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  155. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +53 -53
  156. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  157. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +36 -24
  158. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  159. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +5 -80
  160. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  161. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +62 -50
  162. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  163. package/artifacts/contracts/pool/Pool.sol/Pool.json +5 -80
  164. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +1 -1
  165. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +4 -9
  166. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  167. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +120 -108
  168. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +54 -54
  170. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  171. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +37 -37
  172. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  173. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +35 -35
  174. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  175. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +2 -77
  176. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  177. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +20 -20
  178. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  179. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +89 -83
  180. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  181. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +58 -58
  182. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  183. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +11 -11
  184. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  185. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +27 -21
  186. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  187. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +27 -15
  188. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  189. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +2 -2
  190. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  191. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +2 -77
  192. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  193. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +12 -12
  194. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  195. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +87 -75
  196. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +1 -1
  197. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +20 -12
  198. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +51 -51
  200. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  201. package/artifacts/contracts/product/PricingService.sol/PricingService.json +34 -34
  202. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  203. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +42 -42
  204. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  205. package/artifacts/contracts/product/Product.sol/Product.json +2 -77
  206. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  207. package/artifacts/contracts/product/RiskService.sol/RiskService.json +34 -34
  208. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  209. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +33 -33
  210. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  211. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +4 -4
  212. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  213. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +14 -8
  214. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  215. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +2 -2
  216. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  218. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/Registry.sol/Registry.json +55 -45
  220. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  221. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +188 -188
  222. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +1 -1
  223. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +2 -27
  224. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  225. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +8 -8
  226. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  227. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +28 -28
  228. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  229. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +205 -205
  230. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  232. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  233. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +116 -106
  234. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  235. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +19 -19
  236. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  237. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +21 -21
  238. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  239. package/artifacts/contracts/shared/Component.sol/Component.json +2 -77
  240. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  241. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +330 -114
  242. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  243. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -52
  244. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  245. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +2 -2
  246. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  247. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  248. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.dbg.json +4 -0
  250. package/artifacts/contracts/shared/IAuthorizedComponent.sol/IAuthorizedComponent.json +558 -0
  251. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  252. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +2 -77
  253. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  254. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +272 -56
  255. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  256. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +2 -77
  257. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  258. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  259. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +2 -2
  260. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  261. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  262. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +2 -2
  263. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  264. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  265. package/artifacts/contracts/shared/IService.sol/IService.json +2 -2
  266. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  267. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  268. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  269. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +2 -77
  270. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  271. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  272. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  273. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  274. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +4 -4
  275. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  276. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  277. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  278. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  279. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  280. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  281. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  282. package/artifacts/contracts/shared/Service.sol/Service.json +2 -2
  283. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  284. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +39 -66
  285. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  286. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +22 -49
  287. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  288. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +28 -28
  289. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  290. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +27 -77
  291. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  292. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +7 -207
  293. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +1 -1
  294. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  295. package/artifacts/contracts/staking/Staking.sol/Staking.json +75 -125
  296. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +1 -1
  297. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +2 -7
  298. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  299. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +44 -44
  300. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  301. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  302. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  303. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +21 -221
  304. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  305. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  306. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  307. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2 -2
  308. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +1 -1
  309. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +2 -7
  310. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  311. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -7
  312. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  313. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  314. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Amount.sol/AmountLib.json +2 -7
  316. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  318. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +2 -2
  320. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  322. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  324. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -7
  326. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  328. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  329. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  330. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  332. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  333. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  334. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +22 -25
  336. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  337. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  338. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  339. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +23 -4
  340. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  342. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.dbg.json +4 -0
  343. package/artifacts/contracts/type/RequestIdSet.sol/LibRequestIdSet.json +33 -0
  344. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  346. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  348. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +21 -2
  350. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  352. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  353. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  354. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  355. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  356. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  357. package/artifacts/contracts/type/String.sol/StrLib.json +21 -2
  358. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  359. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +36 -4
  360. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  361. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -7
  362. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  363. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  364. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  365. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +2 -2
  366. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  367. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  368. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +6 -6
  369. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  370. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  371. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  372. package/contracts/accounting/AccountingService.sol +17 -29
  373. package/contracts/accounting/IAccountingService.sol +7 -8
  374. package/contracts/authorization/AccessAdmin.sol +16 -33
  375. package/contracts/authorization/AccessAdminLib.sol +20 -3
  376. package/contracts/authorization/AccessManagerCloneable.sol +4 -0
  377. package/contracts/authorization/IAccessAdmin.sol +9 -8
  378. package/contracts/distribution/DistributionService.sol +24 -19
  379. package/contracts/distribution/IDistributionComponent.sol +0 -2
  380. package/contracts/distribution/IDistributionService.sol +8 -7
  381. package/contracts/examples/flight/FlightLib.sol +337 -0
  382. package/contracts/examples/flight/FlightMessageVerifier.sol +128 -0
  383. package/contracts/examples/flight/FlightNft.sol +234 -0
  384. package/contracts/examples/flight/FlightOracle.sol +226 -0
  385. package/contracts/examples/flight/FlightOracleAuthorization.sol +57 -0
  386. package/contracts/examples/flight/FlightPool.sol +89 -0
  387. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  388. package/contracts/examples/flight/FlightProduct.sol +687 -0
  389. package/contracts/examples/flight/FlightProductAuthorization.sol +70 -0
  390. package/contracts/examples/flight/FlightProductManager.sol +49 -0
  391. package/contracts/examples/flight/FlightUSD.sol +28 -0
  392. package/contracts/examples/flight/originalV1.sol +396 -0
  393. package/contracts/instance/BaseStore.sol +4 -0
  394. package/contracts/instance/BundleSet.sol +6 -6
  395. package/contracts/instance/IBaseStore.sol +8 -0
  396. package/contracts/instance/IInstance.sol +8 -8
  397. package/contracts/instance/IInstanceService.sol +6 -4
  398. package/contracts/instance/Instance.sol +1 -1
  399. package/contracts/instance/InstanceAdmin.sol +0 -1
  400. package/contracts/instance/InstanceReader.sol +44 -8
  401. package/contracts/instance/InstanceService.sol +8 -0
  402. package/contracts/instance/InstanceStore.sol +14 -14
  403. package/contracts/instance/ProductStore.sol +14 -14
  404. package/contracts/instance/RiskSet.sol +6 -6
  405. package/contracts/oracle/BasicOracle.sol +1 -0
  406. package/contracts/oracle/IOracleService.sol +17 -17
  407. package/contracts/oracle/Oracle.sol +2 -2
  408. package/contracts/oracle/OracleService.sol +1 -1
  409. package/contracts/pool/BundleService.sol +1 -1
  410. package/contracts/pool/IBundleService.sol +10 -10
  411. package/contracts/pool/IPoolComponent.sol +1 -1
  412. package/contracts/pool/IPoolService.sol +14 -14
  413. package/contracts/pool/PoolService.sol +2 -2
  414. package/contracts/product/BasicProductAuthorization.sol +3 -2
  415. package/contracts/product/ClaimService.sol +1 -1
  416. package/contracts/product/IApplicationService.sol +8 -8
  417. package/contracts/product/IClaimService.sol +9 -9
  418. package/contracts/product/IPolicyService.sol +7 -7
  419. package/contracts/product/IRiskService.sol +5 -5
  420. package/contracts/product/PolicyService.sol +1 -1
  421. package/contracts/product/PolicyServiceLib.sol +5 -3
  422. package/contracts/registry/ChainNft.sol +2 -2
  423. package/contracts/registry/IRegistry.sol +3 -3
  424. package/contracts/registry/Registry.sol +5 -3
  425. package/contracts/registry/RegistryAdmin.sol +7 -1
  426. package/contracts/registry/RegistryAuthorization.sol +0 -2
  427. package/contracts/registry/ReleaseAdmin.sol +12 -5
  428. package/contracts/registry/ReleaseRegistry.sol +6 -6
  429. package/contracts/registry/TokenRegistry.sol +3 -3
  430. package/contracts/shared/ComponentService.sol +38 -4
  431. package/contracts/shared/EcdsaChecker.sol +5 -0
  432. package/contracts/shared/IAuthorizedComponent.sol +15 -0
  433. package/contracts/shared/IComponent.sol +0 -4
  434. package/contracts/shared/IComponentService.sol +33 -11
  435. package/contracts/shared/IInstanceLinkedComponent.sol +2 -5
  436. package/contracts/shared/INftOwnable.sol +1 -1
  437. package/contracts/shared/InstanceLinkedComponent.sol +60 -19
  438. package/contracts/shared/TokenHandler.sol +5 -5
  439. package/contracts/staking/IStaking.sol +2 -0
  440. package/contracts/staking/IStakingService.sol +1 -10
  441. package/contracts/staking/Staking.sol +1 -0
  442. package/contracts/staking/StakingService.sol +1 -1
  443. package/contracts/type/ObjectType.sol +2 -31
  444. package/contracts/type/Referral.sol +6 -0
  445. package/contracts/type/RequestIdSet.sol +62 -0
  446. package/contracts/type/Seconds.sol +4 -0
  447. package/contracts/type/String.sol +30 -0
  448. package/contracts/type/Timestamp.sol +10 -1
  449. package/package.json +4 -3
@@ -7,16 +7,17 @@ import {IAccess} from "./IAccess.sol";
7
7
  import {IAccessAdmin} from "./IAccessAdmin.sol";
8
8
  import {IAuthorization} from "./IAuthorization.sol";
9
9
  import {IComponent} from "../shared/IComponent.sol";
10
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
10
+ import {IAuthorizedComponent} from "../shared/IAuthorizedComponent.sol";
11
11
  import {IRegistry} from "../registry/IRegistry.sol";
12
12
  import {IService} from "../shared/IService.sol";
13
13
  import {IServiceAuthorization} from "./IServiceAuthorization.sol";
14
14
 
15
+ import {AccessManagerCloneable} from "./AccessManagerCloneable.sol";
15
16
  import {BlocknumberLib} from "../type/Blocknumber.sol";
16
17
  import {ContractLib} from "../shared/ContractLib.sol";
17
18
  import {ObjectType} from "../type/ObjectType.sol";
18
19
  import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
19
- import {SelectorLib} from "../type/Selector.sol";
20
+ import {Selector, SelectorLib} from "../type/Selector.sol";
20
21
  import {Str, StrLib} from "../type/String.sol";
21
22
  import {TimestampLib} from "../type/Timestamp.sol";
22
23
  import {VersionPart, VersionPartLib} from "../type/Version.sol";
@@ -338,7 +339,7 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB
338
339
  checkIsRegistered(address(accessAdmin.getRegistry()), componentAddress, expectedType);
339
340
 
340
341
  VersionPart expecteRelease = accessAdmin.getRelease();
341
- IInstanceLinkedComponent component = IInstanceLinkedComponent(componentAddress);
342
+ IAuthorizedComponent component = IAuthorizedComponent(componentAddress);
342
343
  componentAuthorization = component.getAuthorization();
343
344
 
344
345
  checkAuthorization(
@@ -481,6 +482,22 @@ library AccessAdminLib { // ACCESS_ADMIN_LIB
481
482
  }
482
483
 
483
484
 
485
+ function getFunctionRoleId(
486
+ AccessManagerCloneable authority,
487
+ address target,
488
+ Selector selector
489
+ )
490
+ public
491
+ view
492
+ returns (RoleId functionRoleId)
493
+ {
494
+ return RoleIdLib.toRoleId(
495
+ authority.getTargetFunctionRole(
496
+ target,
497
+ selector.toBytes4()));
498
+ }
499
+
500
+
484
501
  function getServiceRoleId(
485
502
  address serviceAddress,
486
503
  IAccess.TargetType serviceTargetType
@@ -24,6 +24,8 @@ contract AccessManagerCloneable is
24
24
  error ErrorAccessManagerTargetAdminLocked(address target);
25
25
  error ErrorAccessManagerCallerAdminLocked(address caller);
26
26
 
27
+ event LogAccessManagerLocked(address indexed accessManager, bool indexed locked);
28
+
27
29
  VersionPart private _release;
28
30
  bool private _isLocked;
29
31
 
@@ -39,6 +41,7 @@ contract AccessManagerCloneable is
39
41
 
40
42
  function initialize(address admin)
41
43
  public
44
+ override
42
45
  initializer()
43
46
  {
44
47
  __ERC165_init();
@@ -94,6 +97,7 @@ contract AccessManagerCloneable is
94
97
  onlyAdminRole()
95
98
  {
96
99
  _isLocked = locked;
100
+ emit LogAccessManagerLocked(address(this), locked);
97
101
  }
98
102
 
99
103
 
@@ -12,6 +12,7 @@ import {Blocknumber} from "../type/Blocknumber.sol";
12
12
  import {NftId} from "../type/NftId.sol";
13
13
  import {ObjectType} from "../type/ObjectType.sol";
14
14
  import {RoleId} from "../type/RoleId.sol";
15
+ import {Selector} from "../type/Selector.sol";
15
16
  import {Str} from "../type/String.sol";
16
17
  import {VersionPart} from "../type/Version.sol";
17
18
 
@@ -24,14 +25,14 @@ interface IAccessAdmin is
24
25
  {
25
26
 
26
27
  // roles, targets and functions
27
- event LogAccessAdminRoleCreated(string admin, RoleId roleId, TargetType targetType, RoleId roleAdminId, string name);
28
- event LogAccessAdminTargetCreated(string admin, string name, bool managed, address target, RoleId roleId);
29
-
30
- event LogAccessAdminRoleActivatedSet(string admin, RoleId roleId, bool active, Blocknumber lastUpdateIn);
31
- event LogAccessAdminRoleGranted(string admin, address account, string roleName);
32
- event LogAccessAdminRoleRevoked(string admin, address account, string roleName);
33
- event LogAccessAdminTargetLockedSet(string admin, address target, bool locked, Blocknumber lastUpdateIn);
34
- event LogAccessAdminFunctionGranted(string admin, address target, string func, Blocknumber lastUpdateIn);
28
+ event LogAccessAdminRoleCreated(RoleId indexed roleId, RoleId indexed roleAdminId, TargetType indexed targetType, string name, string admin);
29
+ event LogAccessAdminTargetCreated(address indexed target, RoleId indexed roleId, bool indexed managed, string name, string admin);
30
+
31
+ event LogAccessAdminRoleActivatedSet(RoleId indexed roleId, bool indexed active, string admin, Blocknumber indexed lastUpdateIn);
32
+ event LogAccessAdminRoleGranted(address indexed account, string roleName, string admin);
33
+ event LogAccessAdminRoleRevoked(address indexed account, string roleName, string admin);
34
+ event LogAccessAdminTargetLockedSet(address indexed target, bool indexed locked, string admin, Blocknumber indexed lastUpdateIn);
35
+ event LogAccessAdminFunctionGranted(address indexed target, Selector indexed selector, RoleId indexed roleId, string func, string admin, Blocknumber lastUpdateIn);
35
36
 
36
37
  // only deployer modifier
37
38
  error ErrorAccessAdminNotDeployer();
@@ -98,21 +98,24 @@ contract DistributionService is
98
98
  }
99
99
 
100
100
  distributorType = DistributorTypeLib.toDistributorType(distributionNftId, name);
101
- IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
102
- name: name,
103
- distributionNftId: distributionNftId,
104
- minDiscountPercentage: minDiscountPercentage,
105
- maxDiscountPercentage: maxDiscountPercentage,
106
- commissionPercentage: commissionPercentage,
107
- maxReferralCount: maxReferralCount,
108
- maxReferralLifetime: maxReferralLifetime,
109
- allowSelfReferrals: allowSelfReferrals,
110
- allowRenewals: allowRenewals,
111
- data: data});
112
-
113
- instance.getInstanceStore().createDistributorType(distributorType, info);
101
+
102
+ {
103
+ IDistribution.DistributorTypeInfo memory info = IDistribution.DistributorTypeInfo({
104
+ name: name,
105
+ distributionNftId: distributionNftId,
106
+ minDiscountPercentage: minDiscountPercentage,
107
+ maxDiscountPercentage: maxDiscountPercentage,
108
+ commissionPercentage: commissionPercentage,
109
+ maxReferralCount: maxReferralCount,
110
+ maxReferralLifetime: maxReferralLifetime,
111
+ allowSelfReferrals: allowSelfReferrals,
112
+ allowRenewals: allowRenewals,
113
+ data: data});
114
+
115
+ instance.getInstanceStore().createDistributorType(distributorType, info);
116
+ }
114
117
 
115
- emit LogDistributionServiceDistributorTypeCreated(distributionNftId, name);
118
+ emit LogDistributionServiceDistributorTypeCreated(distributionNftId, distributorType, name, commissionPercentage);
116
119
  }
117
120
 
118
121
 
@@ -148,7 +151,7 @@ contract DistributionService is
148
151
 
149
152
  instance.getInstanceStore().createDistributor(distributorNftId, info);
150
153
 
151
- emit LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributorType, distributor);
154
+ emit LogDistributionServiceDistributorCreated(distributionNftId, distributorNftId, distributor, distributorType);
152
155
  }
153
156
 
154
157
  function changeDistributorType(
@@ -236,7 +239,7 @@ contract DistributionService is
236
239
 
237
240
  instance.getInstanceStore().createReferral(referralId, info);
238
241
 
239
- emit LogDistributionServiceReferralCreated(distributionNftId, distributorNftId, referralId, code);
242
+ emit LogDistributionServiceReferralCreated(distributorNftId, referralId, code, discountPercentage, maxReferrals, expiryAt);
240
243
  }
241
244
  }
242
245
 
@@ -258,7 +261,7 @@ contract DistributionService is
258
261
  referralInfo.usedReferrals += 1;
259
262
  instance.getInstanceStore().updateReferral(referralId, referralInfo, KEEP_STATE());
260
263
 
261
- emit LogDistributionServiceReferralProcessed(distributionNftId, referralInfo.distributorNftId, referralId, referralInfo.usedReferrals);
264
+ emit LogDistributionServiceReferralProcessed(referralInfo.distributorNftId, referralId, referralInfo.usedReferrals);
262
265
  }
263
266
  }
264
267
 
@@ -295,12 +298,14 @@ contract DistributionService is
295
298
  IDistribution.DistributorInfo memory distributorInfo = reader.getDistributorInfo(referralInfo.distributorNftId);
296
299
  distributorInfo.numPoliciesSold += 1;
297
300
  store.updateDistributor(referralInfo.distributorNftId, distributorInfo, KEEP_STATE());
301
+ emit LogDistributionServiceSaleProcessedWithReferral(distributionNftId, referralInfo.distributorNftId, referralId, distributorInfo.numPoliciesSold, premium.premiumAmount, distributionOwnerFee, commissionAmount);
298
302
  } else {
299
303
  // increase distribution balance by distribution owner fee
300
304
  _accountingService.increaseDistributionBalance(store, distributionNftId, AmountLib.zero(), distributionOwnerFee);
305
+ emit LogDistributionServiceSaleProcessed(distributionNftId, premium.premiumAmount, distributionOwnerFee);
301
306
  }
302
307
 
303
- emit LogDistributionServiceSaleProcessed(distributionNftId, referralId);
308
+
304
309
  }
305
310
 
306
311
  /// @inheritdoc IDistributionService
@@ -341,7 +346,7 @@ contract DistributionService is
341
346
  // transfer amount to distributor
342
347
  {
343
348
  address distributor = getRegistry().ownerOf(distributorNftId);
344
- emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, address(distributionInfo.tokenHandler.TOKEN()), withdrawnAmount);
349
+ emit LogDistributionServiceCommissionWithdrawn(distributorNftId, distributor, withdrawnAmount, address(distributionInfo.tokenHandler.TOKEN()));
345
350
  distributionInfo.tokenHandler.pushToken(distributor, withdrawnAmount);
346
351
  }
347
352
  }
@@ -11,8 +11,6 @@ import {UFixed} from "../type/UFixed.sol";
11
11
 
12
12
  interface IDistributionComponent is IInstanceLinkedComponent {
13
13
 
14
- event LogDistributorUpdated(address to, address operator);
15
-
16
14
  function getDiscountPercentage(
17
15
  string memory referralCode
18
16
  ) external view returns (UFixed discountPercentage, ReferralStatus status);
@@ -39,13 +39,14 @@ interface IDistributionService is IService {
39
39
  error ErrorDistributionServiceInvalidFeeTransferred(Amount transferredDistributionFeeAmount, Amount expectedDistributionFeeAmount);
40
40
  error ErrorDistributionServiceReferralDistributionMismatch(ReferralId referralId, NftId referralDistributionNft, NftId distributionNftId);
41
41
 
42
- event LogDistributionServiceCommissionWithdrawn(NftId distributorNftId, address recipient, address tokenAddress, Amount amount);
43
- event LogDistributionServiceDistributorTypeCreated(NftId distributionNftId, string name);
44
- event LogDistributionServiceDistributorCreated(NftId distributionNftId, NftId distributorNftId, DistributorType distributorType, address distributor);
45
- event LogDistributionServiceDistributorTypeChanged(NftId distributorNftId, DistributorType oldDistributorType, DistributorType newDistributorType);
46
- event LogDistributionServiceReferralCreated(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, string code);
47
- event LogDistributionServiceReferralProcessed(NftId distributionNftId, NftId distributorNftId, ReferralId referralId, uint32 usedReferrals);
48
- event LogDistributionServiceSaleProcessed(NftId distributionNftId, ReferralId referralId);
42
+ event LogDistributionServiceCommissionWithdrawn(NftId indexed distributorNftId, address indexed recipient, Amount indexed amount, address tokenAddress);
43
+ event LogDistributionServiceDistributorTypeCreated(NftId indexed distributionNftId, DistributorType indexed distributorType, string name, UFixed indexed commissionPercentage);
44
+ event LogDistributionServiceDistributorCreated(NftId indexed distributionNftId, NftId indexed distributorNftId, address indexed distributor, DistributorType distributorType);
45
+ event LogDistributionServiceDistributorTypeChanged(NftId indexed distributorNftId, DistributorType indexed oldDistributorType, DistributorType indexed newDistributorType);
46
+ event LogDistributionServiceReferralCreated(NftId indexed distributorNftId, ReferralId indexed referralId, string code, UFixed indexed discountPercentage, uint32 maxReferrals, Timestamp expiryAt);
47
+ event LogDistributionServiceReferralProcessed(NftId indexed distributorNftId, ReferralId indexed referralId, uint32 indexed usedReferrals);
48
+ event LogDistributionServiceSaleProcessed(NftId indexed distributionNftId, Amount indexed premium, Amount indexed distributionOwnerFee);
49
+ event LogDistributionServiceSaleProcessedWithReferral(NftId indexed distributionNftId, NftId indexed distributorNftId, ReferralId indexed referralId, uint32 numPoliciesSold, Amount premium, Amount distributionOwnerFee, Amount commissionAmount);
49
50
 
50
51
  function createDistributorType(
51
52
  string memory name,
@@ -0,0 +1,337 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IPolicy} from "../../instance/module/IPolicy.sol";
5
+ import {IPolicyService} from "../../product/IPolicyService.sol";
6
+
7
+ import {Amount, AmountLib} from "../../type/Amount.sol";
8
+ import {FlightMessageVerifier} from "./FlightMessageVerifier.sol";
9
+ import {FlightProduct} from "./FlightProduct.sol";
10
+ import {InstanceReader} from "../../instance/InstanceReader.sol";
11
+ import {NftId} from "../../type/NftId.sol";
12
+ import {RequestId} from "../../type/RequestId.sol";
13
+ import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
14
+ import {Seconds} from "../../type/Seconds.sol";
15
+ import {StateId} from "../../type/StateId.sol";
16
+ import {Str} from "../../type/String.sol";
17
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
18
+
19
+
20
+ library FlightLib {
21
+
22
+ event LogFlightProductErrorUnprocessableStatus(RequestId requestId, RiskId riskId, bytes1 status);
23
+ event LogFlightProductErrorUnexpectedStatus(RequestId requestId, RiskId riskId, bytes1 status, int256 delayMinutes);
24
+
25
+ error ErrorFlightProductRiskInvalid(RiskId riskId);
26
+ error ErrorFlightProductPremiumAmountTooSmall(Amount premiumAmount, Amount minPremium);
27
+ error ErrorFlightProductPremiumAmountTooLarge(Amount premiumAmount, Amount maxPremium);
28
+ error ErrorFlightProductArrivalBeforeDepartureTime(Timestamp departureTime, Timestamp arrivalTime);
29
+ error ErrorFlightProductArrivalAfterMaxFlightDuration(Timestamp arrivalTime, Timestamp maxArrivalTime, Seconds maxDuration);
30
+ error ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds minTimeBeforeDeparture);
31
+ error ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(Timestamp departureTime, Timestamp now, Seconds maxTimeBeforeDeparture);
32
+ error ErrorFlightProductNotEnoughObservations(uint256 observations, uint256 minObservations);
33
+ error ErrorFlightProductClusterRisk(Amount totalSumInsured, Amount maxTotalPayout);
34
+
35
+ function checkApplicationData(
36
+ FlightProduct flightProduct,
37
+ Str flightData,
38
+ Timestamp departureTime,
39
+ Timestamp arrivalTime,
40
+ Amount premiumAmount
41
+ )
42
+ public
43
+ view
44
+ {
45
+ _checkApplicationData(flightProduct, premiumAmount, arrivalTime, departureTime);
46
+ }
47
+
48
+
49
+ function _checkApplicationData(
50
+ FlightProduct flightProduct,
51
+ Amount premiumAmount,
52
+ Timestamp arrivalTime,
53
+ Timestamp departureTime
54
+ )
55
+ internal
56
+ view
57
+ {
58
+ bool testMode = flightProduct.isTestMode();
59
+
60
+ // solhint-disable
61
+ if (premiumAmount < flightProduct.MIN_PREMIUM()) {
62
+ revert ErrorFlightProductPremiumAmountTooSmall(premiumAmount, flightProduct.MIN_PREMIUM());
63
+ }
64
+ if (premiumAmount > flightProduct.MAX_PREMIUM()) {
65
+ revert ErrorFlightProductPremiumAmountTooLarge(premiumAmount, flightProduct.MAX_PREMIUM());
66
+ }
67
+ if (arrivalTime <= departureTime) {
68
+ revert ErrorFlightProductArrivalBeforeDepartureTime(departureTime, arrivalTime);
69
+ }
70
+ if (arrivalTime > departureTime.addSeconds(flightProduct.MAX_FLIGHT_DURATION())) {
71
+ revert ErrorFlightProductArrivalAfterMaxFlightDuration(arrivalTime, departureTime, flightProduct.MAX_FLIGHT_DURATION());
72
+ }
73
+
74
+ // test mode allows the creation for policies that are outside restricted policy creation times
75
+ if (!testMode && departureTime < TimestampLib.current().addSeconds(flightProduct.MIN_TIME_BEFORE_DEPARTURE())) {
76
+ revert ErrorFlightProductDepartureBeforeMinTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MIN_TIME_BEFORE_DEPARTURE());
77
+ }
78
+ if (!testMode && departureTime > TimestampLib.current().addSeconds(flightProduct.MAX_TIME_BEFORE_DEPARTURE())) {
79
+ revert ErrorFlightProductDepartureAfterMaxTimeBeforeDeparture(departureTime, TimestampLib.current(), flightProduct.MAX_TIME_BEFORE_DEPARTURE());
80
+ }
81
+ // solhint-enable
82
+ }
83
+
84
+
85
+ function checkClusterRisk(
86
+ Amount sumOfSumInsuredAmounts,
87
+ Amount sumInsuredAmount,
88
+ Amount maxTotalPayout
89
+ )
90
+ public
91
+ pure
92
+ {
93
+ if (sumOfSumInsuredAmounts + sumInsuredAmount > maxTotalPayout) {
94
+ revert ErrorFlightProductClusterRisk(sumOfSumInsuredAmounts + sumInsuredAmount, maxTotalPayout);
95
+ }
96
+ }
97
+
98
+
99
+ /// @dev calculates payout option based on flight status and delay minutes.
100
+ /// Is not a view function as it emits log evens in case of unexpected status.
101
+ function checkAndGetPayoutOption(
102
+ RequestId requestId,
103
+ RiskId riskId,
104
+ bytes1 status,
105
+ int256 delayMinutes
106
+ )
107
+ public
108
+ returns (uint8 payoutOption)
109
+ {
110
+ // default: no payout
111
+ payoutOption = type(uint8).max;
112
+
113
+ // check status
114
+ if (status != "L" && status != "A" && status != "C" && status != "D") {
115
+ emit LogFlightProductErrorUnprocessableStatus(requestId, riskId, status);
116
+ return payoutOption;
117
+ }
118
+
119
+ if (status == "A") {
120
+ // todo: active, reschedule oracle call + 45 min
121
+ emit LogFlightProductErrorUnexpectedStatus(requestId, riskId, status, delayMinutes);
122
+ return payoutOption;
123
+ }
124
+
125
+ // trigger payout if applicable
126
+ if (status == "C") { payoutOption = 3; }
127
+ else if (status == "D") { payoutOption = 4; }
128
+ else if (delayMinutes >= 15 && delayMinutes < 30) { payoutOption = 0; }
129
+ else if (delayMinutes >= 30 && delayMinutes < 45) { payoutOption = 1; }
130
+ else if (delayMinutes >= 45) { payoutOption = 2; }
131
+ }
132
+
133
+
134
+ function calculateWeight(
135
+ FlightProduct flightProduct,
136
+ uint256[6] memory statistics
137
+ )
138
+ public
139
+ view
140
+ returns (uint256 weight)
141
+ {
142
+ // check we have enough observations
143
+ if (statistics[0] < flightProduct.MIN_OBSERVATIONS()) {
144
+ revert ErrorFlightProductNotEnoughObservations(statistics[0], flightProduct.MIN_OBSERVATIONS());
145
+ }
146
+
147
+ weight = 0;
148
+ for (uint256 i = 1; i < 6; i++) {
149
+ weight += flightProduct.WEIGHT_PATTERN(i) * statistics[i] * 10000 / statistics[0];
150
+ }
151
+
152
+ // To avoid div0 in the payout section, we have to make a minimal assumption on weight
153
+ if (weight == 0) {
154
+ weight = 100000 / statistics[0];
155
+ }
156
+
157
+ // TODO comment on intended effect
158
+ weight = (weight * (100 + flightProduct.MARGIN_PERCENT())) / 100;
159
+ }
160
+
161
+
162
+ // REMARK: each flight may get different payouts depending on the latest statics
163
+ function calculatePayoutAmounts(
164
+ FlightProduct flightProduct,
165
+ Amount premium,
166
+ uint256[6] memory statistics
167
+ )
168
+ public
169
+ view
170
+ returns (
171
+ uint256 weight,
172
+ Amount[5] memory payoutAmounts,
173
+ Amount sumInsuredAmount // simply the max of payoutAmounts
174
+ )
175
+ {
176
+ if (premium < flightProduct.MIN_PREMIUM()) {
177
+ revert ErrorFlightProductPremiumAmountTooSmall(premium, flightProduct.MIN_PREMIUM());
178
+ }
179
+ if (premium > flightProduct.MAX_PREMIUM()) {
180
+ revert ErrorFlightProductPremiumAmountTooLarge(premium, flightProduct.MAX_PREMIUM());
181
+ }
182
+
183
+ sumInsuredAmount = AmountLib.zero();
184
+ weight = calculateWeight(flightProduct, statistics);
185
+
186
+ for (uint256 i = 0; i < 5; i++) {
187
+ Amount payoutAmount = AmountLib.toAmount(
188
+ premium.toInt() * flightProduct.WEIGHT_PATTERN(i + 1) * 10000 / weight);
189
+
190
+ // cap payout and update sum insured if applicable
191
+ if (payoutAmount > flightProduct.MAX_PAYOUT()) { payoutAmount = flightProduct.MAX_PAYOUT(); }
192
+ if (payoutAmount > sumInsuredAmount) { sumInsuredAmount = payoutAmount; }
193
+
194
+ payoutAmounts[i] = payoutAmount;
195
+ }
196
+ }
197
+
198
+
199
+ function getPayoutOption(
200
+ InstanceReader reader,
201
+ NftId productNftId,
202
+ RiskId riskId
203
+ )
204
+ public
205
+ view
206
+ returns (
207
+ bool exists,
208
+ bool statusAvailable,
209
+ uint8 payoutOption
210
+ )
211
+ {
212
+ FlightProduct.FlightRisk memory flightRisk;
213
+ (exists, flightRisk) = getFlightRisk(
214
+ reader,
215
+ productNftId,
216
+ riskId,
217
+ false);
218
+
219
+ statusAvailable = flightRisk.statusUpdatedAt.gtz();
220
+ payoutOption = flightRisk.payoutOption;
221
+ }
222
+
223
+
224
+ function getPayoutAmount(
225
+ bytes memory applicationData,
226
+ uint8 payoutOption
227
+ )
228
+ public
229
+ pure
230
+ returns (Amount payoutAmount)
231
+ {
232
+ if (payoutOption == type(uint8).max) {
233
+ return AmountLib.zero();
234
+ }
235
+
236
+ // retrieve payout amounts from application data
237
+ (, Amount[5] memory payoutAmounts) = abi.decode(
238
+ applicationData, (Amount, Amount[5]));
239
+
240
+ // get payout amount for selected option
241
+ payoutAmount = payoutAmounts[payoutOption];
242
+ }
243
+
244
+
245
+ function getFlightRisk(
246
+ InstanceReader reader,
247
+ NftId productNftId,
248
+ Str flightData,
249
+ Timestamp departureTime,
250
+ string memory departureTimeLocal,
251
+ Timestamp arrivalTime,
252
+ string memory arrivalTimeLocal
253
+ )
254
+ public
255
+ view
256
+ returns (
257
+ RiskId riskId,
258
+ bool exists,
259
+ FlightProduct.FlightRisk memory flightRisk
260
+ )
261
+ {
262
+ riskId = getRiskId(productNftId, flightData);
263
+ (exists, flightRisk) = getFlightRisk(reader, productNftId, riskId, false);
264
+
265
+ // create new risk if not existing
266
+ if (!exists) {
267
+ flightRisk = FlightProduct.FlightRisk({
268
+ flightData: flightData,
269
+ departureTime: departureTime,
270
+ departureTimeLocal: departureTimeLocal,
271
+ arrivalTime: arrivalTime,
272
+ arrivalTimeLocal: arrivalTimeLocal,
273
+ sumOfSumInsuredAmounts: AmountLib.toAmount(0),
274
+ status: bytes1(0),
275
+ delayMinutes: 0,
276
+ payoutOption: uint8(0),
277
+ statusUpdatedAt: TimestampLib.zero()});
278
+ }
279
+ }
280
+
281
+
282
+ function getFlightRisk(
283
+ InstanceReader reader,
284
+ NftId productNftId,
285
+ RiskId riskId,
286
+ bool requireRiskExists
287
+ )
288
+ public
289
+ view
290
+ returns (
291
+ bool exists,
292
+ FlightProduct.FlightRisk memory flightRisk
293
+ )
294
+ {
295
+ // check if risk exists
296
+ exists = reader.isProductRisk(productNftId, riskId);
297
+
298
+ if (!exists && requireRiskExists) {
299
+ revert ErrorFlightProductRiskInvalid(riskId);
300
+ }
301
+
302
+ // get risk data if risk exists
303
+ if (exists) {
304
+ flightRisk = abi.decode(
305
+ reader.getRiskInfo(riskId).data, (FlightProduct.FlightRisk));
306
+ }
307
+ }
308
+
309
+
310
+ function getRiskId(
311
+ NftId productNftId,
312
+ Str flightData
313
+ )
314
+ public
315
+ view
316
+ returns (RiskId riskId)
317
+ {
318
+ bytes32 riskKey = getRiskKey(flightData);
319
+ riskId = getRiskId(productNftId, riskKey);
320
+ }
321
+
322
+
323
+ function getRiskKey(
324
+ Str flightData
325
+ )
326
+ internal
327
+ pure
328
+ returns (bytes32 riskKey)
329
+ {
330
+ return keccak256(abi.encode(flightData));
331
+ }
332
+
333
+
334
+ function getRiskId(NftId productNftId, bytes32 riskKey) internal view returns (RiskId riskId) {
335
+ return RiskIdLib.toRiskId(productNftId, riskKey);
336
+ }
337
+ }