@etherisc/gif-next 0.0.2-eb1b869-461 → 0.0.2-eb7261f-060

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 (603) hide show
  1. package/README.md +354 -19
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +300 -1114
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +769 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +462 -1222
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1220 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +758 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3598 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +137 -0
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  43. package/artifacts/contracts/instance/{access/IAccess.sol/IAccess.json → module/IBundle.sol/IBundle.json} +2 -2
  44. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  46. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/instance/{component/IComponent.sol/IComponent.json → module/IDistribution.sol/IDistribution.json} +2 -2
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  49. package/artifacts/contracts/instance/{policy → module}/IPolicy.sol/IPolicy.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  51. package/artifacts/contracts/instance/{pool/IPoolModule.sol/IPool.json → module/IRisk.sol/IRisk.json} +2 -2
  52. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  53. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  54. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  55. package/artifacts/contracts/{instance/treasury/ITreasury.sol/ITreasury.json → oracle/IOracle.sol/IOracle.json} +2 -2
  56. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  58. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  60. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  62. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  64. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  66. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  68. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  70. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  72. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  74. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  76. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  77. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  78. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  80. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  82. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  84. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  86. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  88. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  90. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  91. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +512 -0
  92. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  94. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  96. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  97. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  98. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  99. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  100. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  101. package/artifacts/contracts/product/IProductService.sol/IProductService.json +400 -0
  102. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  104. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  106. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  108. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  110. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  111. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  112. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  114. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +252 -2
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +744 -26
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -0
  122. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +129 -0
  124. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  125. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  126. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  127. package/artifacts/contracts/registry/Registry.sol/Registry.json +1026 -52
  128. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  129. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  130. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  132. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  134. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1218 -0
  136. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +171 -0
  138. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +187 -0
  140. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  141. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  142. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  144. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  146. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  148. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  150. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  152. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  154. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  155. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  156. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  157. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  158. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  159. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  160. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  161. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  162. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +4 -0
  163. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  164. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  166. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  168. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  177. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +468 -0
  178. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  179. package/artifacts/contracts/{instance/lifecycle/ILifecycle.sol/ILifecycleModule.json → shared/ILifecycle.sol/ILifecycle.json} +10 -77
  180. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  181. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  182. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  184. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +181 -0
  186. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  187. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  190. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +55 -0
  192. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  193. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  194. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  195. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  196. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  197. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  198. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  199. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  200. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  201. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  202. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  203. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  204. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  205. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  206. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  207. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  208. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +353 -0
  210. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  211. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  212. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  213. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  214. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  215. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  216. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  217. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  218. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +4 -0
  219. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +78 -0
  220. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  221. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  222. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  223. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  224. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  226. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  228. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  230. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  232. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  234. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  236. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2261 -0
  238. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  239. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  240. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  241. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  242. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  244. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  246. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  248. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  250. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  252. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  254. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  256. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  257. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  258. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  260. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  262. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  264. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  266. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  268. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  270. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  272. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  274. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  276. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  278. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  280. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  282. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  284. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +479 -0
  286. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  288. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  290. package/contracts/distribution/Distribution.sol +261 -0
  291. package/contracts/distribution/DistributionService.sol +297 -0
  292. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  293. package/contracts/distribution/IDistributionComponent.sol +66 -0
  294. package/contracts/distribution/IDistributionService.sol +81 -0
  295. package/contracts/instance/BundleManager.sol +126 -0
  296. package/contracts/instance/IInstance.sol +84 -22
  297. package/contracts/instance/IInstanceService.sol +97 -0
  298. package/contracts/instance/Instance.sol +244 -53
  299. package/contracts/instance/InstanceAdmin.sol +331 -0
  300. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  301. package/contracts/instance/InstanceReader.sol +392 -0
  302. package/contracts/instance/InstanceService.sol +439 -0
  303. package/contracts/instance/InstanceServiceManager.sol +44 -0
  304. package/contracts/instance/InstanceStore.sol +269 -0
  305. package/contracts/instance/base/BalanceStore.sol +123 -0
  306. package/contracts/instance/base/Cloneable.sol +28 -0
  307. package/contracts/instance/base/ObjectCounter.sol +21 -0
  308. package/contracts/instance/base/ObjectManager.sol +80 -0
  309. package/contracts/instance/module/IAccess.sol +46 -0
  310. package/contracts/instance/module/IBundle.sol +20 -0
  311. package/contracts/instance/module/IComponents.sol +52 -0
  312. package/contracts/instance/module/IDistribution.sol +42 -0
  313. package/contracts/instance/module/IPolicy.sol +84 -0
  314. package/contracts/instance/module/IRisk.sol +11 -0
  315. package/contracts/mock/Dip.sol +1 -1
  316. package/contracts/oracle/IOracle.sol +20 -0
  317. package/contracts/oracle/IOracleComponent.sol +32 -0
  318. package/contracts/oracle/IOracleService.sol +65 -0
  319. package/contracts/oracle/Oracle.sol +145 -0
  320. package/contracts/oracle/OracleService.sol +278 -0
  321. package/contracts/oracle/OracleServiceManager.sol +42 -0
  322. package/contracts/pool/BundleService.sol +296 -0
  323. package/contracts/pool/BundleServiceManager.sol +42 -0
  324. package/contracts/pool/IBundleService.sol +106 -0
  325. package/contracts/pool/IPoolComponent.sol +112 -0
  326. package/contracts/pool/IPoolService.sol +150 -0
  327. package/contracts/pool/Pool.sol +299 -0
  328. package/contracts/pool/PoolService.sol +452 -0
  329. package/contracts/pool/PoolServiceManager.sol +42 -0
  330. package/contracts/product/ApplicationService.sol +254 -0
  331. package/contracts/product/ApplicationServiceManager.sol +38 -0
  332. package/contracts/product/ClaimService.sol +442 -0
  333. package/contracts/product/ClaimServiceManager.sol +38 -0
  334. package/contracts/product/IApplicationService.sol +62 -0
  335. package/contracts/product/IClaimService.sol +99 -0
  336. package/contracts/product/IPolicyService.sol +78 -0
  337. package/contracts/product/IPricingService.sol +39 -0
  338. package/contracts/product/IProductComponent.sol +42 -0
  339. package/contracts/product/IProductService.sol +33 -0
  340. package/contracts/product/PolicyService.sol +475 -0
  341. package/contracts/product/PolicyServiceManager.sol +42 -0
  342. package/contracts/product/PricingService.sol +300 -0
  343. package/contracts/product/PricingServiceManager.sol +42 -0
  344. package/contracts/product/Product.sol +377 -0
  345. package/contracts/product/ProductService.sol +124 -0
  346. package/contracts/product/ProductServiceManager.sol +42 -0
  347. package/contracts/registry/ChainNft.sol +144 -62
  348. package/contracts/registry/IRegistry.sol +99 -42
  349. package/contracts/registry/IRegistryService.sol +69 -0
  350. package/contracts/registry/IServiceAuthorization.sol +35 -0
  351. package/contracts/registry/ITransferInterceptor.sol +7 -0
  352. package/contracts/registry/Registry.sol +527 -127
  353. package/contracts/registry/RegistryAdmin.sol +333 -0
  354. package/contracts/registry/RegistryService.sol +266 -0
  355. package/contracts/registry/RegistryServiceManager.sol +53 -0
  356. package/contracts/registry/ReleaseManager.sol +527 -0
  357. package/contracts/registry/ServiceAuthorization.sol +86 -0
  358. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  359. package/contracts/registry/TokenRegistry.sol +315 -0
  360. package/contracts/shared/AccessAdmin.sol +759 -0
  361. package/contracts/shared/AccessManagerCustom.sol +741 -0
  362. package/contracts/shared/AccessManagerExtended.sol +481 -0
  363. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  364. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  365. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  366. package/contracts/shared/Component.sol +281 -0
  367. package/contracts/shared/ComponentService.sol +617 -0
  368. package/contracts/shared/ComponentServiceManager.sol +35 -0
  369. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  370. package/contracts/shared/ERC165.sol +27 -0
  371. package/contracts/shared/IAccessAdmin.sol +168 -0
  372. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  373. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  374. package/contracts/shared/IComponent.sol +70 -0
  375. package/contracts/shared/IComponentService.sol +102 -0
  376. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  377. package/contracts/shared/IKeyValueStore.sol +53 -0
  378. package/contracts/shared/ILifecycle.sol +30 -0
  379. package/contracts/shared/INftOwnable.sol +23 -0
  380. package/contracts/shared/IPolicyHolder.sol +45 -0
  381. package/contracts/shared/IRegisterable.sol +15 -0
  382. package/contracts/shared/IRegistryLinked.sol +11 -0
  383. package/contracts/shared/IService.sol +25 -0
  384. package/contracts/shared/IVersionable.sol +53 -0
  385. package/contracts/shared/InitializableCustom.sol +177 -0
  386. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  387. package/contracts/shared/KeyValueStore.sol +127 -0
  388. package/contracts/shared/Lifecycle.sol +130 -0
  389. package/contracts/shared/NftIdSetManager.sol +65 -0
  390. package/contracts/shared/NftOwnable.sol +107 -0
  391. package/contracts/shared/PolicyHolder.sol +102 -0
  392. package/contracts/shared/ProxyManager.sol +199 -0
  393. package/contracts/shared/Registerable.sol +75 -0
  394. package/contracts/shared/RegistryLinked.sol +43 -0
  395. package/contracts/shared/Service.sol +83 -0
  396. package/contracts/shared/TokenHandler.sol +58 -0
  397. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  398. package/contracts/shared/Versionable.sol +59 -0
  399. package/contracts/staking/IStaking.sol +168 -0
  400. package/contracts/staking/IStakingService.sol +153 -0
  401. package/contracts/staking/StakeManagerLib.sol +231 -0
  402. package/contracts/staking/Staking.sol +513 -0
  403. package/contracts/staking/StakingManager.sol +54 -0
  404. package/contracts/staking/StakingReader.sol +187 -0
  405. package/contracts/staking/StakingService.sol +411 -0
  406. package/contracts/staking/StakingServiceManager.sol +44 -0
  407. package/contracts/staking/StakingStore.sol +613 -0
  408. package/contracts/staking/TargetManagerLib.sol +207 -0
  409. package/contracts/type/AddressSet.sol +58 -0
  410. package/contracts/type/Amount.sol +128 -0
  411. package/contracts/{types → type}/Blocknumber.sol +21 -3
  412. package/contracts/type/ClaimId.sol +75 -0
  413. package/contracts/type/DistributorType.sol +55 -0
  414. package/contracts/type/Fee.sol +66 -0
  415. package/contracts/type/Key32.sol +50 -0
  416. package/contracts/type/NftId.sol +78 -0
  417. package/contracts/type/NftIdSet.sol +62 -0
  418. package/contracts/type/ObjectType.sol +241 -0
  419. package/contracts/type/PayoutId.sol +82 -0
  420. package/contracts/type/Referral.sol +89 -0
  421. package/contracts/type/RequestId.sol +75 -0
  422. package/contracts/type/RiskId.sol +43 -0
  423. package/contracts/type/RoleId.sol +201 -0
  424. package/contracts/type/Seconds.sol +81 -0
  425. package/contracts/type/Selector.sol +102 -0
  426. package/contracts/{types → type}/StateId.sol +50 -6
  427. package/contracts/type/String.sol +53 -0
  428. package/contracts/{types → type}/Timestamp.sol +41 -7
  429. package/contracts/type/UFixed.sol +326 -0
  430. package/contracts/type/Version.sol +108 -0
  431. package/package.json +16 -7
  432. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  433. package/artifacts/contracts/components/Component.sol/Component.json +0 -205
  434. package/artifacts/contracts/components/Component.sol/InstanceLinked.dbg.json +0 -4
  435. package/artifacts/contracts/components/Component.sol/InstanceLinked.json +0 -35
  436. package/artifacts/contracts/components/IPool.sol/IPoolComponent.dbg.json +0 -4
  437. package/artifacts/contracts/components/IPool.sol/IPoolComponent.json +0 -255
  438. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  439. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -74
  440. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  441. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -328
  442. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  443. package/artifacts/contracts/components/Product.sol/Product.json +0 -346
  444. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  445. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  446. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  447. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  448. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  449. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  450. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  451. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  452. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  454. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  456. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  458. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  460. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  462. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  464. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  466. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  468. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  470. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  472. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  474. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  476. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  478. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  479. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  480. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  481. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  482. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  483. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  484. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  485. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  486. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  487. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -299
  488. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  489. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -202
  490. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  491. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  492. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -205
  493. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  494. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -217
  495. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  496. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -141
  497. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  498. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  499. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  500. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycle.json +0 -134
  501. package/artifacts/contracts/instance/lifecycle/ILifecycle.sol/ILifecycleModule.dbg.json +0 -4
  502. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.dbg.json +0 -4
  503. package/artifacts/contracts/instance/lifecycle/LifecycleModule.sol/LifecycleModule.json +0 -221
  504. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  505. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  506. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -254
  507. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  508. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -254
  509. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  510. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  511. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -129
  512. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  513. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.json +0 -155
  514. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  515. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  516. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  517. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -127
  518. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  519. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  520. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -196
  522. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  523. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  524. package/artifacts/contracts/instance/treasury/ITreasury.sol/ITreasuryModule.json +0 -490
  525. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  526. package/artifacts/contracts/instance/treasury/TokenHandler.sol/TokenHandler.json +0 -45
  527. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/treasury/TreasuryModule.sol/TreasuryModule.json +0 -490
  529. package/artifacts/contracts/mock/Dip.sol/DIP.dbg.json +0 -4
  530. package/artifacts/contracts/mock/Dip.sol/DIP.json +0 -338
  531. package/artifacts/contracts/mock/TestPool.sol/TestPool.dbg.json +0 -4
  532. package/artifacts/contracts/mock/TestPool.sol/TestPool.json +0 -294
  533. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.dbg.json +0 -4
  534. package/artifacts/contracts/mock/TestProduct.sol/TestProduct.json +0 -384
  535. package/artifacts/contracts/mock/Usdc.sol/USDC.dbg.json +0 -4
  536. package/artifacts/contracts/mock/Usdc.sol/USDC.json +0 -338
  537. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  538. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  539. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  540. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  541. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  542. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  543. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  544. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  545. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  546. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  547. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  548. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  549. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  550. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  551. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  553. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  555. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  558. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  559. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  560. package/contracts/components/Component.sol +0 -77
  561. package/contracts/components/IPool.sol +0 -15
  562. package/contracts/components/IProduct.sol +0 -16
  563. package/contracts/components/Pool.sol +0 -52
  564. package/contracts/components/Product.sol +0 -89
  565. package/contracts/experiment/errors/Require.sol +0 -38
  566. package/contracts/experiment/errors/Revert.sol +0 -44
  567. package/contracts/experiment/inheritance/A.sol +0 -53
  568. package/contracts/experiment/inheritance/B.sol +0 -28
  569. package/contracts/experiment/inheritance/C.sol +0 -34
  570. package/contracts/experiment/inheritance/IA.sol +0 -13
  571. package/contracts/experiment/inheritance/IB.sol +0 -10
  572. package/contracts/experiment/inheritance/IC.sol +0 -12
  573. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  574. package/contracts/experiment/statemachine/ISM.sol +0 -25
  575. package/contracts/experiment/statemachine/README.md +0 -112
  576. package/contracts/experiment/statemachine/SM.sol +0 -57
  577. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  578. package/contracts/experiment/types/TypeA.sol +0 -47
  579. package/contracts/experiment/types/TypeB.sol +0 -29
  580. package/contracts/instance/access/Access.sol +0 -165
  581. package/contracts/instance/access/IAccess.sol +0 -63
  582. package/contracts/instance/component/ComponentModule.sol +0 -274
  583. package/contracts/instance/component/IComponent.sol +0 -74
  584. package/contracts/instance/lifecycle/ILifecycle.sol +0 -47
  585. package/contracts/instance/lifecycle/LifecycleModule.sol +0 -88
  586. package/contracts/instance/policy/IPolicy.sol +0 -50
  587. package/contracts/instance/policy/PolicyModule.sol +0 -114
  588. package/contracts/instance/pool/IPoolModule.sol +0 -23
  589. package/contracts/instance/pool/PoolModule.sol +0 -81
  590. package/contracts/instance/product/IProductService.sol +0 -36
  591. package/contracts/instance/product/ProductService.sol +0 -136
  592. package/contracts/instance/treasury/ITreasury.sol +0 -91
  593. package/contracts/instance/treasury/TokenHandler.sol +0 -24
  594. package/contracts/instance/treasury/TreasuryModule.sol +0 -168
  595. package/contracts/mock/TestPool.sol +0 -16
  596. package/contracts/mock/TestProduct.sol +0 -39
  597. package/contracts/mock/Usdc.sol +0 -26
  598. package/contracts/registry/IChainNft.sol +0 -21
  599. package/contracts/types/ChainId.sol +0 -38
  600. package/contracts/types/Fee.sol +0 -32
  601. package/contracts/types/NftId.sol +0 -51
  602. package/contracts/types/ObjectType.sol +0 -107
  603. package/contracts/types/UFixed.sol +0 -210
