@etherisc/gif-next 0.0.2-95f8cce-959 → 0.0.2-9628b30-648

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 (760) hide show
  1. package/README.md +133 -10
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/{components/IDistributionComponent.sol/IDistributionComponent.json → distribution/Distribution.sol/Distribution.json} +304 -324
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → distribution/IDistributionComponent.sol/IDistributionComponent.json} +293 -275
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +534 -340
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.dbg.json +4 -0
  53. package/artifacts/contracts/examples/flight/FlightOracle.sol/FlightOracle.json +1208 -0
  54. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/flight/FlightOracleAuthorization.sol/FlightOracleAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.dbg.json +4 -0
  57. package/artifacts/contracts/examples/flight/FlightPool.sol/FlightPool.json +1476 -0
  58. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.dbg.json +4 -0
  59. package/artifacts/contracts/examples/flight/FlightPoolAuthorization.sol/FlightPoolAuthorization.json +805 -0
  60. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.dbg.json +4 -0
  61. package/artifacts/contracts/examples/flight/FlightProduct.sol/FlightProduct.json +2572 -0
  62. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/flight/FlightProductAuthorization.sol/FlightProductAuthorization.json +805 -0
  64. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.dbg.json +4 -0
  65. package/artifacts/contracts/examples/flight/FlightUSD.sol/FlightUSD.json +376 -0
  66. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.dbg.json +4 -0
  67. package/artifacts/contracts/examples/flight/originalV1.sol/FlightDelayChainlink.json +901 -0
  68. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  69. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  70. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  71. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  72. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  73. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  74. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  75. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  76. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  77. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  78. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  79. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  80. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  81. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  82. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  83. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  84. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  85. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +569 -1784
  86. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  87. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +523 -74
  88. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  89. package/artifacts/contracts/instance/Instance.sol/Instance.json +644 -2621
  90. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  91. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  92. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  93. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  94. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  95. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +2068 -617
  96. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  97. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +530 -381
  98. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  99. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +202 -171
  100. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  101. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3792 -0
  102. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  104. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  106. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  107. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -54
  108. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  109. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  110. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  111. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  112. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  113. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  114. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  115. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  116. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  117. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  118. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  119. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  120. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  121. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  122. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  123. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  124. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  125. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  126. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +805 -0
  127. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  128. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  129. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  130. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  131. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  132. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → oracle/IOracleService.sol/IOracleService.json} +328 -225
  133. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  134. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +272 -241
  135. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  136. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  137. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  139. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  140. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +339 -473
  141. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  142. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  143. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  144. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  145. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  146. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  147. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  148. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  149. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  150. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  151. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  152. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  153. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  154. package/artifacts/contracts/{components/IPoolComponent.sol/IPoolComponent.json → pool/Pool.sol/Pool.json} +384 -423
  155. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  156. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  157. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  158. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  159. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  161. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  162. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  163. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  164. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  165. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  166. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +475 -483
  167. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  168. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  169. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  170. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  171. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  172. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  173. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  174. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +334 -374
  175. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  176. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  177. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  178. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  179. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  180. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +185 -155
  181. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  182. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  183. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  184. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IRiskService.sol/IRiskService.json} +223 -164
  185. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  186. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  187. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  188. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  189. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  190. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  191. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  192. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  193. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  194. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  195. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  196. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  197. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  198. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  199. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  200. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  201. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  202. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  203. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  204. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +499 -34
  205. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  206. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +315 -109
  207. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  208. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  209. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  210. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  211. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  212. package/artifacts/contracts/registry/Registry.sol/Registry.json +987 -131
  213. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  214. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  215. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  216. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  217. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  218. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +390 -250
  219. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  220. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +213 -110
  221. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  222. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  223. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  224. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  225. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  226. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  227. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  228. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  229. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  230. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +360 -137
  231. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  232. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/Component.sol/Component.json} +284 -186
  233. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  234. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  235. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  236. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  237. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  238. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  239. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  240. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  241. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  242. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  243. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  244. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  245. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  246. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +156 -131
  247. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  248. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponentService.sol/IComponentService.json} +584 -738
  249. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  250. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  251. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  252. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +101 -20
  253. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  254. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  255. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  256. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +38 -10
  257. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  258. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  259. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  260. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +163 -3
  261. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  262. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  263. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  264. package/artifacts/contracts/shared/IService.sol/IService.json +98 -5
  265. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  266. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  267. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  268. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  269. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  270. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  271. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  272. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  273. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  274. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  275. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  276. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +47 -70
  277. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  278. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  279. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  280. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +145 -100
  281. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  282. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  283. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  284. package/artifacts/contracts/shared/Service.sol/Service.json +95 -109
  285. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  286. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  287. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  288. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  289. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  290. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  291. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  292. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2757 -0
  293. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  294. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  295. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  296. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  297. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  298. package/artifacts/contracts/staking/Staking.sol/Staking.json +3185 -0
  299. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  300. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  301. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  302. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  303. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  304. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  305. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  306. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  307. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  308. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  309. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  310. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  311. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  312. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  313. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  314. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  315. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  316. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  317. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  318. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  319. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  320. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  321. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  322. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  323. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  324. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  325. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  326. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  327. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  328. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  329. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  330. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  331. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  332. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  333. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  334. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  335. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  336. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  337. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  338. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  339. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  340. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  341. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  342. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +161 -0
  343. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  344. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  345. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.dbg.json +4 -0
  346. package/artifacts/contracts/type/RequestIdSet.sol/RequestIdSet.json +33 -0
  347. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  348. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  349. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  350. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  351. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  352. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +308 -0
  353. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  354. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  355. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  356. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  357. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  358. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  359. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  360. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  361. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  362. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +344 -0
  363. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  364. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  365. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  366. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  367. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  368. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  369. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  370. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  371. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  372. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  373. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  374. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  375. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  376. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  377. package/contracts/accounting/AccountingService.sol +274 -0
  378. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  379. package/contracts/accounting/IAccountingService.sol +47 -0
  380. package/contracts/authorization/AccessAdmin.sol +780 -0
  381. package/contracts/authorization/AccessAdminLib.sol +396 -0
  382. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  383. package/contracts/authorization/Authorization.sol +169 -0
  384. package/contracts/authorization/IAccess.sol +67 -0
  385. package/contracts/authorization/IAccessAdmin.sol +144 -0
  386. package/contracts/authorization/IAuthorization.sol +26 -0
  387. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  388. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  389. package/contracts/distribution/BasicDistribution.sol +141 -0
  390. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  391. package/contracts/distribution/Distribution.sol +247 -0
  392. package/contracts/distribution/DistributionService.sol +448 -0
  393. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  394. package/contracts/distribution/IDistributionComponent.sol +45 -0
  395. package/contracts/distribution/IDistributionService.sol +115 -0
  396. package/contracts/examples/fire/DamageLevel.sol +59 -0
  397. package/contracts/examples/fire/FirePool.sol +86 -0
  398. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  399. package/contracts/examples/fire/FireProduct.sol +433 -0
  400. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  401. package/contracts/examples/fire/FireUSD.sol +26 -0
  402. package/contracts/examples/flight/FlightOracle.sol +160 -0
  403. package/contracts/examples/flight/FlightOracleAuthorization.sol +34 -0
  404. package/contracts/examples/flight/FlightPool.sol +89 -0
  405. package/contracts/examples/flight/FlightPoolAuthorization.sol +37 -0
  406. package/contracts/examples/flight/FlightProduct.sol +661 -0
  407. package/contracts/examples/flight/FlightProductAuthorization.sol +42 -0
  408. package/contracts/examples/flight/FlightUSD.sol +26 -0
  409. package/contracts/examples/flight/originalV1.sol +396 -0
  410. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  411. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  412. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  413. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  414. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  415. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  416. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  417. package/contracts/instance/BundleSet.sol +130 -0
  418. package/contracts/instance/IInstance.sol +120 -73
  419. package/contracts/instance/IInstanceService.sol +84 -39
  420. package/contracts/instance/Instance.sol +248 -230
  421. package/contracts/instance/InstanceAdmin.sol +383 -0
  422. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  423. package/contracts/instance/InstanceReader.sol +554 -191
  424. package/contracts/instance/InstanceService.sol +384 -379
  425. package/contracts/instance/InstanceServiceManager.sol +14 -29
  426. package/contracts/instance/InstanceStore.sol +298 -0
  427. package/contracts/instance/RiskSet.sol +126 -0
  428. package/contracts/instance/base/BalanceStore.sol +121 -0
  429. package/contracts/instance/base/Cloneable.sol +28 -0
  430. package/contracts/instance/base/ObjectCounter.sol +20 -0
  431. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  432. package/contracts/instance/base/ObjectSet.sol +77 -0
  433. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  434. package/contracts/instance/module/IBundle.sol +9 -11
  435. package/contracts/instance/module/IComponents.sol +44 -23
  436. package/contracts/instance/module/IDistribution.sol +25 -12
  437. package/contracts/instance/module/IPolicy.sol +71 -38
  438. package/contracts/instance/module/IRisk.sol +6 -1
  439. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  440. package/contracts/oracle/BasicOracle.sol +45 -0
  441. package/contracts/oracle/BasicOracleAuthorization.sol +52 -0
  442. package/contracts/oracle/IOracle.sol +41 -0
  443. package/contracts/oracle/IOracleComponent.sol +33 -0
  444. package/contracts/oracle/IOracleService.sol +66 -0
  445. package/contracts/oracle/Oracle.sol +154 -0
  446. package/contracts/oracle/OracleService.sol +310 -0
  447. package/contracts/oracle/OracleServiceManager.sol +39 -0
  448. package/contracts/pool/BasicPool.sol +162 -0
  449. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  450. package/contracts/pool/BundleService.sol +386 -0
  451. package/contracts/pool/BundleServiceManager.sol +39 -0
  452. package/contracts/pool/IBundleService.sol +116 -0
  453. package/contracts/pool/IPoolComponent.sol +62 -0
  454. package/contracts/pool/IPoolService.sol +170 -0
  455. package/contracts/pool/Pool.sol +333 -0
  456. package/contracts/pool/PoolLib.sol +341 -0
  457. package/contracts/pool/PoolService.sol +614 -0
  458. package/contracts/pool/PoolServiceManager.sol +39 -0
  459. package/contracts/product/ApplicationService.sol +327 -0
  460. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  461. package/contracts/product/BasicProduct.sol +49 -0
  462. package/contracts/product/BasicProductAuthorization.sol +63 -0
  463. package/contracts/product/ClaimService.sol +630 -0
  464. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  465. package/contracts/{instance/service → product}/IApplicationService.sol +41 -35
  466. package/contracts/product/IClaimService.sol +136 -0
  467. package/contracts/product/IPolicyService.sol +102 -0
  468. package/contracts/product/IPricingService.sol +40 -0
  469. package/contracts/product/IProductComponent.sol +62 -0
  470. package/contracts/product/IRiskService.sol +48 -0
  471. package/contracts/product/PolicyService.sol +645 -0
  472. package/contracts/product/PolicyServiceLib.sol +139 -0
  473. package/contracts/product/PolicyServiceManager.sol +39 -0
  474. package/contracts/product/PricingService.sol +306 -0
  475. package/contracts/product/PricingServiceManager.sol +39 -0
  476. package/contracts/product/Product.sol +493 -0
  477. package/contracts/product/RiskService.sol +190 -0
  478. package/contracts/product/RiskServiceManager.sol +39 -0
  479. package/contracts/registry/ChainNft.sol +79 -40
  480. package/contracts/registry/IRegistry.sol +104 -33
  481. package/contracts/registry/IRegistryService.sol +34 -40
  482. package/contracts/registry/IRelease.sol +29 -0
  483. package/contracts/registry/ITransferInterceptor.sol +1 -2
  484. package/contracts/registry/Registry.sol +469 -200
  485. package/contracts/registry/RegistryAdmin.sol +191 -0
  486. package/contracts/registry/RegistryAuthorization.sol +336 -0
  487. package/contracts/registry/RegistryService.sol +90 -131
  488. package/contracts/registry/RegistryServiceManager.sol +23 -32
  489. package/contracts/registry/ReleaseAdmin.sol +195 -0
  490. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  491. package/contracts/registry/ReleaseRegistry.sol +525 -0
  492. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  493. package/contracts/registry/TokenRegistry.sol +265 -64
  494. package/contracts/shared/Component.sol +214 -0
  495. package/contracts/shared/ComponentService.sol +687 -0
  496. package/contracts/shared/ComponentServiceManager.sol +38 -0
  497. package/contracts/shared/ContractLib.sol +312 -0
  498. package/contracts/shared/IComponent.sol +58 -0
  499. package/contracts/shared/IComponentService.sol +111 -0
  500. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  501. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  502. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  503. package/contracts/shared/INftOwnable.sol +6 -2
  504. package/contracts/shared/IPolicyHolder.sol +23 -14
  505. package/contracts/shared/IRegisterable.sol +22 -1
  506. package/contracts/shared/IRegistryLinked.sol +0 -1
  507. package/contracts/shared/IService.sol +12 -5
  508. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  509. package/contracts/shared/InstanceLinkedComponent.sol +234 -0
  510. package/contracts/shared/KeyValueStore.sol +131 -0
  511. package/contracts/shared/Lifecycle.sol +88 -0
  512. package/contracts/shared/NftIdSet.sol +65 -0
  513. package/contracts/shared/NftOwnable.sol +36 -27
  514. package/contracts/shared/PolicyHolder.sol +23 -41
  515. package/contracts/shared/Registerable.sol +52 -20
  516. package/contracts/shared/RegistryLinked.sol +9 -19
  517. package/contracts/shared/Service.sol +36 -41
  518. package/contracts/shared/TokenHandler.sol +322 -13
  519. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  520. package/contracts/staking/IStaking.sol +367 -0
  521. package/contracts/staking/IStakingService.sol +127 -0
  522. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  523. package/contracts/staking/Staking.sol +798 -0
  524. package/contracts/staking/StakingLib.sol +195 -0
  525. package/contracts/staking/StakingManager.sol +53 -0
  526. package/contracts/staking/StakingReader.sol +171 -0
  527. package/contracts/staking/StakingService.sol +321 -0
  528. package/contracts/staking/StakingServiceManager.sol +46 -0
  529. package/contracts/staking/StakingStore.sol +1368 -0
  530. package/contracts/staking/TargetHandler.sol +132 -0
  531. package/contracts/staking/TargetManagerLib.sol +234 -0
  532. package/contracts/{types → type}/AddressSet.sol +1 -1
  533. package/contracts/type/Amount.sol +154 -0
  534. package/contracts/{types → type}/Blocknumber.sol +36 -13
  535. package/contracts/type/ChainId.sol +101 -0
  536. package/contracts/{types → type}/ClaimId.sol +31 -3
  537. package/contracts/{types → type}/Fee.sol +28 -26
  538. package/contracts/{types → type}/Key32.sol +2 -2
  539. package/contracts/type/Key32Set.sol +62 -0
  540. package/contracts/{types → type}/NftId.sol +21 -16
  541. package/contracts/{types → type}/NftIdSet.sol +2 -2
  542. package/contracts/type/ObjectType.sol +307 -0
  543. package/contracts/type/PayoutId.sol +82 -0
  544. package/contracts/{types → type}/Referral.sol +8 -1
  545. package/contracts/type/RequestId.sol +75 -0
  546. package/contracts/type/RequestIdSet.sol +62 -0
  547. package/contracts/type/RiskId.sol +75 -0
  548. package/contracts/type/RoleId.sol +180 -0
  549. package/contracts/type/Seconds.sol +124 -0
  550. package/contracts/type/Selector.sol +107 -0
  551. package/contracts/{types → type}/StateId.sol +47 -4
  552. package/contracts/type/String.sol +65 -0
  553. package/contracts/{types → type}/Timestamp.sol +33 -8
  554. package/contracts/type/UFixed.sol +263 -0
  555. package/contracts/{types → type}/Version.sol +58 -7
  556. package/contracts/{shared → upgradeability}/IVersionable.sol +4 -1
  557. package/contracts/{shared → upgradeability}/ProxyManager.sol +118 -41
  558. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  559. package/contracts/{shared → upgradeability}/Versionable.sol +9 -6
  560. package/package.json +12 -8
  561. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  562. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  563. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  564. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  565. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  566. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  567. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  568. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  569. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  570. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  571. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  572. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  573. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  574. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  575. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1330
  576. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  577. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -256
  578. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  579. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  580. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  581. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  582. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  583. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  584. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  585. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  586. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  587. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  588. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  589. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  590. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -1039
  592. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -673
  594. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  595. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1231
  596. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -721
  598. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  599. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -817
  600. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  601. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -641
  602. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  603. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1798
  604. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  605. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  606. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  607. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  608. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  609. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -475
  610. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  612. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  613. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  614. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +0 -450
  615. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1092
  617. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -697
  619. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  620. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -1237
  621. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  622. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -661
  623. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  624. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -840
  625. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  626. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -653
  627. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  628. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  629. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  630. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -559
  631. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  632. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  633. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  634. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  635. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  636. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  637. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  638. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  639. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  640. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  641. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  642. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  643. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  644. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  645. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  646. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  647. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  648. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -596
  649. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  650. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  651. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  652. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  653. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  654. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  655. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  656. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  657. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  658. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  659. package/artifacts/contracts/types/Amount.sol/AmountLib.dbg.json +0 -4
  660. package/artifacts/contracts/types/Amount.sol/AmountLib.json +0 -161
  661. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  662. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  663. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  664. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  665. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  666. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  667. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  668. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  669. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  670. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -288
  671. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  672. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  673. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  674. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  675. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  676. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  677. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  678. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  679. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  680. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  681. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  682. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  683. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  684. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -142
  685. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  686. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  687. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  688. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  689. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  690. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  691. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  692. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  693. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  694. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -267
  695. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  696. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  697. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  698. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  699. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  700. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  701. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  702. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  703. package/contracts/components/Component.sol +0 -253
  704. package/contracts/components/Distribution.sol +0 -280
  705. package/contracts/components/IComponent.sol +0 -76
  706. package/contracts/components/IDistributionComponent.sol +0 -71
  707. package/contracts/components/IPoolComponent.sol +0 -113
  708. package/contracts/components/IProductComponent.sol +0 -40
  709. package/contracts/components/Pool.sol +0 -303
  710. package/contracts/components/Product.sol +0 -293
  711. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  712. package/contracts/instance/BundleManager.sol +0 -127
  713. package/contracts/instance/Cloneable.sol +0 -51
  714. package/contracts/instance/InstanceAccessManager.sol +0 -527
  715. package/contracts/instance/ObjectManager.sol +0 -82
  716. package/contracts/instance/base/ComponentService.sol +0 -121
  717. package/contracts/instance/base/KeyValueStore.sol +0 -180
  718. package/contracts/instance/base/Lifecycle.sol +0 -109
  719. package/contracts/instance/module/IAccess.sol +0 -54
  720. package/contracts/instance/module/ISetup.sol +0 -33
  721. package/contracts/instance/module/ITreasury.sol +0 -23
  722. package/contracts/instance/service/ApplicationService.sol +0 -350
  723. package/contracts/instance/service/BundleService.sol +0 -431
  724. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  725. package/contracts/instance/service/ClaimService.sol +0 -151
  726. package/contracts/instance/service/DistributionService.sol +0 -435
  727. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  728. package/contracts/instance/service/IBundleService.sol +0 -93
  729. package/contracts/instance/service/IClaimService.sol +0 -61
  730. package/contracts/instance/service/IDistributionService.sol +0 -99
  731. package/contracts/instance/service/IPolicyService.sol +0 -72
  732. package/contracts/instance/service/IPoolService.sol +0 -99
  733. package/contracts/instance/service/IProductService.sol +0 -40
  734. package/contracts/instance/service/PolicyService.sol +0 -362
  735. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  736. package/contracts/instance/service/PoolService.sol +0 -303
  737. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  738. package/contracts/instance/service/ProductService.sol +0 -210
  739. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  740. package/contracts/registry/RegistryAccessManager.sol +0 -216
  741. package/contracts/registry/ReleaseManager.sol +0 -324
  742. package/contracts/shared/ContractDeployerLib.sol +0 -72
  743. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  744. package/contracts/test/TestFee.sol +0 -25
  745. package/contracts/test/TestRegisterable.sol +0 -18
  746. package/contracts/test/TestRoleId.sol +0 -14
  747. package/contracts/test/TestService.sol +0 -25
  748. package/contracts/test/TestToken.sol +0 -26
  749. package/contracts/test/TestVersion.sol +0 -44
  750. package/contracts/test/TestVersionable.sol +0 -17
  751. package/contracts/types/Amount.sol +0 -60
  752. package/contracts/types/ChainId.sol +0 -38
  753. package/contracts/types/NumberId.sol +0 -52
  754. package/contracts/types/ObjectType.sol +0 -157
  755. package/contracts/types/PayoutId.sol +0 -54
  756. package/contracts/types/RiskId.sol +0 -43
  757. package/contracts/types/RoleId.sol +0 -97
  758. package/contracts/types/Seconds.sol +0 -54
  759. package/contracts/types/UFixed.sol +0 -326
  760. /package/contracts/{types → type}/DistributorType.sol +0 -0
