@etherisc/gif-next 0.0.2-b72409c-493 → 0.0.2-b7f4834-822

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 (546) hide show
  1. package/README.md +8 -84
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +254 -157
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +202 -96
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +121 -320
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +320 -1995
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +155 -72
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -2749
  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 +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +762 -340
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +238 -218
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -86
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3642 -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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -1
  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/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +10 -118
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  47. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  48. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  49. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  50. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  51. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  52. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +221 -192
  53. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
  55. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  56. package/artifacts/contracts/{components/Product.sol/Product.json → oracle/Oracle.sol/Oracle.json} +255 -266
  57. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  59. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  66. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +213 -153
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  68. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +288 -88
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  71. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  72. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +298 -89
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  86. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +191 -101
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +268 -101
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  92. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +141 -161
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  96. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +75 -72
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  105. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  106. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +179 -29
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +305 -85
  117. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  118. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.json +415 -43
  120. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +343 -105
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +93 -54
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +834 -89
  128. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  129. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  130. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  131. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  132. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  133. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  134. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  135. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  136. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  138. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  140. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  142. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  143. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +144 -80
  144. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  145. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1490 -0
  146. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
  148. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +95 -121
  150. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  151. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  152. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  154. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  156. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  157. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +180 -54
  158. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
  160. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  162. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  164. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  166. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  167. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  168. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  170. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  172. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  174. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IService.sol/IService.json +91 -27
  176. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  178. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  179. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  180. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  181. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  182. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  183. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  184. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  185. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  186. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  187. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  188. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  189. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  190. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  191. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
  193. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  194. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  195. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  196. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  197. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  198. package/artifacts/contracts/shared/Service.sol/Service.json +98 -29
  199. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  200. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  201. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  202. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  203. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  204. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  205. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  206. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  207. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  210. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  211. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  212. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  214. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  216. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  218. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  220. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  222. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  223. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  224. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  225. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  226. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  228. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  230. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  232. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  233. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  234. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  236. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  238. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  240. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  242. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +105 -0
  244. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  246. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  248. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  250. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  252. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  254. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  256. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  258. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  259. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +33 -7
  260. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  262. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  263. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  264. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  266. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  267. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  268. package/contracts/{components → distribution}/Distribution.sol +47 -66
  269. package/contracts/distribution/DistributionService.sol +298 -0
  270. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  271. package/contracts/{components → distribution}/IDistributionComponent.sol +11 -16
  272. package/contracts/{instance/service → distribution}/IDistributionService.sol +20 -37
  273. package/contracts/instance/BundleManager.sol +8 -9
  274. package/contracts/instance/IInstance.sol +51 -67
  275. package/contracts/instance/IInstanceService.sol +30 -21
  276. package/contracts/instance/Instance.sol +124 -215
  277. package/contracts/instance/InstanceAdmin.sol +331 -0
  278. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  279. package/contracts/instance/InstanceReader.sol +157 -57
  280. package/contracts/instance/InstanceService.sol +189 -322
  281. package/contracts/instance/InstanceServiceManager.sol +11 -21
  282. package/contracts/instance/InstanceStore.sol +281 -0
  283. package/contracts/instance/base/BalanceStore.sol +118 -0
  284. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
  285. package/contracts/instance/base/ObjectCounter.sol +21 -0
  286. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
  287. package/contracts/instance/module/IAccess.sol +5 -13
  288. package/contracts/instance/module/IBundle.sol +8 -9
  289. package/contracts/instance/module/IComponents.sol +22 -5
  290. package/contracts/instance/module/IDistribution.sol +7 -6
  291. package/contracts/instance/module/IPolicy.sol +28 -16
  292. package/contracts/instance/module/IRisk.sol +1 -1
  293. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  294. package/contracts/oracle/IOracle.sol +20 -0
  295. package/contracts/oracle/IOracleComponent.sol +32 -0
  296. package/contracts/oracle/IOracleService.sol +65 -0
  297. package/contracts/oracle/Oracle.sol +145 -0
  298. package/contracts/oracle/OracleService.sol +277 -0
  299. package/contracts/oracle/OracleServiceManager.sol +42 -0
  300. package/contracts/pool/BundleService.sol +296 -0
  301. package/contracts/pool/BundleServiceManager.sol +42 -0
  302. package/contracts/pool/IBundleService.sol +106 -0
  303. package/contracts/{components → pool}/IPoolComponent.sol +17 -18
  304. package/contracts/pool/IPoolService.sol +150 -0
  305. package/contracts/{components → pool}/Pool.sol +57 -57
  306. package/contracts/pool/PoolService.sol +453 -0
  307. package/contracts/pool/PoolServiceManager.sol +42 -0
  308. package/contracts/product/ApplicationService.sol +254 -0
  309. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  310. package/contracts/product/ClaimService.sol +442 -0
  311. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  312. package/contracts/{instance/service → product}/IApplicationService.sol +15 -35
  313. package/contracts/product/IClaimService.sol +99 -0
  314. package/contracts/{instance/service → product}/IPolicyService.sol +37 -31
  315. package/contracts/product/IPricingService.sol +39 -0
  316. package/contracts/product/IProductComponent.sol +42 -0
  317. package/contracts/product/IProductService.sol +33 -0
  318. package/contracts/product/PolicyService.sol +475 -0
  319. package/contracts/product/PolicyServiceManager.sol +42 -0
  320. package/contracts/product/PricingService.sol +301 -0
  321. package/contracts/product/PricingServiceManager.sol +42 -0
  322. package/contracts/{components → product}/Product.sol +191 -107
  323. package/contracts/product/ProductService.sol +124 -0
  324. package/contracts/product/ProductServiceManager.sol +42 -0
  325. package/contracts/registry/ChainNft.sol +8 -1
  326. package/contracts/registry/IRegistry.sol +44 -21
  327. package/contracts/registry/IRegistryService.sol +39 -37
  328. package/contracts/registry/Registry.sol +192 -83
  329. package/contracts/registry/RegistryAdmin.sol +237 -0
  330. package/contracts/registry/RegistryService.sol +69 -86
  331. package/contracts/registry/RegistryServiceManager.sol +21 -25
  332. package/contracts/registry/ReleaseManager.sol +459 -181
  333. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  334. package/contracts/registry/TokenRegistry.sol +261 -62
  335. package/contracts/shared/AccessManagerCustom.sol +736 -0
  336. package/contracts/shared/AccessManagerExtended.sol +470 -0
  337. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  338. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  339. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  340. package/contracts/shared/Component.sol +281 -0
  341. package/contracts/shared/ComponentService.sol +618 -0
  342. package/contracts/shared/ComponentServiceManager.sol +35 -0
  343. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  344. package/contracts/shared/ERC165.sol +1 -1
  345. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  346. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  347. package/contracts/{components → shared}/IComponent.sol +23 -27
  348. package/contracts/shared/IComponentService.sol +102 -0
  349. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  350. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  351. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  352. package/contracts/shared/INftOwnable.sol +2 -2
  353. package/contracts/shared/IPolicyHolder.sol +29 -10
  354. package/contracts/shared/IRegistryLinked.sol +0 -1
  355. package/contracts/shared/IService.sol +7 -7
  356. package/contracts/shared/IVersionable.sol +1 -1
  357. package/contracts/shared/InitializableCustom.sol +177 -0
  358. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  359. package/contracts/shared/KeyValueStore.sol +127 -0
  360. package/contracts/{instance/base → shared}/Lifecycle.sol +26 -5
  361. package/contracts/shared/NftIdSetManager.sol +65 -0
  362. package/contracts/shared/NftOwnable.sol +3 -16
  363. package/contracts/shared/PolicyHolder.sol +40 -19
  364. package/contracts/shared/ProxyManager.sol +34 -4
  365. package/contracts/shared/Registerable.sol +13 -12
  366. package/contracts/shared/RegistryLinked.sol +0 -5
  367. package/contracts/shared/Service.sol +29 -10
  368. package/contracts/shared/TokenHandler.sol +27 -2
  369. package/contracts/shared/Versionable.sol +1 -1
  370. package/contracts/staking/IStaking.sol +168 -0
  371. package/contracts/staking/IStakingService.sol +149 -0
  372. package/contracts/staking/StakeManagerLib.sol +179 -0
  373. package/contracts/staking/Staking.sol +551 -0
  374. package/contracts/staking/StakingManager.sol +54 -0
  375. package/contracts/staking/StakingReader.sol +187 -0
  376. package/contracts/staking/StakingService.sol +406 -0
  377. package/contracts/staking/StakingServiceManager.sol +45 -0
  378. package/contracts/staking/StakingStore.sol +572 -0
  379. package/contracts/staking/TargetManagerLib.sol +207 -0
  380. package/contracts/{types → type}/AddressSet.sol +1 -1
  381. package/contracts/type/Amount.sol +128 -0
  382. package/contracts/{types → type}/Blocknumber.sol +20 -3
  383. package/contracts/{types → type}/ClaimId.sol +25 -2
  384. package/contracts/{types → type}/Fee.sol +33 -24
  385. package/contracts/{types → type}/NftId.sol +14 -16
  386. package/contracts/{types → type}/NftIdSet.sol +2 -2
  387. package/contracts/{types → type}/ObjectType.sol +26 -15
  388. package/contracts/{types → type}/PayoutId.sol +33 -5
  389. package/contracts/{types → type}/Referral.sol +1 -1
  390. package/contracts/type/RequestId.sol +75 -0
  391. package/contracts/{types → type}/RiskId.sol +1 -1
  392. package/contracts/{types → type}/RoleId.sol +58 -9
  393. package/contracts/{types → type}/Seconds.sol +27 -0
  394. package/contracts/{types → type}/StateId.sol +33 -4
  395. package/contracts/{types → type}/Timestamp.sol +10 -1
  396. package/contracts/{types → type}/Version.sol +1 -1
  397. package/package.json +3 -3
  398. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  399. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  400. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  401. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  402. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  403. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  404. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  405. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  406. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  407. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  408. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  409. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  410. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1311
  411. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  412. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  414. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  415. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  416. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  417. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  418. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  419. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  420. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  421. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  422. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  423. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  424. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  425. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  426. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  427. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  428. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  429. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  430. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  431. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  432. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  433. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  434. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  435. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  436. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  438. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  440. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  441. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  442. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  443. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  444. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -428
  445. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  446. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  448. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  449. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  450. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  451. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  452. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  453. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  454. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  456. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  458. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  459. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  460. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  461. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  462. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  463. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  464. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  465. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  466. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  467. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  468. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  469. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  470. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  471. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  472. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  473. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  474. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  475. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  476. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  477. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  478. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  479. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  480. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  481. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  482. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  483. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  484. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  485. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  486. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  487. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  488. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  489. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  490. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  491. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  492. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  493. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  494. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  495. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  496. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  497. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  498. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  499. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  500. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  501. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  502. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  503. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  504. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  505. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  506. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  507. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  508. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  509. package/contracts/components/Component.sol +0 -251
  510. package/contracts/components/IProductComponent.sol +0 -40
  511. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  512. package/contracts/instance/InstanceAccessManager.sol +0 -522
  513. package/contracts/instance/base/ComponentService.sol +0 -134
  514. package/contracts/instance/base/KeyValueStore.sol +0 -175
  515. package/contracts/instance/module/ISetup.sol +0 -33
  516. package/contracts/instance/module/ITreasury.sol +0 -23
  517. package/contracts/instance/service/ApplicationService.sol +0 -350
  518. package/contracts/instance/service/BundleService.sol +0 -336
  519. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  520. package/contracts/instance/service/ClaimService.sol +0 -151
  521. package/contracts/instance/service/DistributionService.sol +0 -467
  522. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  523. package/contracts/instance/service/IBundleService.sol +0 -62
  524. package/contracts/instance/service/IClaimService.sol +0 -61
  525. package/contracts/instance/service/IPoolService.sol +0 -35
  526. package/contracts/instance/service/IProductService.sol +0 -40
  527. package/contracts/instance/service/PolicyService.sol +0 -403
  528. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  529. package/contracts/instance/service/PoolService.sol +0 -220
  530. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  531. package/contracts/instance/service/ProductService.sol +0 -241
  532. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  533. package/contracts/registry/RegistryAccessManager.sol +0 -216
  534. package/contracts/shared/ContractDeployerLib.sol +0 -72
  535. package/contracts/test/TestFee.sol +0 -25
  536. package/contracts/test/TestRegisterable.sol +0 -18
  537. package/contracts/test/TestRoleId.sol +0 -14
  538. package/contracts/test/TestService.sol +0 -25
  539. package/contracts/test/TestVersion.sol +0 -44
  540. package/contracts/test/TestVersionable.sol +0 -17
  541. package/contracts/test/Usdc.sol +0 -26
  542. package/contracts/types/ChainId.sol +0 -38
  543. package/contracts/types/NumberId.sol +0 -52
  544. /package/contracts/{types → type}/DistributorType.sol +0 -0
  545. /package/contracts/{types → type}/Key32.sol +0 -0
  546. /package/contracts/{types → type}/UFixed.sol +0 -0