@@ -0,0 +1,42 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../../type/Amount.sol";
5
+ import {DistributorType} from "../../type/DistributorType.sol";
6
+ import {NftId} from "../../type/NftId.sol";
7
+ import {Timestamp} from "../../type/Timestamp.sol";
8
+ import {UFixed} from "../../type/UFixed.sol";
9
+
10
+ interface IDistribution {
11
+
12
+ struct DistributorTypeInfo {
13
+ string name;
14
+ UFixed minDiscountPercentage;
15
+ UFixed maxDiscountPercentage;
16
+ UFixed commissionPercentage;
17
+ uint32 maxReferralCount;
18
+ uint32 maxReferralLifetime;
19
+ bool allowSelfReferrals;
20
+ bool allowRenewals;
21
+ bytes data;
22
+ }
23
+
24
+ struct DistributorInfo {
25
+ DistributorType distributorType;
26
+ bool active;
27
+ bytes data;
28
+ Amount commissionAmount;
29
+ uint32 numPoliciesSold;
30
+ }
31
+
32
+ struct ReferralInfo {
33
+ NftId distributorNftId;
34
+ string referralCode;
35
+ UFixed discountPercentage;
36
+ uint32 maxReferrals;
37
+ uint32 usedReferrals;
38
+ Timestamp expiryAt;
39
+ bytes data;
40
+ }
41
+
42
+ }
@@ -0,0 +1,84 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount} from "../../type/Amount.sol";
5
+ import {NftId} from "../../type/NftId.sol";
6
+ import {ClaimId} from "../../type/ClaimId.sol";
7
+ import {ReferralId} from "../../type/Referral.sol";
8
+ import {RiskId} from "../../type/RiskId.sol";
9
+ import {Seconds} from "../../type/Seconds.sol";
10
+ import {Timestamp} from "../../type/Timestamp.sol";
11
+
12
+ interface IPolicy {
13
+
14
+ struct Premium {
15
+ // premium splitting per target wallet
16
+ Amount productFeeAmount;
17
+ Amount distributionFeeAndCommissionAmount;
18
+ Amount poolPremiumAndFeeAmount;
19
+
20
+ // detailed positions
21
+ // this is the net premium calculated by the product
22
+ uint256 netPremiumAmount;
23
+ // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
24
+ uint256 fullPremiumAmount;
25
+ // premium = fullPremium - discount
26
+ uint256 premiumAmount;
27
+ uint256 productFeeFixAmount;
28
+ uint256 poolFeeFixAmount;
29
+ uint256 bundleFeeFixAmount;
30
+ uint256 distributionFeeFixAmount;
31
+ uint256 productFeeVarAmount;
32
+ uint256 poolFeeVarAmount;
33
+ uint256 bundleFeeVarAmount;
34
+ uint256 distributionFeeVarAmount;
35
+ uint256 distributionOwnerFeeFixAmount;
36
+ // this is the remaining amount when the commission and discount are subtracted from the distribution fee variable part (must be at least the minDistributionOwnerFee)
37
+ uint256 distributionOwnerFeeVarAmount;
38
+ // this value is based on distributor type referenced in the referral
39
+ uint256 commissionAmount;
40
+ // this is based on referral used
41
+ uint256 discountAmount;
42
+ }
43
+
44
+ /// @dev policy data for the full policy lifecycle
45
+ struct PolicyInfo {
46
+ NftId productNftId;
47
+ NftId bundleNftId;
48
+ ReferralId referralId;
49
+ RiskId riskId;
50
+ Amount sumInsuredAmount;
51
+ Amount premiumAmount; // expected premium at application time
52
+ Amount premiumPaidAmount; // actual paid premium
53
+ Seconds lifetime;
54
+ // policy application data, no changes after applying for a policy
55
+ bytes applicationData;
56
+ bytes processData;
57
+ uint16 claimsCount;
58
+ uint16 openClaimsCount;
59
+ Amount claimAmount; // sum of confirmed claim amounts (max = sum insured amount)
60
+ Amount payoutAmount; // sum of payouts (max = sum confirmed claim amountst)
61
+ Timestamp activatedAt; // time of underwriting
62
+ Timestamp expiredAt; // no new claims (activatedAt + lifetime)
63
+ Timestamp closedAt; // no locked capital (or declinedAt)
64
+ }
65
+
66
+ // claimId neeeds to be encoded policyNftId:claimId combination
67
+ struct ClaimInfo {
68
+ Amount claimAmount;
69
+ Amount paidAmount;
70
+ uint8 payoutsCount;
71
+ uint8 openPayoutsCount;
72
+ bytes submissionData; // claim submission data, no changes after submitting the claim
73
+ bytes processData; // data that may include information supporting confirm or decline
74
+ Timestamp closedAt; // payment of confirmed claim amount (or declinedAt)
75
+ }
76
+
77
+ // claimId neeeds to be encoded policyNftId:claimId combination
78
+ struct PayoutInfo {
79
+ ClaimId claimId;
80
+ Amount amount;
81
+ bytes data;
82
+ Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
83
+ }
84
+ }
@@ -0,0 +1,11 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../../type/NftId.sol";
5
+
6
+ interface IRisk {
7
+ struct RiskInfo {
8
+ NftId productNftId;
9
+ bytes data;
10
+ }
11
+ }
@@ -3,7 +3,7 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
5
 