@@ -4,23 +4,32 @@ pragma solidity ^0.8.20;
4
4
  import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {IERC721Receiver} from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol";
6
6
 
7
- import {IRegistry} from "../registry/IRegistry.sol";
8
- import {NftId} from "../types/NftId.sol";
9
- import {NumberId} from "../types/NumberId.sol";
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {ClaimId} from "../type/ClaimId.sol";
9
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+ import {PayoutId} from "../type/PayoutId.sol";
12
+ import {Timestamp} from "../type/Timestamp.sol";
10
13
 
11
- /// @dev generic interface for contracts that need to hold policies and receive payouts
12
- /// GIF will notify policy holder contracts for policy creation and payout execution
13
- ///
14
+ /// @dev Generic interface for contracts that need to hold policies and receive payouts.
15
+ /// The framework notifies policy holder contracts for policy creation/expiry, claim confirmation and payout execution
16
+ interface IPolicyHolder is
17
+ IERC165,
18
+ IERC721Receiver,
19
+ IRegistryLinked
20
+ {
14
21
 
15
- interface IPolicyHolder is IERC165, IERC721Receiver {
22
+ /// @dev Callback function that will be called after successful policy activation.
23
+ /// Active policies may open claims under the activated policy.
24
+ function policyActivated(NftId policyNftId, Timestamp activatedAt) external;
16
25
 
17
- /// @dev callback function that will be called after successful policy creation
18
- function policyCreatedCallback(NftId policyNftId) external;
26
+ /// @dev Callback function to indicate the specified policy has expired.
27
+ /// expired policies no longer accept new claims.
28
+ function policyExpired(NftId policyNftId, Timestamp expiredAt) external;
19
29
 
20
- /// @dev callback function that will be called after a successful payout
21
- function payoutExecutedCallback(NftId policyNftId, NumberId payoutId, address beneficiary, uint256 amount) external;
30
+ /// @dev Callback function to notify the confirmation of the specified claim.
31
+ function claimConfirmed(NftId policyNftId, ClaimId claimId, Amount amount) external;
22
32
 
23
- /// @dev determines beneficiary address that will be used in payouts targeting this contract
24
- /// returned address will override GIF default where the policy nft holder is treated as beneficiary
25
- function getBeneficiary(NftId policyId, NumberId claimId) external view returns (address beneficiary);
33
+ /// @dev Callback function to notify the successful payout.
34
+ function payoutExecuted(NftId policyNftId, PayoutId payoutId, Amount amount, address beneficiary) external;
26
35
  }
@@ -1,13 +1,34 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
+
4
6
  import {INftOwnable} from "./INftOwnable.sol";
7
+ import {IRelease} from "../registry/IRelease.sol";
5
8
  import {IRegistry} from "../registry/IRegistry.sol";
6
9
 
10
+ /// @title IRegisterable
11
+ /// @dev Marks contracts that are intended to be registered in the registry.
12
+ ///
7
13
  interface IRegisterable is
8
- INftOwnable
14
+ IAccessManaged,
15
+ INftOwnable,
16
+ IRelease
9
17
  {
18
+ // __Registerable_init
19
+ error ErrorAuthorityInvalid(address authority);
20
+
21
+ // onlyActive()
22
+ error ErrorRegisterableNotActive();
23
+
24
+ /// @dev Returns true iff this contract managed by its authority is active.
25
+ /// Queries the IAccessManaged.authority().
26
+ function isActive() external view returns (bool active);
10
27
 
28
+ /// @dev retuns the object info relevant for registering for this contract
29
+ /// IMPORTANT information returned by this function may only be used
30
+ /// before the contract is registered in the registry.
31
+ /// Once registered this information MUST only be accessed via the registry.
11
32
  function getInitialInfo()
12
33
  external
13
34
  view
@@ -8,5 +8,4 @@ interface IRegistryLinked {
8
8
  error ErrorNotRegistry(address registryAddress);
9
9
 
10
10
  function getRegistry() external view returns (IRegistry);
11
- function getRegistryAddress() external view returns (address);
12
11
  }
@@ -1,16 +1,23 @@
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 {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
- import {IVersionable} from "./IVersionable.sol";
8
- import {ObjectType} from "../types/ObjectType.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {RoleId} from "../type/RoleId.sol";
9
10
 
10
11
  interface IService is
12
+ IAccessManaged,
11
13
  IRegisterable,
12
- IVersionable,
13
- IAccessManaged
14
+ IVersionable
14
15
  {
16
+ /// @dev returns the domain for this service.
17
+ /// In any GIF release only one service for any given domain may be deployed.
15
18
  function getDomain() external pure returns(ObjectType serviceDomain);
19
+
20
+ /// @dev returns the GIF release specific role id.
21
+ /// These role ids are used to authorize service to service communication.
22
+ function getRoleId() external view returns(RoleId serviceRoleId);
16
23
  }
@@ -1,23 +1,31 @@
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 {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
5
5
  import {Initializable} from "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol";
6
6
 
7
- contract ERC165 is
7
+ contract InitializableERC165 is
8
8
  Initializable,
9
9
  IERC165
10
10
  {
11
11
  mapping(bytes4 => bool) private _isSupported;
12
12
 
13
13
  // @dev initializes with support for ERC165
14
- function initializeERC165() public onlyInitializing() {
14
+ function __ERC165_init() internal onlyInitializing() {
15
+ _initializeERC165();
16
+ }
17
+
18
+ function _initializeERC165() internal {
15
19
  _isSupported[type(IERC165).interfaceId] = true;
16
20
  }
17
21
 
18
22
  // @dev register support for provided interfaceId
19
23
  // includes initialization for ERC165_ID if not yet done
20
- function registerInterface(bytes4 interfaceId) public onlyInitializing() {
24
+ function _registerInterface(bytes4 interfaceId) internal onlyInitializing() {
25
+ _registerInterfaceNotInitializing(interfaceId);
26
+ }
27
+
28
+ function _registerInterfaceNotInitializing(bytes4 interfaceId) internal{
21
29
  _isSupported[interfaceId] = true;
22
30
  }
23
31
 
@@ -0,0 +1,234 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
5
+ import {IComponents} from "../instance/module/IComponents.sol";
6
+ import {IComponentService} from "./IComponentService.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
9
+ import {IInstanceService} from "../instance/IInstanceService.sol";
10
+ import {IOracleService} from "../oracle/IOracleService.sol";
11
+
12
+ import {Amount} from "../type/Amount.sol";
13
+ import {Component} from "./Component.sol";
14
+ import {InstanceReader} from "../instance/InstanceReader.sol";
15
+ import {IRegistry} from "../registry/IRegistry.sol";
16
+ import {NftId} from "../type/NftId.sol";
17
+ import {ObjectType, COMPONENT, INSTANCE, ORACLE, PRODUCT} from "../type/ObjectType.sol";
18
+ import {RequestId} from "../type/RequestId.sol";
19
+ import {RoleId, RoleIdLib} from "../type/RoleId.sol";
20
+ import {TokenHandler} from "../shared/TokenHandler.sol";
21
+ import {Timestamp} from "../type/Timestamp.sol";
22
+ import {VersionPart} from "../type/Version.sol";
23
+
24
+ // then add (Distribution|Pool|Product)Upradeable that also intherit from Versionable
25
+ // same pattern as for Service which is also upgradeable
26
+ abstract contract InstanceLinkedComponent is
27
+ Component,
28
+ IInstanceLinkedComponent
29
+ {
30
+ // keccak256(abi.encode(uint256(keccak256("gif-next.contracts.component.Component.sol")) - 1)) & ~bytes32(uint256(0xff));
31
+ bytes32 public constant INSTANCE_LINKED_COMPONENT_LOCATION_V1 = 0xffe3d4462bded26a47154f4b8f6db494d2f772496965791d25bd456e342b7f00;
32
+
33
+ struct InstanceLinkedComponentStorage {
34
+ IInstance _instance; // instance for this component
35
+ InstanceReader _instanceReader; // instance reader for this component
36
+ IAuthorization _initialAuthorization;
37
+ IComponentService _componentService;
38
+ IOracleService _oracleService;
39
+ }
40
+
41
+ //--- view functions ----------------------------------------------------//
42
+
43
+ /// @inheritdoc IInstanceLinkedComponent
44
+ function getInstance() public view virtual override returns (IInstance instance) {
45
+ return _getInstanceLinkedComponentStorage()._instance;
46
+ }
47
+
48
+
49
+ /// @inheritdoc IInstanceLinkedComponent
50
+ function getAuthorization() external view virtual returns (IAuthorization authorization) {
51
+ return _getInstanceLinkedComponentStorage()._initialAuthorization;
52
+ }
53
+
54
+
55
+ /// @inheritdoc IInstanceLinkedComponent
56
+ function withdrawFees(Amount amount)
57
+ external
58
+ virtual
59
+ restricted()
60
+ onlyOwner()
61
+ returns (Amount withdrawnAmount)
62
+ {
63
+ return _withdrawFees(amount);
64
+ }
65
+
66
+ //--- internal functions ------------------------------------------------//
67
+
68
+ function _sendRequest(
69
+ NftId oracleNftId,
70
+ bytes memory requestData,
71
+ Timestamp expiryAt,
72
+ string memory callbackMethod
73
+ )
74
+ internal
75
+ virtual
76
+ returns (RequestId requestId)
77
+ {
78
+ return _getInstanceLinkedComponentStorage()._oracleService.request(
79
+ oracleNftId,
80
+ requestData,
81
+ expiryAt,
82
+ callbackMethod);
83
+ }
84
+
85
+
86
+ function _cancelRequest(RequestId requestId)
87
+ internal
88
+ virtual
89
+ {
90
+ _getInstanceLinkedComponentStorage()._oracleService.cancel(requestId);
91
+ }
92
+
93
+
94
+ function _resendRequest(RequestId requestId)
95
+ internal
96
+ virtual
97
+ {
98
+ _getInstanceLinkedComponentStorage()._oracleService.resend(requestId);
99
+ }
100
+
101
+
102
+ function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
103
+ assembly {
104
+ $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
105
+ }
106
+ }
107
+
108
+
109
+ function __InstanceLinkedComponent_init(
110
+ address registry,
111
+ NftId parentNftId,
112
+ string memory name,
113
+ ObjectType componentType,
114
+ IAuthorization authorization,
115
+ bool isInterceptor,
116
+ address initialOwner,
117
+ bytes memory componentData // data that will saved with the component info in the instance store
118
+ )
119
+ internal
120
+ virtual
121
+ onlyInitializing()
122
+ {
123
+ // validate registry, nft ids and get parent nft id
124
+ NftId instanceNftId = _checkAndGetInstanceNftId(
125
+ registry,
126
+ parentNftId,
127
+ componentType);
128
+
129
+ // set and check linked instance
130
+ InstanceLinkedComponentStorage storage $ = _getInstanceLinkedComponentStorage();
131
+ $._instance = IInstance(
132
+ IRegistry(registry).getObjectAddress(instanceNftId));
133
+
134
+ // set component specific parameters
135
+ __Component_init(
136
+ $._instance.authority(), // instance linked components need to point to instance admin
137
+ registry,
138
+ parentNftId,
139
+ name,
140
+ componentType,
141
+ isInterceptor,
142
+ initialOwner,
143
+ "", // registry data
144
+ componentData);
145
+
146
+ // set instance linked specific parameters
147
+ $._instanceReader = $._instance.getInstanceReader();
148
+ $._initialAuthorization = authorization;
149
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
150
+ $._oracleService = IOracleService(_getServiceAddress(ORACLE()));
151
+
152
+ // register interfaces
153
+ _registerInterface(type(IInstanceLinkedComponent).interfaceId);
154
+ }
155
+
156
+
157
+ function _checkAndGetInstanceNftId(
158
+ address registryAddress,
159
+ NftId parentNftId,
160
+ ObjectType componentType
161
+ )
162
+ internal
163
+ view
164
+ returns (NftId instanceNftId)
165
+ {
166
+ // if product, then parent is already instance
167
+ if (componentType == PRODUCT()) {
168
+ _checkAndGetRegistry(registryAddress, parentNftId, INSTANCE());
169
+ return parentNftId;
170
+ }
171
+
172
+ // if not product parent is product, and parent of product is instance
173
+ IRegistry registry = _checkAndGetRegistry(registryAddress, parentNftId, PRODUCT());
174
+ return registry.getParentNftId(parentNftId);
175
+ }
176
+
177
+ /// @dev checks the and gets registry.
178
+ /// validates registry using a provided nft id and expected object type.
179
+ function _checkAndGetRegistry(
180
+ address registryAddress,
181
+ NftId objectNftId,
182
+ ObjectType requiredType
183
+ )
184
+ internal
185
+ view
186
+ returns (IRegistry registry)
187
+ {
188
+ registry = IRegistry(registryAddress);
189
+ IRegistry.ObjectInfo memory info = registry.getObjectInfo(objectNftId);
190
+
191
+ if (info.objectType != requiredType) {
192
+ revert ErrorInstanceLinkedComponentTypeMismatch(requiredType, info.objectType);
193
+ }
194
+ }
195
+
196
+
197
+ /// @dev for instance linked components the wallet address stored in the instance store.
198
+ /// updating needs to go throug component service
199
+ function _setWallet(address newWallet) internal virtual override onlyOwner {
200
+ IComponentService(_getServiceAddress(COMPONENT())).setWallet(newWallet);
201
+ }
202
+
203
+
204
+ function _getComponentInfo() internal virtual override view returns (IComponents.ComponentInfo memory info) {
205
+ NftId componentNftId = getRegistry().getNftIdForAddress(address(this));
206
+
207
+ // if registered, attempt to return component info via instance reader
208
+ if (componentNftId.gtz()) {
209
+ // component registerd with registry
210
+ info = _getInstanceReader().getComponentInfo(getNftId());
211
+
212
+ // check if also registered with instance
213
+ if (address(info.tokenHandler) != address(0)) {
214
+ return info;
215
+ }
216
+ }
217
+
218
+ // return data from component contract if not yet registered
219
+ return super._getComponentInfo();
220
+ }
221
+
222
+
223
+ /// @dev returns reader for linked instance
224
+ function _getInstanceReader() internal view returns (InstanceReader reader) {
225
+ return _getInstanceLinkedComponentStorage()._instanceReader;
226
+ }
227
+
228
+ function _withdrawFees(Amount amount)
229
+ internal
230
+ returns (Amount withdrawnAmount)
231
+ {
232
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
233
+ }
234
+ }
@@ -0,0 +1,131 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
5
+ import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
6
+ import {NftId} from "../type/NftId.sol";
7
+ import {ObjectType} from "../type/ObjectType.sol";
8
+ import {StateId, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
9
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
10
+
11
+ import {Lifecycle} from "./Lifecycle.sol";
12
+ import {IKeyValueStore} from "./IKeyValueStore.sol";
13
+
14
+ abstract contract KeyValueStore is
15
+ Lifecycle,
16
+ IKeyValueStore
17
+ {
18
+
19
+ mapping(Key32 key32 => Value value) private _value;
20
+
21
+ function _create(
22
+ Key32 key32,
23
+ bytes memory data
24
+ )
25
+ internal
26
+ {
27
+ ObjectType objectType = key32.toObjectType();
28
+ if (objectType.eqz()) {
29
+ revert ErrorKeyValueStoreTypeUndefined(objectType);
30
+ }
31
+
32
+ Metadata storage metadata = _value[key32].metadata;
33
+ if (metadata.state.gtz()) {
34
+ revert ErrorKeyValueStoreAlreadyCreated(key32, objectType);
35
+ }
36
+
37
+ if(!hasLifecycle(objectType)) {
38
+ revert ErrorKeyValueStoreNoLifecycle(objectType);
39
+ }
40
+
41
+ Blocknumber blocknumber = BlocknumberLib.current();
42
+ StateId initialState = getInitialState(objectType);
43
+
44
+ // set metadata
45
+ metadata.objectType = objectType;
46
+ metadata.state = initialState;
47
+ metadata.updatedIn = blocknumber;
48
+ metadata.createdIn = blocknumber;
49
+
50
+ // set data
51
+ _value[key32].data = data;
52
+
53
+ // solhint-disable-next-line avoid-tx-origin
54
+ emit LogInfoCreated(key32.toObjectType(), key32.toKeyId(), initialState, msg.sender, tx.origin);
55
+ }
56
+
57
+
58
+ function _update(
59
+ Key32 key32,
60
+ bytes memory data,
61
+ StateId state
62
+ )
63
+ internal
64
+ {
65
+ // update state
66
+ Blocknumber lastUpdatedIn = _updateState(key32, state);
67
+
68
+ // update data
69
+ _value[key32].data = data;
70
+
71
+ // solhint-disable-next-line avoid-tx-origin
72
+ emit LogInfoUpdated(key32.toObjectType(), key32.toKeyId(), state, msg.sender, tx.origin, lastUpdatedIn);
73
+ }
74
+
75
+
76
+ function _updateState(
77
+ Key32 key32,
78
+ StateId state
79
+ )
80
+ internal
81
+ returns (Blocknumber lastUpdatedIn)
82
+ {
83
+ if (state.eqz()) {
84
+ revert ErrorKeyValueStoreStateZero(key32);
85
+ }
86
+
87
+ Metadata storage metadata = _value[key32].metadata;
88
+ StateId stateOld = metadata.state;
89
+ lastUpdatedIn = metadata.updatedIn;
90
+
91
+ if (stateOld.eqz()) {
92
+ revert ErrorKeyValueStoreNotExisting(key32);
93
+ }
94
+
95
+ // update state
96
+ if(state != KEEP_STATE()) {
97
+ checkTransition(stateOld, metadata.objectType, stateOld, state);
98
+ metadata.state = state;
99
+
100
+ // solhint-disable-next-line avoid-tx-origin
101
+ emit LogStateUpdated(key32.toObjectType(), key32.toKeyId(), stateOld, state, msg.sender, tx.origin, lastUpdatedIn);
102
+ }
103
+
104
+ // update metadata
105
+ metadata.updatedIn = BlocknumberLib.current();
106
+ }
107
+
108
+ function exists(Key32 key32) public view returns (bool) {
109
+ return _value[key32].metadata.state.gtz();
110
+ }
111
+
112
+ function get(Key32 key32) public view returns (Value memory value) {
113
+ return _value[key32];
114
+ }
115
+
116
+ function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
117
+ return _value[key32].metadata;
118
+ }
119
+
120
+ function getData(Key32 key32) public view returns (bytes memory data) {
121
+ return _value[key32].data;
122
+ }
123
+
124
+ function getState(Key32 key32) public view returns (StateId state) {
125
+ return _value[key32].metadata.state;
126
+ }
127
+
128
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
129
+ return Key32Lib.toKey32(objectType, id);
130
+ }
131
+ }
@@ -0,0 +1,88 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ObjectType} from "../type/ObjectType.sol";
5
+ import {StateId, zeroStateId} from "../type/StateId.sol";
6
+ import {ILifecycle} from "./ILifecycle.sol";
7
+
8
+ abstract contract Lifecycle is
9
+ ILifecycle
10
+ {
11
+ mapping(ObjectType objectType => StateId initialState)
12
+ private _initialState;
13
+
14
+ mapping(ObjectType objectType => mapping(StateId stateFrom => mapping(StateId stateTo => bool isValid)))
15
+ private _isValidTransition;
16
+
17
+ /// @dev child class must implement and CALL setup func at deployment/initializaton time
18
+ function _setupLifecycle() internal virtual;
19
+
20
+ function setInitialState(ObjectType ttype, StateId state) internal virtual {
21
+ assert(_initialState[ttype] == zeroStateId());
22
+ _initialState[ttype] = state;
23
+ }
24
+
25
+ function setStateTransition(ObjectType ttype, StateId oldState, StateId newState) internal virtual {
26
+ assert(_isValidTransition[ttype][oldState][newState] == false);
27
+ _isValidTransition[ttype][oldState][newState] = true;
28
+ }
29
+
30
+ function hasLifecycle(
31
+ ObjectType objectType
32
+ )
33
+ public
34
+ view
35
+ override
36
+ returns (bool)
37
+ {
38
+ return _initialState[objectType].gtz();
39
+ }
40
+
41
+ function getInitialState(
42
+ ObjectType objectType
43
+ )
44
+ public
45
+ view
46
+ returns (StateId)
47
+ {
48
+ return _initialState[objectType];
49
+ }
50
+
51
+ function checkTransition(
52
+ StateId stateId,
53
+ ObjectType objectType,
54
+ StateId expectedFromId,
55
+ StateId toId
56
+ )
57
+ public
58
+ view
59
+ {
60
+ // revert if no life cycle support
61
+ if (_initialState[objectType].eqz()) {
62
+ revert ErrorNoLifecycle(address(this), objectType);
63
+ }
64
+
65
+ // revert if current state is not expected `from` state
66
+ if(stateId != expectedFromId) {
67
+ revert ErrorFromStateMissmatch(address(this), objectType, stateId, expectedFromId);
68
+ }
69
+
70
+ // enforce valid state transition
71
+ if (!_isValidTransition[objectType][stateId][toId]) {
72
+ revert ErrorInvalidStateTransition(
73
+ address(this),
74
+ objectType,
75
+ stateId,
76
+ toId
77
+ );
78
+ }
79
+ }
80
+
81
+ function isValidTransition(
82
+ ObjectType objectType,
83
+ StateId fromId,
84
+ StateId toId
85
+ ) public view returns (bool) {
86
+ return _isValidTransition[objectType][fromId][toId];
87
+ }
88
+ }
@@ -0,0 +1,65 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId} from "../type/NftId.sol";
6
+
7
+ contract NftIdSet {
8
+
9
+ error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
+ error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
11
+ error ErrorNftIdSetManagerNftIdInvalid(NftId objectNftId);
12
+ error ErrorNftIdSetManagerAlreadyAdded(NftId objectNftId);
13
+
14
+ LibNftIdSet.Set private _allObjects;
15
+ LibNftIdSet.Set private _activeObjects;
16
+ address private _owner;
17
+
18
+ modifier onlyOwner() {
19
+ if(msg.sender != _owner) {
20
+ revert ErrorNftIdSetManagerNotOwner(_owner, msg.sender);
21
+ }
22
+ _;
23
+ }
24
+
25
+ constructor() {
26
+ _owner = msg.sender;
27
+ }
28
+
29
+ function add(NftId objectNftId) external onlyOwner {
30
+ LibNftIdSet.add(_allObjects, objectNftId);
31
+ LibNftIdSet.add(_activeObjects, objectNftId);
32
+ }
33
+
34
+ function activate(NftId componentNftId, NftId objectNftId) external onlyOwner {
35
+ LibNftIdSet.add(_activeObjects, objectNftId);
36
+ }
37
+
38
+ function deactivate(NftId componentNftId, NftId objectNftId) external onlyOwner {
39
+ LibNftIdSet.remove(_activeObjects, objectNftId);
40
+ }
41
+
42
+ function nftIds() external view returns (uint256 ids) {
43
+ return LibNftIdSet.size(_allObjects);
44
+ }
45
+
46
+ function getNftId(uint256 idx) external view returns (NftId) {
47
+ return LibNftIdSet.getElementAt(_allObjects, idx);
48
+ }
49
+
50
+ function exists(NftId objectNftId) external view returns (bool) {
51
+ return LibNftIdSet.contains(_allObjects, objectNftId);
52
+ }
53
+
54
+ function activeNftIds() external view returns (uint256 ids) {
55
+ return LibNftIdSet.size(_activeObjects);
56
+ }
57
+
58
+ function getActiveNftId(uint256 idx) external view returns (NftId) {
59
+ return LibNftIdSet.getElementAt(_activeObjects, idx);
60
+ }
61
+
62
+ function isActive(NftId objectNftId) external view returns (bool) {
63
+ return LibNftIdSet.contains(_activeObjects, objectNftId);
64
+ }
65
+ }