@@ -1,16 +1,23 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../types/NftId.sol";
5
- import {ClaimId} from "../../types/ClaimId.sol";
6
- import {ReferralId} from "../../types/Referral.sol";
7
- import {RiskId} from "../../types/RiskId.sol";
8
- import {Seconds} from "../../types/Seconds.sol";
9
- import {Timestamp} from "../../types/Timestamp.sol";
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";
10
11
 
11
12
  interface IPolicy {
12
13
 
13
14
  struct Premium {
15
+ // premium splitting per target wallet
16
+ Amount productFeeAmount;
17
+ Amount distributionFeeAndCommissionAmount;
18
+ Amount poolPremiumAndFeeAmount;
19
+
20
+ // detailed positions
14
21
  // this is the net premium calculated by the product
15
22
  uint256 netPremiumAmount;
16
23
  // fullPremium = netPremium + all fixed amounts + all variable amounts (excl commission and minDistribtuionOwnerFee variable part)
@@ -40,15 +47,17 @@ interface IPolicy {
40
47
  NftId bundleNftId;
41
48
  ReferralId referralId;
42
49
  RiskId riskId;
43
- uint256 sumInsuredAmount;
44
- uint256 premiumAmount;
45
- uint256 premiumPaidAmount;
50
+ Amount sumInsuredAmount;
51
+ Amount premiumAmount; // expected premium at application time
52
+ Amount premiumPaidAmount; // actual paid premium
46
53
  Seconds lifetime;
54
+ // policy application data, no changes after applying for a policy
47
55
  bytes applicationData;
48
- bytes policyData;
56
+ bytes processData;
49
57
  uint16 claimsCount;
50
58
  uint16 openClaimsCount;
51
- uint256 payoutAmount;
59
+ Amount claimAmount; // sum of confirmed claim amounts (max = sum insured amount)
60
+ Amount payoutAmount; // sum of payouts (max = sum confirmed claim amountst)
52
61
  Timestamp activatedAt; // time of underwriting
53
62
  Timestamp expiredAt; // no new claims (activatedAt + lifetime)
54
63
  Timestamp closedAt; // no locked capital (or declinedAt)
@@ -56,16 +65,19 @@ interface IPolicy {
56
65
 
57
66
  // claimId neeeds to be encoded policyNftId:claimId combination
58
67
  struct ClaimInfo {
59
- uint256 claimAmount;
60
- uint256 paidAmount;
61
- bytes data;
62
- Timestamp closedAt; // payoment of confirmed claim amount (or declinedAt)
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)
63
75
  }
64
76
 
65
77
  // claimId neeeds to be encoded policyNftId:claimId combination
66
78
  struct PayoutInfo {
67
79
  ClaimId claimId;
68
- uint256 amount;
80
+ Amount amount;
69
81
  bytes data;
70
82
  Timestamp paidAt; // payoment of confirmed claim amount (or declinedAt)
71
83
  }
@@ -1,7 +1,7 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {NftId} from "../../types/NftId.sol";
4
+ import {NftId} from "../../type/NftId.sol";
5
5
 
6
6
  interface IRisk {
7
7
  struct RiskInfo {
@@ -1,14 +1,14 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
2
+ pragma solidity ^0.8.20;
3
3
 
4
4
  import "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
5
 
6
- contract TestUsdc is ERC20 {
6
+ contract Dip is ERC20 {
7
7
 
8
8
  // https://etherscan.io/token/0xc719d010b63e5bbf2c0551872cd5316ed26acd83#readContract
9
- string public constant NAME = "USDC - Test";
10
- string public constant SYMBOL = "USDC";
11
- uint8 public constant DECIMALS = 6;
9
+ string public constant NAME = "Decentralized Insurance Protocol - DUMMY";
10
+ string public constant SYMBOL = "DIP";
11
+ uint8 public constant DECIMALS = 18;
12
12
  uint256 public constant INITIAL_SUPPLY = 10**9 * 10**DECIMALS; // 1 Billion 1'000'000'000
13
13
  // decimals == 18 (openzeppelin erc20 default)
14
14
  constructor()
@@ -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,277 @@
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 getDomain() public pure override returns(ObjectType) {
41
+ return ORACLE();
42
+ }
43
+
44
+ function request(
45
+ NftId oracleNftId,
46
+ bytes calldata requestData,
47
+ Timestamp expiryAt,
48
+ string calldata callbackMethodName
49
+ )
50
+ external
51
+ virtual
52
+ // restricted() // add authz
53
+ returns (
54
+ RequestId requestId
55
+ )
56
+ {
57
+ (
58
+ NftId componentNftId,
59
+ IRegistry.ObjectInfo memory componentInfo,
60
+ IInstance instance
61
+ ) = _getAndVerifyActiveComponent(COMPONENT());
62
+
63
+ // oracleNftId exists and is active oracle
64
+ (
65
+ IRegistry.ObjectInfo memory oracleInfo,
66
+ ) = _getAndVerifyComponentInfo(
67
+ oracleNftId,
68
+ ORACLE(),
69
+ true); // only active
70
+
71
+ // check that requester and oracle share same instance
72
+ if (componentInfo.parentNftId != oracleInfo.parentNftId) {
73
+ revert ErrorOracleServiceInstanceMismatch(componentInfo.parentNftId, oracleInfo.parentNftId);
74
+ }
75
+
76
+ // check expiriyAt >= now
77
+ if (expiryAt < TimestampLib.blockTimestamp()) {
78
+ revert ErrorOracleServiceExpiryInThePast(TimestampLib.blockTimestamp(), expiryAt);
79
+ }
80
+
81
+ // check callbackMethodName.length > 0
82
+ if (bytes(callbackMethodName).length == 0) {
83
+ revert ErrorOracleServiceCallbackMethodNameEmpty();
84
+ }
85
+
86
+ // create request info
87
+ IOracle.RequestInfo memory request = IOracle.RequestInfo({
88
+ requesterNftId: componentNftId,
89
+ callbackMethodName: callbackMethodName,
90
+ oracleNftId: oracleNftId,
91
+ requestData: requestData,
92
+ responseData: "",
93
+ respondedAt: TimestampLib.zero(),
94
+ expiredAt: expiryAt,
95
+ isCancelled: false
96
+ });
97
+
98
+ // store request with instance
99
+ requestId = instance.getInstanceStore().createRequest(request);
100
+
101
+ // call oracle component
102
+ IOracleComponent(oracleInfo.objectAddress).request(
103
+ requestId,
104
+ componentNftId,
105
+ requestData,
106
+ expiryAt);
107
+
108
+ emit LogOracleServiceRequestCreated(requestId, componentNftId, oracleNftId, expiryAt);
109
+ }
110
+
111
+
112
+ /// @dev respond to oracle request by oracle compnent.
113
+ /// permissioned: only the oracle component linked to the request id may call this method
114
+ function respond(
115
+ RequestId requestId,
116
+ bytes calldata responseData
117
+ )
118
+ external
119
+ virtual
120
+ // restricted() // add authz
121
+ returns (bool success)
122
+ {
123
+ (
124
+ NftId oracleNftId,
125
+ IRegistry.ObjectInfo memory componentInfo,
126
+ IInstance instance
127
+ ) = _getAndVerifyActiveComponent(ORACLE());
128
+
129
+ bool callerIsOracle = true;
130
+ IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, oracleNftId, callerIsOracle);
131
+ request.responseData = responseData;
132
+ request.respondedAt = TimestampLib.blockTimestamp();
133
+
134
+ instance.getInstanceStore().updateRequest(
135
+ requestId, request, KEEP_STATE());
136
+
137
+ IRegistry.ObjectInfo memory requesterInfo = getRegistry().getObjectInfo(
138
+ request.requesterNftId);
139
+
140
+ string memory functionSignature = string(
141
+ abi.encodePacked(
142
+ request.callbackMethodName,
143
+ "(uint64,bytes)"
144
+ ));
145
+
146
+ (success, ) = requesterInfo.objectAddress.call(
147
+ abi.encodeWithSignature(
148
+ functionSignature,
149
+ requestId,
150
+ responseData));
151
+
152
+ // check that calling requestor was successful
153
+ if (success) {
154
+ instance.getInstanceStore().updateRequestState(requestId, FULFILLED());
155
+ } else {
156
+ instance.getInstanceStore().updateRequestState(requestId, FAILED());
157
+ emit LogOracleServiceDeliveryFailed(requestId, requesterInfo.objectAddress, functionSignature);
158
+ }
159
+
160
+ emit LogOracleServiceResponseProcessed(requestId, oracleNftId);
161
+ }
162
+
163
+
164
+ function resend(RequestId requestId)
165
+ external
166
+ virtual
167
+ // restricted() // add authz
168
+ {
169
+ (
170
+ NftId requesterNftId,
171
+ IRegistry.ObjectInfo memory requesterInfo,
172
+ IInstance instance
173
+ ) = _getAndVerifyActiveComponent(COMPONENT());
174
+
175
+ bool callerIsOracle = false;
176
+ IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
177
+
178
+ // attempt to deliver response to requester
179
+ string memory functionSignature = string(
180
+ abi.encodePacked(
181
+ request.callbackMethodName,
182
+ "(uint64,bytes)"
183
+ ));
184
+
185
+ (bool success, bytes memory returnData) = requesterInfo.objectAddress.call(
186
+ abi.encodeWithSignature(
187
+ functionSignature,
188
+ requestId,
189
+ request.responseData));
190
+
191
+ // check that calling requestor was successful
192
+ if (success) {
193
+ instance.getInstanceStore().updateRequestState(requestId, FULFILLED());
194
+ emit LogOracleServiceResponseResent(requestId, requesterNftId);
195
+ } else {
196
+ emit LogOracleServiceDeliveryFailed(requestId, requesterInfo.objectAddress, functionSignature);
197
+ }
198
+ }
199
+
200
+
201
+ function cancel(RequestId requestId)
202
+ external
203
+ virtual
204
+ // restricted() // add authz
205
+ {
206
+ (
207
+ NftId requesterNftId,
208
+ IRegistry.ObjectInfo memory componentInfo,
209
+ IInstance instance
210
+ ) = _getAndVerifyActiveComponent(COMPONENT());
211
+
212
+ bool callerIsOracle = false;
213
+ // TODO property isCancelled and state update to CANCELLED are redundant, get rid of isCancelled
214
+ IOracle.RequestInfo memory request = _checkAndGetRequestInfo(instance, requestId, requesterNftId, callerIsOracle);
215
+ request.isCancelled = true;
216
+
217
+ instance.getInstanceStore().updateRequest(requestId, request, CANCELLED());
218
+
219
+ // call oracle component
220
+ // TODO add check that oracle is active?
221
+ address oracleAddress = getRegistry().getObjectInfo(request.oracleNftId).objectAddress;
222
+ IOracleComponent(oracleAddress).cancel(requestId);
223
+
224
+ emit LogOracleServiceRequestCancelled(requestId, requesterNftId);
225
+ }
226
+
227
+
228
+ function _checkAndGetRequestInfo(
229
+ IInstance instance,
230
+ RequestId requestId,
231
+ NftId callerNftId,
232
+ bool callerIsOracle
233
+ )
234
+ internal
235
+ virtual
236
+ view
237
+ returns (IOracle.RequestInfo memory info)
238
+ {
239
+ InstanceReader reader = instance.getInstanceReader();
240
+ StateId state = reader.getState(requestId.toKey32());
241
+
242
+ // check caller against resonsible oracle or requester
243
+ info = reader.getRequestInfo(requestId);
244
+ if (callerIsOracle) {
245
+ if (state != ACTIVE()) {
246
+ revert ErrorOracleServiceRequestStateNotActive(requestId, state);
247
+ }
248
+
249
+ if (callerNftId != info.oracleNftId) {
250
+ revert ErrorOracleServiceCallerNotResponsibleOracle(requestId, info.oracleNftId, callerNftId);
251
+ }
252
+ } else {
253
+ if (state != ACTIVE() && state != FAILED()) {
254
+ revert ErrorOracleServiceRequestStateNotActive(requestId, state);
255
+ }
256
+ if (callerNftId != info.requesterNftId) {
257
+ revert ErrorOracleServiceCallerNotRequester(requestId, info.requesterNftId, callerNftId);
258
+ }
259
+ }
260
+
261
+ // check expiry
262
+ if (info.expiredAt < TimestampLib.blockTimestamp()) {
263
+ revert ErrorOracleServiceRequestExpired(requestId, info.expiredAt);
264
+ }
265
+ }
266
+
267
+
268
+ function _getInstanceForComponent(NftId componentNftId)
269
+ internal
270
+ view
271
+ returns(IInstance instance)
272
+ {
273
+ NftId instanceNftId = getRegistry().getObjectInfo(componentNftId).parentNftId;
274
+ address instanceAddress = getRegistry().getObjectInfo(instanceNftId).objectAddress;
275
+ return IInstance(instanceAddress);
276
+ }
277
+ }