6
- contract DIP is ERC20 {
6
+ contract Dip is ERC20 {
7
7
 
8
8
  // https://etherscan.io/token/0xc719d010b63e5bbf2c0551872cd5316ed26acd83#readContract
9
9
  string public constant NAME = "Decentralized Insurance Protocol - DUMMY";
@@ -0,0 +1,20 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {NftId} from "../type/NftId.sol";
5
+ import {Timestamp} from "../type/Timestamp.sol";
6
+
7
+
8
+ interface IOracle {
9
+
10
+ struct RequestInfo {
11
+ NftId requesterNftId; // originator of the request
12
+ string callbackMethodName; // callback function of the requestor to call to provide response data
13
+ NftId oracleNftId; // responsible oracle component
14
+ bytes requestData;
15
+ bytes responseData;
16
+ Timestamp respondedAt; // response timestamp
17
+ Timestamp expiredAt; // expiry timestamp
18
+ bool isCancelled;
19
+ }
20
+ }
@@ -0,0 +1,32 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Fee} from "../type/Fee.sol";
5
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
6
+ import {ReferralId, ReferralStatus} from "../type/Referral.sol";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {DistributorType} from "../type/DistributorType.sol";
9
+ import {RequestId} from "../type/RequestId.sol";
10
+ import {UFixed} from "../type/UFixed.sol";
11
+ import {Timestamp} from "../type/Timestamp.sol";
12
+
13
+ interface IOracleComponent is IInstanceLinkedComponent {
14
+
15
+ /// @dev callback method for requesting some data from the oracle
16
+ function request(
17
+ RequestId requestId,
18
+ NftId requesterNftId,
19
+ bytes calldata requestData,
20
+ Timestamp expiryAt
21
+ ) external;
22
+
23
+
24
+ /// @dev callback method for cancelling the specified oracle request
25
+ function cancel(
26
+ RequestId requestId
27
+ ) external;
28
+
29
+
30
+ /// @dev returns true iff the component needs to be called when selling/renewing policis
31
+ function isVerifying() external view returns (bool verifying);
32
+ }
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IService} from "../shared/IService.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+ import {RequestId} from "../type/RequestId.sol";
7
+ import {StateId} from "../type/StateId.sol";
8
+ import {Timestamp} from "../type/Timestamp.sol";
9
+
10
+
11
+ interface IOracleService is IService {
12
+
13
+ event LogOracleServiceRequestCreated(RequestId requestId, NftId requesterNftId, NftId oracleNftId, Timestamp expiryAt);
14
+ event LogOracleServiceResponseProcessed(RequestId requestId, NftId oracleNftId);
15
+ event LogOracleServiceDeliveryFailed(RequestId requestId, address requesterAddress, string functionSignature);
16
+ event LogOracleServiceResponseResent(RequestId requestId, NftId requesterNftId);
17
+ event LogOracleServiceRequestCancelled(RequestId requestId, NftId requesterNftId);
18
+
19
+ // create request
20
+ error ErrorOracleServiceInstanceMismatch(NftId expectedInstanceNftId, NftId oracleInstanceNftId);
21
+ error ErrorOracleServiceExpiryInThePast(Timestamp blockTimestamp, Timestamp expiryAt);
22
+ error ErrorOracleServiceCallbackMethodNameEmpty();
23
+
24
+ // respond
25
+ error ErrorOracleServiceNotResponsibleOracle(RequestId requestId, NftId expectedOracleNftId, NftId oracleNftId);
26
+
27
+ // get request info
28
+ error ErrorOracleServiceRequestStateNotActive(RequestId requestId, StateId state);
29
+ error ErrorOracleServiceCallerNotResponsibleOracle(RequestId requestId, NftId oracleNftId, NftId callerNftId);
30
+ error ErrorOracleServiceCallerNotRequester(RequestId requestId, NftId requesterNftId, NftId callerNftId);
31
+ error ErrorOracleServiceRequestExpired(RequestId requestId, Timestamp expiredAt);
32
+
33
+ /// @dev send an oracle request to the specified oracle component.
34
+ /// the function returns the id of the newly created request.
35
+ /// permissioned: only registered components may send requests to oracles.
36
+ function request(
37
+ NftId oracleNftId,
38
+ bytes calldata requestData,
39
+ Timestamp expiryAt,
40
+ string calldata callbackMethodName
41
+ ) external returns (RequestId requestId);
42
+
43
+ /// @dev respond to oracle request by oracle compnent.
44
+ /// the response data is amende in the request info stored with the instance.
45
+ /// the request state changes to FULFILLED (when calling the callback method of the requester is successful)
46
+ /// or to FAILED when calling the requester is not succesful.
47
+ /// the function returns true iff the state changes to FULFILLED.
48
+ /// permissioned: only the oracle component linked to the request id may call this method
49
+ function respond(
50
+ RequestId requestId,
51
+ bytes calldata responseData
52
+ ) external returns (bool success);
53
+
54
+ /// @dev re send a failed response to the requester.
55
+ /// only requests in state FAILED may be re sent.
56
+ /// the request state changes to FULFILLED when calling the callback method of the requester is successful.
57
+ /// permissioned: only the requester may resend a request
58
+ function resend(RequestId requestId) external;
59
+
60
+ /// @dev notify the oracle component that the specified request has become invalid.
61
+ /// only requests in state ACTIVE may be cancelled.
62
+ /// permissioned: only the requester may cancel a request
63
+ function cancel(RequestId requestId) external;
64
+
65
+ }
@@ -0,0 +1,145 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {COMPONENT, ORACLE} from "../type/ObjectType.sol";
5
+ import {IOracleService} from "./IOracleService.sol";
6
+ import {NftId, NftIdLib} from "../type/NftId.sol";
7
+ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
8
+ import {IComponentService} from "../shared/IComponentService.sol";
9
+ import {IOracleComponent} from "./IOracleComponent.sol";
10
+ import {IRegistry} from "../registry/IRegistry.sol";
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
12
+ import {RequestId} from "../type/RequestId.sol";
13
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
14
+ import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
15
+ import {UFixed} from "../type/UFixed.sol";
16
+
17
+
18
+ abstract contract Oracle is
19
+ InstanceLinkedComponent,
20
+ IOracleComponent
21
+ {
22
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Oracle")) - 1)) & ~bytes32(uint256(0xff));
23
+ bytes32 public constant ORACLE_STORAGE_LOCATION_V1 = 0xaab7c0ea03d290e56d6c060e0733d3ebcbe647f7694616a2ec52738a64b2f900;
24
+
25
+ struct OracleStorage {
26
+ IComponentService _componentService;
27
+ IOracleService _oracleService;
28
+ }
29
+
30
+
31
+ function initializeOracle(
32
+ address registry,
33
+ NftId instanceNftId,
34
+ address initialOwner,
35
+ string memory name,
36
+ address token,
37
+ bytes memory registryData, // writeonly data that will saved in the object info record of the registry
38
+ bytes memory componentData // component specifidc data
39
+ )
40
+ public
41
+ virtual
42
+ onlyInitializing()
43
+ {
44
+ initializeInstanceLinkedComponent(registry, instanceNftId, name, token, ORACLE(), true, initialOwner, registryData, componentData);
45
+
46
+ OracleStorage storage $ = _getOracleStorage();
47
+ $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
48
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
49
+
50
+ registerInterface(type(IOracleComponent).interfaceId);
51
+ }
52
+
53
+
54
+ function register()
55
+ external
56
+ virtual
57
+ onlyOwner()
58
+ {
59
+ _getOracleStorage()._componentService.registerOracle();
60
+ }
61
+
62
+
63
+ function isVerifying()
64
+ external
65
+ virtual
66
+ view
67
+ returns (bool verifying)
68
+ {
69
+ return false;
70
+ }
71
+
72
+
73
+ function request(
74
+ RequestId requestId,
75
+ NftId requesterId,
76
+ bytes calldata requestData,
77
+ Timestamp expiryAt
78
+ )
79
+ external
80
+ virtual
81
+ // restricted() // TODO enable: only oracle service
82
+ {
83
+ _request(requestId, requesterId, requestData, expiryAt);
84
+ }
85
+
86
+
87
+ function cancel(
88
+ RequestId requestId
89
+ )
90
+ external
91
+ virtual
92
+ // restricted() // TODO enable: only oracle service
93
+ {
94
+ _cancel(requestId);
95
+ }
96
+
97
+
98
+ /// @dev internal function for handling requests.
99
+ /// empty implementation.
100
+ /// overwrite this function to implement use case specific handling
101
+ /// for oracle calls.
102
+ function _request(
103
+ RequestId requestId,
104
+ NftId requesterId,
105
+ bytes calldata requestData,
106
+ Timestamp expiryAt
107
+ )
108
+ internal
109
+ virtual
110
+ {
111
+ }
112
+
113
+
114
+ /// @dev internal function for cancelling requests.
115
+ /// empty implementation.
116
+ /// overwrite this function to implement use case specific cancelling
117
+ function _cancel(
118
+ RequestId requestId
119
+ )
120
+ internal
121
+ virtual
122
+ {
123
+ }
124
+
125
+
126
+ /// @dev internal function for handling oracle responses.
127
+ /// use this function in use case specific external/public functions
128
+ /// to handle use case specific response handling.
129
+ function _respond(
130
+ RequestId requestId,
131
+ bytes memory responseData
132
+ )
133
+ internal
134
+ virtual
135
+ {
136
+ _getOracleStorage()._oracleService.respond(
137
+ requestId, responseData);
138
+ }
139
+
140
+ function _getOracleStorage() private pure returns (OracleStorage storage $) {
141
+ assembly {
142
+ $.slot := ORACLE_STORAGE_LOCATION_V1
143
+ }
144
+ }
145
+ }
@@ -0,0 +1,278 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
5
+ import {IComponent} from "../shared/IComponent.sol";
6
+ import {IInstance} from "../instance/IInstance.sol";
7
+ import {IInstanceService} from "../instance/IInstanceService.sol";
8
+ import {InstanceReader} from "../instance/InstanceReader.sol";
9
+ import {IOracle} from "./IOracle.sol";
10
+ import {IOracleComponent} from "./IOracleComponent.sol";
11
+ import {IOracleService} from "./IOracleService.sol";
12
+ import {IRegistry} from "../registry/IRegistry.sol";
13
+ import {NftId} from "../type/NftId.sol";
14
+ import {ObjectType, COMPONENT, ORACLE, INSTANCE} from "../type/ObjectType.sol";
15
+ import {RequestId} from "../type/RequestId.sol";
16
+ import {StateId, ACTIVE, KEEP_STATE, FULFILLED, FAILED, CANCELLED} from "../type/StateId.sol";
17
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
18
+
19
+
20
+ contract OracleService is
21
+ ComponentVerifyingService,
22
+ IOracleService
23
+ {
24
+
25
+ function _initialize(
26
+ address owner,
27
+ bytes memory data
28
+ )
29
+ internal
30
+ initializer
31
+ virtual override
32
+ {
33
+ address initialOwner;
34
+ address registryAddress;
35
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
36
+ initializeService(registryAddress, address(0), owner);
37
+ registerInterface(type(IOracleService).interfaceId);
38
+ }
39
+
40
+ function request(
41
+ NftId oracleNftId,
42
+ bytes calldata requestData,
43
+ Timestamp expiryAt,
44
+ string calldata callbackMethodName
45
+ )
46
+ external
47
+ virtual
48
+ // restricted() // add authz
49
+ returns (
50
+ RequestId requestId
51
+ )
52
+ {
53
+ (
54
+ NftId componentNftId,
55
+ IRegistry.ObjectInfo memory componentInfo,
56
+ IInstance instance
57
+ ) = _getAndVerifyActiveComponent(COMPONENT());
58
+
59
+ // oracleNftId exists and is active oracle
60
+ (
61
+ IRegistry.ObjectInfo memory oracleInfo,
62
+ ) = _getAndVerifyComponentInfo(
63
+ oracleNftId,
64
+ ORACLE(),
65
+ true); // only active
66
+
67
+ // check that requester and oracle share same instance
68
+ if (componentInfo.parentNftId != oracleInfo.parentNftId) {
69
+ revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
70
+ }
71
+
72
+ // check expiriyAt >= now
73
+ if (expiryAt < TimestampLib.blockTimestamp()) {
74
+ revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
75
+ }
76
+
77
+ // check callbackMethodName.length > 0
78
+ if (bytes(callbackMethodName).length == 0) {
79
+ revert ErrorOracleServiceCallbackMethodNameEmpty();
80
+ }
81
+
82
+ // create request info
83
+ IOracle.RequestInfo memory request = IOracle.RequestInfo({
84
+ requesterNftId: componentNftId,
85
+ callbackMethodName: callbackMethodName,
86
+ oracleNftId: oracleNftId,
87
+ requestData: requestData,
88
+ responseData: "",
89
+ respondedAt: TimestampLib.zero(),
90
+ expiredAt: expiryAt,
91
+ isCancelled: false
92
+ });
93
+
94
+ // store request with instance
95
+ requestId = instance.getInstanceStore().createRequest(request);
96
+
97
+ // call oracle component
98
+ IOracleComponent(oracleInfo.objectAddress).request(
99
+ requestId,
100
+ componentNftId,
101
+ requestData,
102
+ expiryAt);
103
+
104
+ emit LogOracleServiceRequestCreated(requestId, componentNftId, oracleNftId, expiryAt);
105
+ }
106
+
107
+
108
+ /// @dev respond to oracle request by oracle compnent.
109
+ /// permissioned: only the oracle component linked to the request id may call this method
110
+ function respond(
111
+ RequestId requestId,
112
+ bytes calldata responseData
113
+ )
114
+ external
115
+ virtual
116
+ // restricted() // add authz
117
+ returns (bool success)
118
+ {
119
+ (
120
+ NftId oracleNftId,
121
+ IRegistry.ObjectInfo memory componentInfo,
122
+ IInstance instance
123
+ ) = _getAndVerifyActiveComponent(ORACLE());
124
+
125
+ bool callerIsOracle = true;
126
+ IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, oracleNftId, callerIsOracle);
127
+ request.responseData = responseData;
128
+ request.respondedAt = TimestampLib.blockTimestamp();
129
+
130
+ instance.getInstanceStore().updateRequest(
131
+ requestId, request, KEEP_STATE());
132
+
133
+ IRegistry.ObjectInfo memory requesterInfo = getRegistry().getObjectInfo(
134
+ request.requesterNftId);
135
+
136
+ string memory functionSignature = string(
137
+ abi.encodePacked(
138
+ request.callbackMethodName,
139
+ "(uint64,bytes)"
140
+ ));
141
+
142
+ (success, ) = requesterInfo.objectAddress.call(
143
+ abi.encodeWithSignature(
144
+ functionSignature,
145
+ requestId,
146
+ responseData));
147
+
148
+ // check that calling requestor was successful
149
+ if (success) {
150
+ instance.getInstanceStore().updateRequestState(requestId, FULFILLED());
151
+ } else {
152
+ instance.getInstanceStore().updateRequestState(requestId, FAILED());
153
+ emit LogOracleServiceDeliveryFailed(requestId, requesterInfo.objectAddress, functionSignature);
154
+ }
155
+
156
+ emit LogOracleServiceResponseProcessed(requestId, oracleNftId);
157
+ }
158
+
159
+
160
+ function resend(RequestId requestId)
161
+ external
162
+ virtual
163
+ // restricted() // add authz
164
+ {
165
+ (
166
+ NftId requesterNftId,
167
+ IRegistry.ObjectInfo memory requesterInfo,
168
+ IInstance instance
169
+ ) = _getAndVerifyActiveComponent(COMPONENT());
170
+
171
+ bool callerIsOracle = false;
172
+ IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
173
+
174
+ // attempt to deliver response to requester
175
+ string memory functionSignature = string(
176
+ abi.encodePacked(
177
+ request.callbackMethodName,
178
+ "(uint64,bytes)"
179
+ ));
180
+
181
+ (bool success, bytes memory returnData) = requesterInfo.objectAddress.call(
182
+ abi.encodeWithSignature(
183
+ functionSignature,
184
+ requestId,
185
+ request.responseData));
186
+
187
+ // check that calling requestor was successful
188
+ if (success) {
189
+ instance.getInstanceStore().updateRequestState(requestId, FULFILLED());
190
+ emit LogOracleServiceResponseResent(requestId, requesterNftId);
191
+ } else {
192
+ emit LogOracleServiceDeliveryFailed(requestId, requesterInfo.objectAddress, functionSignature);
193
+ }
194
+ }
195
+
196
+
197
+ function cancel(RequestId requestId)
198
+ external
199
+ virtual
200
+ // restricted() // add authz
201
+ {
202
+ (
203
+ NftId requesterNftId,
204
+ IRegistry.ObjectInfo memory componentInfo,
205
+ IInstance instance
206
+ ) = _getAndVerifyActiveComponent(COMPONENT());
207
+
208
+ bool callerIsOracle = false;
209
+ // TODO property isCancelled and state update to CANCELLED are redundant, get rid of isCancelled
210
+ IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
211
+ request.isCancelled = true;
212
+
213
+ instance.getInstanceStore().updateRequest(requestId, request, CANCELLED());
214
+
215
+ // call oracle component
216
+ // TODO add check that oracle is active?
217
+ address oracleAddress = getRegistry().getObjectInfo(request.oracleNftId).objectAddress;
218
+ IOracleComponent(oracleAddress).cancel(requestId);
219
+
220
+ emit LogOracleServiceRequestCancelled(requestId, requesterNftId);
221
+ }
222
+
223
+
224
+ function _checkAndGetRequestInfo(
225
+ IInstance instance,
226
+ RequestId requestId,
227
+ NftId callerNftId,
228
+ bool callerIsOracle
229
+ )
230
+ internal
231
+ virtual
232
+ view
233
+ returns (IOracle.RequestInfo memory info)
234
+ {
235
+ InstanceReader reader = instance.getInstanceReader();
236
+ StateId state = reader.getState(requestId.toKey32());
237
+
238
+ // check caller against resonsible oracle or requester
239
+ info = reader.getRequestInfo(requestId);
240
+ if (callerIsOracle) {
241
+ if (state != ACTIVE()) {
242
+ revert ErrorOracleServiceRequestStateNotActive(requestId, state);
243
+ }
244
+
245
+ if (callerNftId != info.oracleNftId) {
246
+ revert ErrorOracleServiceCallerNotResponsibleOracle(requestId, info.oracleNftId, callerNftId);
247
+ }
248
+ } else {
249
+ if (state != ACTIVE() && state != FAILED()) {
250
+ revert ErrorOracleServiceRequestStateNotActive(requestId, state);
251
+ }
252
+ if (callerNftId != info.requesterNftId) {
253
+ revert ErrorOracleServiceCallerNotRequester(requestId, info.requesterNftId, callerNftId);
254
+ }
255
+ }
256
+
257
+ // check expiry
258
+ if (info.expiredAt < TimestampLib.blockTimestamp()) {
259
+ revert ErrorOracleServiceRequestExpired(requestId, info.expiredAt);
260
+ }
261
+ }
262
+
263
+
264
+ function _getInstanceForComponent(NftId componentNftId)
265
+ internal
266
+ view
267
+ returns(IInstance instance)
268
+ {
269
+ NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
270
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
271
+ return IInstance(instanceAddress);
272
+ }
273
+
274
+
275
+ function _getDomain() internal pure override returns(ObjectType) {
276
+ return ORACLE();
277
+ }
278
+ }