@etherisc/gif-next 0.0.2-e876b87-961 → 0.0.2-e8a628e-326
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.
- package/README.md +90 -7
 - package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
 - package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
 - package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
 - package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
 - package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
 - package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
 - package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
 - package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
 - package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
 - package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
 - package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
 - package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
 - package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
 - package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +525 -213
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +132 -290
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
 - package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +64 -163
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +585 -231
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +170 -78
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +44 -125
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
 - package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +401 -78
 - package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +160 -214
 - package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +380 -45
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +308 -327
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
 - package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +215 -247
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +95 -155
 - package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +278 -223
 - package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
 - package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +944 -454
 - package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
 - package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
 - package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +498 -0
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
 - package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
 - package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
 - package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +470 -0
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstance.sol/IInstance.json +541 -50
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +407 -17
 - package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
 - package/artifacts/contracts/instance/Instance.sol/Instance.json +606 -106
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +990 -359
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +337 -61
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1069 -481
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +424 -81
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +102 -52
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +648 -948
 - package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
 - package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +1759 -0
 - package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
 - package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
 - package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
 - package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
 - package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
 - package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
 - package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
 - package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
 - package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
 - package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
 - package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
 - package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
 - package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
 - package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +83 -165
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
 - package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
 - package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
 - package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +48 -64
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +56 -3
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
 - package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +67 -101
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +157 -81
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +134 -46
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
 - package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +106 -163
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +380 -45
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleService.sol/BundleService.json +317 -344
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +125 -93
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +219 -146
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +63 -118
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +380 -214
 - package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
 - package/artifacts/contracts/pool/Pool.sol/Pool.json +76 -149
 - package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
 - package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolService.sol/PoolService.json +621 -413
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +168 -68
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +327 -62
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +123 -43
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
 - package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +199 -213
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
 - package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +294 -189
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +134 -86
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
 - package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +268 -10
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
 - package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +181 -19
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +167 -56
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +77 -3
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
 - package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +175 -171
 - package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
 - package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +258 -22
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +296 -194
 - package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
 - package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +150 -78
 - package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingService.sol/PricingService.json +139 -114
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +112 -60
 - package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
 - package/artifacts/contracts/product/Product.sol/Product.json +193 -207
 - package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
 - package/artifacts/contracts/product/RiskService.sol/RiskService.json +338 -87
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +123 -43
 - package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
 - package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
 - package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +78 -19
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +56 -3
 - package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
 - package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
 - package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
 - package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
 - package/artifacts/contracts/registry/Registry.sol/Registry.json +116 -57
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +727 -453
 - package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
 - package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +89 -37
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +99 -39
 - package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
 - package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +386 -64
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
 - package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
 - package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
 - package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
 - package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
 - package/artifacts/contracts/shared/Component.sol/Component.json +66 -86
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +308 -542
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +136 -84
 - package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
 - package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
 - package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
 - package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
 - package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
 - package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
 - package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
 - package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
 - package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IComponent.sol/IComponent.json +48 -50
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
 - package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +171 -356
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +48 -64
 - package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +43 -6
 - package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
 - package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
 - package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
 - package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +139 -1
 - package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
 - package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
 - package/artifacts/contracts/shared/IService.sol/IService.json +56 -3
 - package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
 - package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
 - package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +66 -100
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
 - package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +43 -6
 - package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
 - package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
 - package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
 - package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
 - package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
 - package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
 - package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -62
 - package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
 - package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
 - package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
 - package/artifacts/contracts/shared/Service.sol/Service.json +51 -11
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +289 -112
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
 - package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
 - package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +70 -30
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1446 -154
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +214 -110
 - package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
 - package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
 - package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
 - package/artifacts/contracts/staking/Staking.sol/Staking.json +1583 -286
 - package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
 - package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +140 -69
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingService.sol/StakingService.json +257 -162
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +102 -46
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
 - package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1632 -818
 - package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
 - package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
 - package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +160 -88
 - package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
 - package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
 - package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
 - package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
 - package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
 - package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
 - package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
 - package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
 - package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
 - package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
 - package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
 - package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
 - package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
 - package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
 - package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
 - package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
 - package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
 - package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
 - package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
 - package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
 - package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
 - package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
 - package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
 - package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
 - package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
 - package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
 - package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
 - package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
 - package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
 - package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
 - package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
 - package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
 - package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
 - package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
 - package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
 - package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
 - package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +79 -25
 - package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
 - package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
 - package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
 - package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
 - package/contracts/accounting/AccountingService.sol +274 -0
 - package/contracts/accounting/AccountingServiceManager.sol +38 -0
 - package/contracts/accounting/IAccountingService.sol +47 -0
 - package/contracts/authorization/AccessAdmin.sol +429 -245
 - package/contracts/authorization/AccessAdminLib.sol +396 -0
 - package/contracts/authorization/AccessManagerCloneable.sol +146 -4
 - package/contracts/authorization/Authorization.sol +142 -262
 - package/contracts/authorization/IAccess.sol +25 -7
 - package/contracts/authorization/IAccessAdmin.sol +87 -80
 - package/contracts/authorization/IAuthorization.sol +9 -43
 - package/contracts/authorization/IServiceAuthorization.sol +55 -17
 - package/contracts/authorization/ServiceAuthorization.sol +248 -34
 - package/contracts/distribution/BasicDistribution.sol +18 -16
 - package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
 - package/contracts/distribution/Distribution.sol +43 -81
 - package/contracts/distribution/DistributionService.sol +192 -99
 - package/contracts/distribution/DistributionServiceManager.sol +1 -1
 - package/contracts/distribution/IDistributionComponent.sol +3 -10
 - package/contracts/distribution/IDistributionService.sol +38 -24
 - package/contracts/examples/fire/FirePool.sol +21 -8
 - package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
 - package/contracts/examples/fire/FireProduct.sol +38 -20
 - package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
 - package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
 - package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
 - package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
 - package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
 - package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
 - package/contracts/examples/unpermissioned/SimpleProduct.sol +132 -46
 - package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
 - package/contracts/instance/BaseStore.sol +97 -0
 - package/contracts/instance/BundleSet.sol +42 -38
 - package/contracts/instance/IBaseStore.sol +43 -0
 - package/contracts/instance/IInstance.sol +109 -19
 - package/contracts/instance/IInstanceService.sol +61 -14
 - package/contracts/instance/Instance.sol +191 -65
 - package/contracts/instance/InstanceAdmin.sol +271 -171
 - package/contracts/instance/InstanceAuthorizationV3.sol +139 -58
 - package/contracts/instance/InstanceReader.sol +451 -312
 - package/contracts/instance/InstanceService.sol +315 -214
 - package/contracts/instance/InstanceServiceManager.sol +1 -1
 - package/contracts/instance/InstanceStore.sol +14 -30
 - package/contracts/instance/ProductStore.sol +110 -0
 - package/contracts/instance/RiskSet.sol +126 -0
 - package/contracts/instance/TargetNames.sol +10 -0
 - package/contracts/instance/base/BalanceStore.sol +4 -6
 - package/contracts/instance/base/ObjectCounter.sol +1 -2
 - package/contracts/instance/base/ObjectLifecycle.sol +6 -8
 - package/contracts/instance/base/ObjectSet.sol +31 -33
 - package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
 - package/contracts/instance/module/IBundle.sol +6 -5
 - package/contracts/instance/module/IComponents.sol +20 -9
 - package/contracts/instance/module/IDistribution.sol +21 -8
 - package/contracts/instance/module/IPolicy.sol +28 -7
 - package/contracts/instance/module/IRisk.sol +5 -0
 - package/contracts/oracle/BasicOracle.sol +2 -4
 - package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
 - package/contracts/oracle/IOracle.sol +9 -4
 - package/contracts/oracle/Oracle.sol +3 -5
 - package/contracts/oracle/OracleService.sol +98 -79
 - package/contracts/oracle/OracleServiceManager.sol +1 -1
 - package/contracts/pool/BasicPool.sol +25 -17
 - package/contracts/pool/BasicPoolAuthorization.sol +34 -10
 - package/contracts/pool/BundleService.sol +75 -182
 - package/contracts/pool/BundleServiceManager.sol +1 -1
 - package/contracts/pool/IBundleService.sol +28 -55
 - package/contracts/pool/IPoolComponent.sol +1 -7
 - package/contracts/pool/IPoolService.sol +65 -62
 - package/contracts/pool/Pool.sol +109 -111
 - package/contracts/pool/PoolLib.sol +341 -0
 - package/contracts/pool/PoolService.sol +299 -229
 - package/contracts/pool/PoolServiceManager.sol +1 -1
 - package/contracts/product/ApplicationService.sol +93 -25
 - package/contracts/product/ApplicationServiceManager.sol +1 -1
 - package/contracts/product/BasicProduct.sol +9 -13
 - package/contracts/product/BasicProductAuthorization.sol +32 -11
 - package/contracts/product/ClaimService.sol +221 -207
 - package/contracts/product/ClaimServiceManager.sol +1 -1
 - package/contracts/product/IApplicationService.sol +28 -3
 - package/contracts/product/IClaimService.sol +18 -5
 - package/contracts/product/IPolicyService.sol +34 -12
 - package/contracts/product/IPricingService.sol +1 -0
 - package/contracts/product/IProductComponent.sol +4 -1
 - package/contracts/product/IRiskService.sol +25 -10
 - package/contracts/product/PolicyService.sol +258 -304
 - package/contracts/product/PolicyServiceLib.sol +139 -0
 - package/contracts/product/PolicyServiceManager.sol +1 -1
 - package/contracts/product/PricingService.sol +52 -46
 - package/contracts/product/PricingServiceManager.sol +3 -3
 - package/contracts/product/Product.sol +104 -66
 - package/contracts/product/RiskService.sol +128 -34
 - package/contracts/product/RiskServiceManager.sol +1 -1
 - package/contracts/registry/ChainNft.sol +4 -2
 - package/contracts/registry/IRegistry.sol +25 -24
 - package/contracts/registry/IRelease.sol +29 -0
 - package/contracts/registry/Registry.sol +31 -12
 - package/contracts/registry/RegistryAdmin.sol +107 -364
 - package/contracts/registry/RegistryAuthorization.sol +336 -0
 - package/contracts/registry/RegistryService.sol +4 -4
 - package/contracts/registry/RegistryServiceManager.sol +1 -1
 - package/contracts/registry/ReleaseAdmin.sol +195 -0
 - package/contracts/registry/ReleaseLifecycle.sol +2 -0
 - package/contracts/registry/ReleaseRegistry.sol +158 -134
 - package/contracts/registry/ServiceAuthorizationV3.sol +200 -52
 - package/contracts/registry/TokenRegistry.sol +61 -59
 - package/contracts/shared/Component.sol +56 -113
 - package/contracts/shared/ComponentService.sol +392 -406
 - package/contracts/shared/ComponentServiceManager.sol +1 -1
 - package/contracts/shared/ContractLib.sol +277 -3
 - package/contracts/shared/IComponent.sol +2 -18
 - package/contracts/shared/IComponentService.sol +28 -38
 - package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
 - package/contracts/shared/IKeyValueStore.sol +9 -1
 - package/contracts/shared/INftOwnable.sol +2 -0
 - package/contracts/shared/IRegisterable.sol +15 -5
 - package/contracts/shared/IService.sol +3 -5
 - package/contracts/shared/InitializableERC165.sol +9 -1
 - package/contracts/shared/InstanceLinkedComponent.sol +8 -27
 - package/contracts/shared/KeyValueStore.sol +3 -3
 - package/contracts/shared/NftOwnable.sol +8 -6
 - package/contracts/shared/PolicyHolder.sol +4 -3
 - package/contracts/shared/Registerable.sol +41 -20
 - package/contracts/shared/RegistryLinked.sol +7 -13
 - package/contracts/shared/Service.sol +13 -30
 - package/contracts/shared/TokenHandler.sol +264 -105
 - package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
 - package/contracts/staking/IStaking.sol +271 -72
 - package/contracts/staking/IStakingService.sol +45 -75
 - package/contracts/staking/ITargetLimitHandler.sol +17 -0
 - package/contracts/staking/Staking.sol +521 -220
 - package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
 - package/contracts/staking/StakingManager.sol +4 -3
 - package/contracts/staking/StakingReader.sol +58 -77
 - package/contracts/staking/StakingService.sol +62 -148
 - package/contracts/staking/StakingServiceManager.sol +6 -4
 - package/contracts/staking/StakingStore.sol +1093 -330
 - package/contracts/staking/TargetHandler.sol +132 -0
 - package/contracts/staking/TargetManagerLib.sol +69 -46
 - package/contracts/type/Amount.sol +4 -0
 - package/contracts/type/Blocknumber.sol +15 -15
 - package/contracts/type/ChainId.sol +101 -0
 - package/contracts/type/Fee.sol +8 -8
 - package/contracts/type/Key32.sol +2 -2
 - package/contracts/type/Key32Set.sol +62 -0
 - package/contracts/type/NftId.sol +6 -0
 - package/contracts/type/ObjectType.sol +69 -38
 - package/contracts/type/RiskId.sol +26 -8
 - package/contracts/type/RoleId.sol +63 -45
 - package/contracts/type/Seconds.sol +19 -0
 - package/contracts/type/Selector.sol +5 -0
 - package/contracts/type/String.sol +12 -0
 - package/contracts/type/Timestamp.sol +4 -7
 - package/contracts/type/UFixed.sol +35 -127
 - package/contracts/type/Version.sol +54 -5
 - package/contracts/upgradeability/IVersionable.sol +3 -0
 - package/contracts/upgradeability/ProxyManager.sol +26 -12
 - package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
 - package/contracts/upgradeability/Versionable.sol +6 -3
 - package/package.json +4 -4
 - package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
 - package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
 - package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
 - package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.dbg.json +0 -4
 - package/artifacts/contracts/shared/ComponentServiceHelperLib.sol/ComponentServiceHelperLib.json +0 -206
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
 - package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -474
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
 - package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
 - package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
 - package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
 - package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
 - package/contracts/authorization/ReleaseAccessManager.sol +0 -38
 - package/contracts/instance/module/IAccess.sol +0 -46
 - package/contracts/shared/ComponentServiceHelperLib.sol +0 -118
 - package/contracts/shared/ComponentVerifyingService.sol +0 -126
 - package/contracts/staking/StakingLifecycle.sol +0 -23
 
| 
         @@ -1,34 +1,45 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            // SPDX-License-Identifier: Apache-2.0
         
     | 
| 
       2 
2 
     | 
    
         
             
            pragma solidity ^0.8.20;
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
     | 
    
         
            -
            import { 
     | 
| 
       5 
     | 
    
         
            -
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         
     | 
| 
       6 
     | 
    
         
            -
            import {DistributorType} from "../type/DistributorType.sol";
         
     | 
| 
       7 
     | 
    
         
            -
            import {Key32} from "../type/Key32.sol";
         
     | 
| 
       8 
     | 
    
         
            -
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
       9 
     | 
    
         
            -
            import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
         
     | 
| 
       10 
     | 
    
         
            -
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         
     | 
| 
       11 
     | 
    
         
            -
            import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
         
     | 
| 
       12 
     | 
    
         
            -
            import {RequestId} from "../type/RequestId.sol";
         
     | 
| 
       13 
     | 
    
         
            -
            import {RiskId} from "../type/RiskId.sol";
         
     | 
| 
       14 
     | 
    
         
            -
            import {RoleId} from "../type/RoleId.sol";
         
     | 
| 
       15 
     | 
    
         
            -
            import {StateId} from "../type/StateId.sol";
         
     | 
| 
       16 
     | 
    
         
            -
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         
     | 
| 
      
 4 
     | 
    
         
            +
            import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
         
     | 
| 
       17 
5 
     | 
    
         | 
| 
      
 6 
     | 
    
         
            +
            import {IAccess} from "../authorization/IAccess.sol";
         
     | 
| 
       18 
7 
     | 
    
         
             
            import {IBundle} from "../instance/module/IBundle.sol";
         
     | 
| 
       19 
8 
     | 
    
         
             
            import {IComponents} from "../instance/module/IComponents.sol";
         
     | 
| 
       20 
9 
     | 
    
         
             
            import {IDistribution} from "../instance/module/IDistribution.sol";
         
     | 
| 
      
 10 
     | 
    
         
            +
            import {IDistributionService} from "../distribution/IDistributionService.sol";
         
     | 
| 
       21 
11 
     | 
    
         
             
            import {IInstance} from "./IInstance.sol";
         
     | 
| 
       22 
12 
     | 
    
         
             
            import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
         
     | 
| 
       23 
13 
     | 
    
         
             
            import {IOracle} from "../oracle/IOracle.sol";
         
     | 
| 
       24 
14 
     | 
    
         
             
            import {IPolicy} from "../instance/module/IPolicy.sol";
         
     | 
| 
      
 15 
     | 
    
         
            +
            import {IRegistry} from "../registry/IRegistry.sol";
         
     | 
| 
       25 
16 
     | 
    
         
             
            import {IRisk} from "../instance/module/IRisk.sol";
         
     | 
| 
       26 
     | 
    
         
            -
            import {TimestampLib} from "../type/Timestamp.sol";
         
     | 
| 
       27 
17 
     | 
    
         | 
| 
       28 
     | 
    
         
            -
            import { 
     | 
| 
      
 18 
     | 
    
         
            +
            import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
         
     | 
| 
      
 19 
     | 
    
         
            +
            import {Amount} from "../type/Amount.sol";
         
     | 
| 
       29 
20 
     | 
    
         
             
            import {BundleSet} from "./BundleSet.sol";
         
     | 
| 
      
 21 
     | 
    
         
            +
            import {BUNDLE, COMPONENT, DISTRIBUTOR, DISTRIBUTION, FEE, PREMIUM, POLICY, POOL, PRODUCT} from "../type/ObjectType.sol";
         
     | 
| 
      
 22 
     | 
    
         
            +
            import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
         
     | 
| 
      
 23 
     | 
    
         
            +
            import {DistributorType} from "../type/DistributorType.sol";
         
     | 
| 
      
 24 
     | 
    
         
            +
            import {InstanceAdmin} from "./InstanceAdmin.sol";
         
     | 
| 
      
 25 
     | 
    
         
            +
            import {InstanceStore} from "./InstanceStore.sol";
         
     | 
| 
      
 26 
     | 
    
         
            +
            import {Key32} from "../type/Key32.sol";
         
     | 
| 
      
 27 
     | 
    
         
            +
            import {NftId} from "../type/NftId.sol";
         
     | 
| 
      
 28 
     | 
    
         
            +
            import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
         
     | 
| 
      
 29 
     | 
    
         
            +
            import {PolicyServiceLib} from "../product/PolicyServiceLib.sol";
         
     | 
| 
      
 30 
     | 
    
         
            +
            import {ProductStore} from "./ProductStore.sol";
         
     | 
| 
      
 31 
     | 
    
         
            +
            import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
         
     | 
| 
      
 32 
     | 
    
         
            +
            import {RequestId} from "../type/RequestId.sol";
         
     | 
| 
      
 33 
     | 
    
         
            +
            import {RiskId} from "../type/RiskId.sol";
         
     | 
| 
      
 34 
     | 
    
         
            +
            import {RiskSet} from "./RiskSet.sol";
         
     | 
| 
      
 35 
     | 
    
         
            +
            import {RoleId, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
         
     | 
| 
      
 36 
     | 
    
         
            +
            import {StateId} from "../type/StateId.sol";
         
     | 
| 
      
 37 
     | 
    
         
            +
            import {TokenHandler} from "../shared/TokenHandler.sol";
         
     | 
| 
      
 38 
     | 
    
         
            +
            import {UFixed, UFixedLib} from "../type/UFixed.sol";
         
     | 
| 
       30 
39 
     | 
    
         | 
| 
       31 
40 
     | 
    
         | 
| 
      
 41 
     | 
    
         
            +
            /// @dev Central reader contract for a specific instance.
         
     | 
| 
      
 42 
     | 
    
         
            +
            /// Provides reading functions for all instance data and related component data.
         
     | 
| 
       32 
43 
     | 
    
         
             
            contract InstanceReader {
         
     | 
| 
       33 
44 
     | 
    
         | 
| 
       34 
45 
     | 
    
         
             
                error ErrorInstanceReaderAlreadyInitialized();
         
     | 
| 
         @@ -36,9 +47,15 @@ contract InstanceReader { 
     | 
|
| 
       36 
47 
     | 
    
         | 
| 
       37 
48 
     | 
    
         
             
                bool private _initialized = false;
         
     | 
| 
       38 
49 
     | 
    
         | 
| 
      
 50 
     | 
    
         
            +
                IRegistry internal _registry;
         
     | 
| 
       39 
51 
     | 
    
         
             
                IInstance internal _instance;
         
     | 
| 
      
 52 
     | 
    
         
            +
                InstanceAdmin internal _instanceAdmin;
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
       40 
54 
     | 
    
         
             
                InstanceStore internal _store;
         
     | 
| 
      
 55 
     | 
    
         
            +
                ProductStore internal _productStore;
         
     | 
| 
       41 
56 
     | 
    
         
             
                BundleSet internal _bundleSet;
         
     | 
| 
      
 57 
     | 
    
         
            +
                RiskSet internal _riskSet;
         
     | 
| 
      
 58 
     | 
    
         
            +
                IDistributionService internal _distributionService;
         
     | 
| 
       42 
59 
     | 
    
         | 
| 
       43 
60 
     | 
    
         
             
                /// @dev This initializer needs to be called from the instance itself.
         
     | 
| 
       44 
61 
     | 
    
         
             
                function initialize() public {
         
     | 
| 
         @@ -49,348 +66,368 @@ contract InstanceReader { 
     | 
|
| 
       49 
66 
     | 
    
         
             
                    initializeWithInstance(msg.sender);
         
     | 
| 
       50 
67 
     | 
    
         
             
                }
         
     | 
| 
       51 
68 
     | 
    
         | 
| 
       52 
     | 
    
         
            -
             
     | 
| 
       53 
     | 
    
         
            -
                 
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                /// @dev Initializer to upgrade instance reader via instance service
         
     | 
| 
      
 71 
     | 
    
         
            +
                function initializeWithInstance(address instanceAddress)
         
     | 
| 
      
 72 
     | 
    
         
            +
                    public
         
     | 
| 
      
 73 
     | 
    
         
            +
                {
         
     | 
| 
       54 
74 
     | 
    
         
             
                    if(_initialized) {
         
     | 
| 
       55 
75 
     | 
    
         
             
                        revert ErrorInstanceReaderAlreadyInitialized();
         
     | 
| 
       56 
76 
     | 
    
         
             
                    }
         
     | 
| 
       57 
77 
     | 
    
         | 
| 
       58 
78 
     | 
    
         
             
                    _initialized = true;
         
     | 
| 
       59 
79 
     | 
    
         
             
                    _instance = IInstance(instanceAddress);
         
     | 
| 
      
 80 
     | 
    
         
            +
                    _instanceAdmin = _instance.getInstanceAdmin();
         
     | 
| 
      
 81 
     | 
    
         
            +
                    _registry = _instance.getRegistry();
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
       60 
83 
     | 
    
         
             
                    _store = _instance.getInstanceStore();
         
     | 
| 
      
 84 
     | 
    
         
            +
                    _productStore = _instance.getProductStore();
         
     | 
| 
       61 
85 
     | 
    
         
             
                    _bundleSet = _instance.getBundleSet();
         
     | 
| 
      
 86 
     | 
    
         
            +
                    _riskSet = _instance.getRiskSet();
         
     | 
| 
      
 87 
     | 
    
         
            +
                    _distributionService = IDistributionService(_registry.getServiceAddress(DISTRIBUTION(), _instance.getRelease()));
         
     | 
| 
       62 
88 
     | 
    
         
             
                }
         
     | 
| 
       63 
89 
     | 
    
         | 
| 
       64 
90 
     | 
    
         | 
| 
       65 
     | 
    
         
            -
                 
     | 
| 
      
 91 
     | 
    
         
            +
                //--- instance functions ---------------------------------------------------------//
         
     | 
| 
       66 
92 
     | 
    
         | 
| 
       67 
     | 
    
         
            -
                 
     | 
| 
       68 
     | 
    
         
            -
             
     | 
| 
       69 
     | 
    
         
            -
                     
     | 
| 
       70 
     | 
    
         
            -
                    returns (IPolicy.PolicyInfo memory info)
         
     | 
| 
       71 
     | 
    
         
            -
                {
         
     | 
| 
       72 
     | 
    
         
            -
                    bytes memory data = _store.getData(toPolicyKey(policyNftId));
         
     | 
| 
       73 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       74 
     | 
    
         
            -
                        return abi.decode(data, (IPolicy.PolicyInfo));
         
     | 
| 
       75 
     | 
    
         
            -
                    }
         
     | 
| 
      
 93 
     | 
    
         
            +
                /// @dev Returns the registry this instance is registered in.
         
     | 
| 
      
 94 
     | 
    
         
            +
                function getRegistry() public view returns (IRegistry registry) {
         
     | 
| 
      
 95 
     | 
    
         
            +
                    return _registry;
         
     | 
| 
       76 
96 
     | 
    
         
             
                }
         
     | 
| 
       77 
97 
     | 
    
         | 
| 
       78 
     | 
    
         
            -
             
     | 
| 
       79 
     | 
    
         
            -
             
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                     
     | 
| 
       82 
     | 
    
         
            -
                {
         
     | 
| 
       83 
     | 
    
         
            -
                    return _store.getState(toPolicyKey(policyNftId));
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
                /// @dev Returns the instance NFT ID.
         
     | 
| 
      
 100 
     | 
    
         
            +
                function getInstanceNftId() public view returns (NftId instanceNftid) {
         
     | 
| 
      
 101 
     | 
    
         
            +
                    return _registry.getNftIdForAddress(address(_instance));
         
     | 
| 
       84 
102 
     | 
    
         
             
                }
         
     | 
| 
       85 
103 
     | 
    
         | 
| 
       86 
     | 
    
         
            -
             
     | 
| 
       87 
     | 
    
         
            -
             
     | 
| 
       88 
     | 
    
         
            -
             
     | 
| 
       89 
     | 
    
         
            -
                     
     | 
| 
       90 
     | 
    
         
            -
                {
         
     | 
| 
       91 
     | 
    
         
            -
                    bytes memory data = _store.getData(toPremiumKey(policyNftId));
         
     | 
| 
       92 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       93 
     | 
    
         
            -
                        return abi.decode(data, (IPolicy.PremiumInfo));
         
     | 
| 
       94 
     | 
    
         
            -
                    }
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                /// @dev Returns the instance contract.
         
     | 
| 
      
 106 
     | 
    
         
            +
                function getInstance() public view returns (IInstance instance) {
         
     | 
| 
      
 107 
     | 
    
         
            +
                    return _instance;
         
     | 
| 
       95 
108 
     | 
    
         
             
                }
         
     | 
| 
       96 
109 
     | 
    
         | 
| 
       97 
     | 
    
         
            -
             
     | 
| 
       98 
     | 
    
         
            -
             
     | 
| 
       99 
     | 
    
         
            -
             
     | 
| 
       100 
     | 
    
         
            -
             
     | 
| 
       101 
     | 
    
         
            -
                 
     | 
| 
       102 
     | 
    
         
            -
             
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                //--- component functions ------------------------------------------------------//
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
                /// @dev Returns the number of registered components.
         
     | 
| 
      
 114 
     | 
    
         
            +
                /// Components may be products, distributions, oracles or pools.
         
     | 
| 
      
 115 
     | 
    
         
            +
                function components() public view returns (uint256 componentCount) {
         
     | 
| 
      
 116 
     | 
    
         
            +
                    return _instanceAdmin.components();
         
     | 
| 
       103 
117 
     | 
    
         
             
                }
         
     | 
| 
       104 
118 
     | 
    
         | 
| 
       105 
     | 
    
         
            -
             
     | 
| 
       106 
     | 
    
         
            -
             
     | 
| 
       107 
     | 
    
         
            -
             
     | 
| 
       108 
     | 
    
         
            -
                     
     | 
| 
       109 
     | 
    
         
            -
             
     | 
| 
       110 
     | 
    
         
            -
                    return _bundleSet.activeBundles(poolNftId);
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                /// @dev Returns the component info for the given component NFT ID.
         
     | 
| 
      
 121 
     | 
    
         
            +
                function getComponentInfo(NftId componentNftId) public view returns (IComponents.ComponentInfo memory info) {
         
     | 
| 
      
 122 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(_toComponentKey(componentNftId));
         
     | 
| 
      
 123 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IComponents.ComponentInfo)); }
         
     | 
| 
       111 
124 
     | 
    
         
             
                }
         
     | 
| 
       112 
125 
     | 
    
         | 
| 
       113 
     | 
    
         
            -
             
     | 
| 
       114 
     | 
    
         
            -
             
     | 
| 
       115 
     | 
    
         
            -
             
     | 
| 
       116 
     | 
    
         
            -
                     
     | 
| 
       117 
     | 
    
         
            -
             
     | 
| 
       118 
     | 
    
         
            -
                    return _bundleSet.getActiveBundleNftId(poolNftId, idx);
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                /// @dev Returns the registered token for the given component NFT ID.
         
     | 
| 
      
 128 
     | 
    
         
            +
                function getToken(NftId componentNftId) public view returns (IERC20Metadata token) {
         
     | 
| 
      
 129 
     | 
    
         
            +
                    TokenHandler tokenHandler = getTokenHandler(componentNftId);
         
     | 
| 
      
 130 
     | 
    
         
            +
                    if (address(tokenHandler) != address(0)) { return tokenHandler.TOKEN(); }
         
     | 
| 
       119 
131 
     | 
    
         
             
                }
         
     | 
| 
       120 
132 
     | 
    
         | 
| 
       121 
     | 
    
         
            -
             
     | 
| 
       122 
     | 
    
         
            -
             
     | 
| 
       123 
     | 
    
         
            -
             
     | 
| 
       124 
     | 
    
         
            -
             
     | 
| 
       125 
     | 
    
         
            -
                 
     | 
| 
       126 
     | 
    
         
            -
             
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
                /// @dev Returns the current wallet address for the given component NFT ID.
         
     | 
| 
      
 135 
     | 
    
         
            +
                /// The wallet address is either the component's own address or any other wallet address specified by the component owner.
         
     | 
| 
      
 136 
     | 
    
         
            +
                /// The wallet holds the component's funds. Tokens collected by the component are transferred to the wallet and 
         
     | 
| 
      
 137 
     | 
    
         
            +
                /// Tokens distributed from the component are transferred from this wallet.
         
     | 
| 
      
 138 
     | 
    
         
            +
                function getWallet(NftId componentNftId) public view returns (address wallet) {
         
     | 
| 
      
 139 
     | 
    
         
            +
                    TokenHandler tokenHandler = getTokenHandler(componentNftId);
         
     | 
| 
      
 140 
     | 
    
         
            +
                    if (address(tokenHandler) != address(0)) { return tokenHandler.getWallet(); }
         
     | 
| 
       127 
141 
     | 
    
         
             
                }
         
     | 
| 
       128 
142 
     | 
    
         | 
| 
       129 
     | 
    
         
            -
                /// @dev Returns true iff policy is active.
         
     | 
| 
       130 
     | 
    
         
            -
                function policyIsActive(NftId policyNftId)
         
     | 
| 
       131 
     | 
    
         
            -
                    public
         
     | 
| 
       132 
     | 
    
         
            -
                    view
         
     | 
| 
       133 
     | 
    
         
            -
                    returns (bool isCloseable)
         
     | 
| 
       134 
     | 
    
         
            -
                {
         
     | 
| 
       135 
     | 
    
         
            -
                    IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
         
     | 
| 
       136 
143 
     | 
    
         | 
| 
       137 
     | 
    
         
            -
             
     | 
| 
       138 
     | 
    
         
            -
             
     | 
| 
       139 
     | 
    
         
            -
             
     | 
| 
       140 
     | 
    
         
            -
             
     | 
| 
      
 144 
     | 
    
         
            +
                /// @dev Returns the token handler for the given component NFT ID.
         
     | 
| 
      
 145 
     | 
    
         
            +
                /// The token handler manages all transfers from/to the component's wallet.
         
     | 
| 
      
 146 
     | 
    
         
            +
                /// To allow a component to collect funds from an account, it has to create a corresponding allowance from the
         
     | 
| 
      
 147 
     | 
    
         
            +
                /// account to the address of the component's token handler.
         
     | 
| 
      
 148 
     | 
    
         
            +
                function getTokenHandler(NftId componentNftId) public view returns (TokenHandler tokenHandler) {
         
     | 
| 
      
 149 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(_toComponentKey(componentNftId));
         
     | 
| 
      
 150 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IComponents.ComponentInfo)).tokenHandler; }
         
     | 
| 
      
 151 
     | 
    
         
            +
                }
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
       141 
153 
     | 
    
         | 
| 
       142 
     | 
    
         
            -
             
     | 
| 
      
 154 
     | 
    
         
            +
                /// @dev Returns the current token balance amount for the given component NFT ID.
         
     | 
| 
      
 155 
     | 
    
         
            +
                /// The balance amount includes the fee amount.
         
     | 
| 
      
 156 
     | 
    
         
            +
                function getBalanceAmount(NftId targetNftId) external view returns (Amount) { 
         
     | 
| 
      
 157 
     | 
    
         
            +
                    return _store.getBalanceAmount(targetNftId);
         
     | 
| 
       143 
158 
     | 
    
         
             
                }
         
     | 
| 
       144 
159 
     | 
    
         | 
| 
       145 
     | 
    
         
            -
             
     | 
| 
       146 
     | 
    
         
            -
             
     | 
| 
       147 
     | 
    
         
            -
             
     | 
| 
       148 
     | 
    
         
            -
             
     | 
| 
       149 
     | 
    
         
            -
             
     | 
| 
       150 
     | 
    
         
            -
                    return getPolicyInfo(policyNftId).claimsCount;
         
     | 
| 
      
 160 
     | 
    
         
            +
             
     | 
| 
      
 161 
     | 
    
         
            +
                /// @dev Returns the current fee amount for the given NFT ID.
         
     | 
| 
      
 162 
     | 
    
         
            +
                /// The target NFT ID may reference a component, a distributor or a bundle.
         
     | 
| 
      
 163 
     | 
    
         
            +
                function getFeeAmount(NftId targetNftId) external view returns (Amount) { 
         
     | 
| 
      
 164 
     | 
    
         
            +
                    return _store.getFeeAmount(targetNftId);
         
     | 
| 
       151 
165 
     | 
    
         
             
                }
         
     | 
| 
       152 
166 
     | 
    
         | 
| 
       153 
167 
     | 
    
         | 
| 
       154 
     | 
    
         
            -
                 
     | 
| 
       155 
     | 
    
         
            -
             
     | 
| 
       156 
     | 
    
         
            -
             
     | 
| 
       157 
     | 
    
         
            -
                     
     | 
| 
       158 
     | 
    
         
            -
                {
         
     | 
| 
       159 
     | 
    
         
            -
                    return ClaimIdLib.toClaimId(idx + 1);
         
     | 
| 
      
 168 
     | 
    
         
            +
                /// @dev Returns the currently locked amount for the given NFT ID.
         
     | 
| 
      
 169 
     | 
    
         
            +
                /// The target NFT ID may reference a pool or a bundle.
         
     | 
| 
      
 170 
     | 
    
         
            +
                function getLockedAmount(NftId targetNftId) external view returns (Amount) { 
         
     | 
| 
      
 171 
     | 
    
         
            +
                    return _store.getLockedAmount(targetNftId);
         
     | 
| 
       160 
172 
     | 
    
         
             
                }
         
     | 
| 
       161 
173 
     | 
    
         | 
| 
       162 
     | 
    
         
            -
                 
     | 
| 
       163 
     | 
    
         
            -
             
     | 
| 
       164 
     | 
    
         
            -
             
     | 
| 
       165 
     | 
    
         
            -
             
     | 
| 
       166 
     | 
    
         
            -
             
     | 
| 
       167 
     | 
    
         
            -
                    bytes memory data = _store.getData(claimId.toKey32(policyNftId));
         
     | 
| 
       168 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       169 
     | 
    
         
            -
                        return abi.decode(data, (IPolicy.ClaimInfo));
         
     | 
| 
       170 
     | 
    
         
            -
                    }
         
     | 
| 
      
 174 
     | 
    
         
            +
                //--- product functions ------------------------------------------------------//
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
                /// @dev Returns the number of registered products.
         
     | 
| 
      
 177 
     | 
    
         
            +
                function products() public view returns (uint256 productCount) {
         
     | 
| 
      
 178 
     | 
    
         
            +
                    return _instance.products();
         
     | 
| 
       171 
179 
     | 
    
         
             
                }
         
     | 
| 
       172 
180 
     | 
    
         | 
| 
       173 
181 
     | 
    
         | 
| 
       174 
     | 
    
         
            -
                 
     | 
| 
       175 
     | 
    
         
            -
             
     | 
| 
       176 
     | 
    
         
            -
                     
     | 
| 
       177 
     | 
    
         
            -
                    returns (StateId state)
         
     | 
| 
       178 
     | 
    
         
            -
                {
         
     | 
| 
       179 
     | 
    
         
            -
                    return _store.getState(claimId.toKey32(policyNftId));
         
     | 
| 
      
 182 
     | 
    
         
            +
                /// @dev Returns th product NFT ID for the given index.
         
     | 
| 
      
 183 
     | 
    
         
            +
                function getProductNftId(uint256 idx) public view returns (NftId productNftId) {
         
     | 
| 
      
 184 
     | 
    
         
            +
                    return _instance.getProductNftId(idx);
         
     | 
| 
       180 
185 
     | 
    
         
             
                }
         
     | 
| 
       181 
186 
     | 
    
         | 
| 
       182 
187 
     | 
    
         | 
| 
       183 
     | 
    
         
            -
                 
     | 
| 
       184 
     | 
    
         
            -
             
     | 
| 
       185 
     | 
    
         
            -
                     
     | 
| 
       186 
     | 
    
         
            -
                     
     | 
| 
       187 
     | 
    
         
            -
                {
         
     | 
| 
       188 
     | 
    
         
            -
                    return getClaimInfo(policyNftId, claimId).payoutsCount;
         
     | 
| 
      
 188 
     | 
    
         
            +
                /// @dev Returns the product info for the given product NFT ID.
         
     | 
| 
      
 189 
     | 
    
         
            +
                function getProductInfo(NftId productNftId) public view returns (IComponents.ProductInfo memory info) {
         
     | 
| 
      
 190 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(productNftId.toKey32(PRODUCT()));
         
     | 
| 
      
 191 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IComponents.ProductInfo)); }
         
     | 
| 
       189 
192 
     | 
    
         
             
                }
         
     | 
| 
       190 
193 
     | 
    
         | 
| 
       191 
194 
     | 
    
         | 
| 
       192 
     | 
    
         
            -
                 
     | 
| 
       193 
     | 
    
         
            -
             
     | 
| 
       194 
     | 
    
         
            -
                     
     | 
| 
       195 
     | 
    
         
            -
                     
     | 
| 
       196 
     | 
    
         
            -
                 
     | 
| 
       197 
     | 
    
         
            -
             
     | 
| 
      
 195 
     | 
    
         
            +
                /// @dev Returns the current fee settings for the given product NFT ID.
         
     | 
| 
      
 196 
     | 
    
         
            +
                function getFeeInfo(NftId productNftId) public view returns (IComponents.FeeInfo memory feeInfo) {
         
     | 
| 
      
 197 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(productNftId.toKey32(FEE()));
         
     | 
| 
      
 198 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IComponents.FeeInfo)); }
         
     | 
| 
      
 199 
     | 
    
         
            +
                }
         
     | 
| 
      
 200 
     | 
    
         
            +
             
     | 
| 
      
 201 
     | 
    
         
            +
                //--- risk functions ---------------------------------------------------------//
         
     | 
| 
      
 202 
     | 
    
         
            +
             
     | 
| 
      
 203 
     | 
    
         
            +
                /// @dev Returns the total number of registered risks for the specified product.
         
     | 
| 
      
 204 
     | 
    
         
            +
                function risks(NftId productNftId) public view returns (uint256 riskCount) {
         
     | 
| 
      
 205 
     | 
    
         
            +
                    return _riskSet.risks(productNftId);
         
     | 
| 
      
 206 
     | 
    
         
            +
                }
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
      
 209 
     | 
    
         
            +
                /// @dev Returns the number of active risks for the specified product.
         
     | 
| 
      
 210 
     | 
    
         
            +
                function activeRisks(NftId productNftId) public view returns (uint256 activeRiskCount) {
         
     | 
| 
      
 211 
     | 
    
         
            +
                    return _riskSet.activeRisks(productNftId);
         
     | 
| 
      
 212 
     | 
    
         
            +
                }
         
     | 
| 
      
 213 
     | 
    
         
            +
             
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
      
 215 
     | 
    
         
            +
                /// @dev Returns the risk ID for the given product NFT ID and (registered) risk index.
         
     | 
| 
      
 216 
     | 
    
         
            +
                function getRiskId(NftId productNftId, uint256 idx) public view returns (RiskId riskId) {
         
     | 
| 
      
 217 
     | 
    
         
            +
                    return _riskSet.getRiskId(productNftId, idx);
         
     | 
| 
      
 218 
     | 
    
         
            +
                }
         
     | 
| 
      
 219 
     | 
    
         
            +
             
     | 
| 
      
 220 
     | 
    
         
            +
             
     | 
| 
      
 221 
     | 
    
         
            +
                /// @dev Returns the active risk ID for the given product NFT ID and (active) risk index.
         
     | 
| 
      
 222 
     | 
    
         
            +
                function getActiveRiskId(NftId productNftId, uint256 idx) public view returns (RiskId riskId) {
         
     | 
| 
      
 223 
     | 
    
         
            +
                    return _riskSet.getActiveRiskId(productNftId, idx);
         
     | 
| 
      
 224 
     | 
    
         
            +
                }
         
     | 
| 
      
 225 
     | 
    
         
            +
             
     | 
| 
      
 226 
     | 
    
         
            +
             
     | 
| 
      
 227 
     | 
    
         
            +
                /// @dev Returns the risk info for the given risk ID.
         
     | 
| 
      
 228 
     | 
    
         
            +
                function getRiskInfo(RiskId riskId) public view returns (IRisk.RiskInfo memory info) {
         
     | 
| 
      
 229 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(riskId.toKey32()); 
         
     | 
| 
      
 230 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IRisk.RiskInfo)); }
         
     | 
| 
      
 231 
     | 
    
         
            +
                }
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
      
 233 
     | 
    
         
            +
             
     | 
| 
      
 234 
     | 
    
         
            +
                /// @dev Returns the risk state for the given risk ID.
         
     | 
| 
      
 235 
     | 
    
         
            +
                function getRiskState(RiskId riskId) public view returns (StateId stateId) {
         
     | 
| 
      
 236 
     | 
    
         
            +
                    return getState(riskId.toKey32());
         
     | 
| 
      
 237 
     | 
    
         
            +
                }
         
     | 
| 
      
 238 
     | 
    
         
            +
             
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
      
 240 
     | 
    
         
            +
                //--- policy functions -------------------------------------------------------//
         
     | 
| 
      
 241 
     | 
    
         
            +
             
     | 
| 
      
 242 
     | 
    
         
            +
                /// @dev Returns the number of linked policies for the given risk ID.
         
     | 
| 
      
 243 
     | 
    
         
            +
                function policiesForRisk(RiskId riskId) public view returns (uint256 linkedPolicies) {
         
     | 
| 
      
 244 
     | 
    
         
            +
                    return _riskSet.linkedPolicies(riskId);
         
     | 
| 
      
 245 
     | 
    
         
            +
                }
         
     | 
| 
      
 246 
     | 
    
         
            +
             
     | 
| 
      
 247 
     | 
    
         
            +
             
     | 
| 
      
 248 
     | 
    
         
            +
                /// @dev Returns the linked policy NFT ID for the given risk ID and index.
         
     | 
| 
      
 249 
     | 
    
         
            +
                function getPolicyNftIdForRisk(RiskId riskId, uint256 idx) public view returns (NftId linkedPolicyNftId) {
         
     | 
| 
      
 250 
     | 
    
         
            +
                    return _riskSet.getLinkedPolicyNftId(riskId, idx);
         
     | 
| 
      
 251 
     | 
    
         
            +
                }
         
     | 
| 
      
 252 
     | 
    
         
            +
             
     | 
| 
      
 253 
     | 
    
         
            +
             
     | 
| 
      
 254 
     | 
    
         
            +
                /// @dev Returns the info for the given policy NFT ID.
         
     | 
| 
      
 255 
     | 
    
         
            +
                function getPolicyInfo(NftId policyNftId) public view returns (IPolicy.PolicyInfo memory info) {
         
     | 
| 
      
 256 
     | 
    
         
            +
                    return _productStore.getPolicy(policyNftId);
         
     | 
| 
      
 257 
     | 
    
         
            +
                }
         
     | 
| 
      
 258 
     | 
    
         
            +
             
     | 
| 
      
 259 
     | 
    
         
            +
             
     | 
| 
      
 260 
     | 
    
         
            +
                /// @dev Returns the state for the given policy NFT ID.
         
     | 
| 
      
 261 
     | 
    
         
            +
                function getPolicyState(NftId policyNftId) public view returns (StateId state) {
         
     | 
| 
      
 262 
     | 
    
         
            +
                    return _productStore.getState(_toPolicyKey(policyNftId));
         
     | 
| 
      
 263 
     | 
    
         
            +
                }
         
     | 
| 
      
 264 
     | 
    
         
            +
             
     | 
| 
      
 265 
     | 
    
         
            +
             
     | 
| 
      
 266 
     | 
    
         
            +
                /// @dev Returns true iff policy is active.
         
     | 
| 
      
 267 
     | 
    
         
            +
                function policyIsActive(NftId policyNftId) public view returns (bool isCloseable) {
         
     | 
| 
      
 268 
     | 
    
         
            +
                    return PolicyServiceLib.policyIsActive(this, policyNftId);
         
     | 
| 
      
 269 
     | 
    
         
            +
                }
         
     | 
| 
      
 270 
     | 
    
         
            +
             
     | 
| 
      
 271 
     | 
    
         
            +
                //--- claim functions -------------------------------------------------------//
         
     | 
| 
      
 272 
     | 
    
         
            +
             
     | 
| 
      
 273 
     | 
    
         
            +
                /// @dev Returns the number of claims for the given policy NFT ID.
         
     | 
| 
      
 274 
     | 
    
         
            +
                function claims(NftId policyNftId) public view returns (uint16 claimCount) {
         
     | 
| 
      
 275 
     | 
    
         
            +
                    return getPolicyInfo(policyNftId).claimsCount;
         
     | 
| 
      
 276 
     | 
    
         
            +
                }
         
     | 
| 
      
 277 
     | 
    
         
            +
             
     | 
| 
      
 278 
     | 
    
         
            +
             
     | 
| 
      
 279 
     | 
    
         
            +
                /// @dev Returns the claim ID for the given policy NFT ID and index.
         
     | 
| 
      
 280 
     | 
    
         
            +
                function getClaimId(uint256 idx) public pure returns (ClaimId claimId) {
         
     | 
| 
      
 281 
     | 
    
         
            +
                    return ClaimIdLib.toClaimId(idx + 1);
         
     | 
| 
      
 282 
     | 
    
         
            +
                }
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
             
     | 
| 
      
 285 
     | 
    
         
            +
                /// @dev Returns the claim info for the given policy NFT ID and claim ID.
         
     | 
| 
      
 286 
     | 
    
         
            +
                function getClaimInfo(NftId policyNftId, ClaimId claimId) public view returns (IPolicy.ClaimInfo memory info) {
         
     | 
| 
      
 287 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(claimId.toKey32(policyNftId));
         
     | 
| 
      
 288 
     | 
    
         
            +
                    if (success) {
         
     | 
| 
      
 289 
     | 
    
         
            +
                        return abi.decode(data, (IPolicy.ClaimInfo));
         
     | 
| 
      
 290 
     | 
    
         
            +
                    }
         
     | 
| 
      
 291 
     | 
    
         
            +
                }
         
     | 
| 
      
 292 
     | 
    
         
            +
             
     | 
| 
      
 293 
     | 
    
         
            +
             
     | 
| 
      
 294 
     | 
    
         
            +
                /// @dev Returns the current claim state for the given policy NFT ID and claim ID.
         
     | 
| 
      
 295 
     | 
    
         
            +
                function getClaimState(NftId policyNftId, ClaimId claimId) public view returns (StateId state) {
         
     | 
| 
      
 296 
     | 
    
         
            +
                    return getState(claimId.toKey32(policyNftId));
         
     | 
| 
       198 
297 
     | 
    
         
             
                }
         
     | 
| 
       199 
298 
     | 
    
         | 
| 
       200 
299 
     | 
    
         | 
| 
      
 300 
     | 
    
         
            +
                /// @dev Returns the remaining claimable amount for the given policy NFT ID.
         
     | 
| 
      
 301 
     | 
    
         
            +
                /// The remaining claimable amount is the difference between the sum insured amount and total approved claim amounts so far.
         
     | 
| 
       201 
302 
     | 
    
         
             
                function getRemainingClaimableAmount(NftId policyNftId)
         
     | 
| 
       202 
     | 
    
         
            -
                    public
         
     | 
| 
       203 
     | 
    
         
            -
                    view
         
     | 
| 
       204 
     | 
    
         
            -
                    returns (Amount remainingClaimableAmount)
         
     | 
| 
       205 
     | 
    
         
            -
                {
         
     | 
| 
      
 303 
     | 
    
         
            +
                    public view returns (Amount remainingClaimableAmount) {
         
     | 
| 
       206 
304 
     | 
    
         
             
                    IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
         
     | 
| 
       207 
305 
     | 
    
         
             
                    return info.sumInsuredAmount - info.claimAmount;
         
     | 
| 
       208 
306 
     | 
    
         
             
                }
         
     | 
| 
       209 
307 
     | 
    
         | 
| 
       210 
     | 
    
         
            -
                 
     | 
| 
       211 
     | 
    
         
            -
             
     | 
| 
       212 
     | 
    
         
            -
             
     | 
| 
       213 
     | 
    
         
            -
             
     | 
| 
       214 
     | 
    
         
            -
             
     | 
| 
       215 
     | 
    
         
            -
                    bytes memory data = _store.getData(payoutId.toKey32(policyNftId));
         
     | 
| 
       216 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       217 
     | 
    
         
            -
                        return abi.decode(data, (IPolicy.PayoutInfo));
         
     | 
| 
       218 
     | 
    
         
            -
                    }
         
     | 
| 
      
 308 
     | 
    
         
            +
                //--- payout functions -------------------------------------------------------//
         
     | 
| 
      
 309 
     | 
    
         
            +
             
     | 
| 
      
 310 
     | 
    
         
            +
                /// @dev Returns the number of payouts for the given policy NFT ID and claim ID.
         
     | 
| 
      
 311 
     | 
    
         
            +
                function payouts(NftId policyNftId, ClaimId claimId) public view returns (uint24 payoutCount) {
         
     | 
| 
      
 312 
     | 
    
         
            +
                    return getClaimInfo(policyNftId, claimId).payoutsCount;
         
     | 
| 
       219 
313 
     | 
    
         
             
                }
         
     | 
| 
       220 
314 
     | 
    
         | 
| 
       221 
     | 
    
         
            -
             
     | 
| 
       222 
     | 
    
         
            -
             
     | 
| 
       223 
     | 
    
         
            -
             
     | 
| 
       224 
     | 
    
         
            -
                     
     | 
| 
       225 
     | 
    
         
            -
                {
         
     | 
| 
       226 
     | 
    
         
            -
                    return _store.getState(payoutId.toKey32(policyNftId));
         
     | 
| 
      
 315 
     | 
    
         
            +
             
     | 
| 
      
 316 
     | 
    
         
            +
                /// @dev Returns the payout ID for the given claim ID and index.
         
     | 
| 
      
 317 
     | 
    
         
            +
                function getPayoutId(ClaimId claimId, uint24 idx) public pure returns (PayoutId payoutId) {
         
     | 
| 
      
 318 
     | 
    
         
            +
                    return PayoutIdLib.toPayoutId(claimId, idx + 1);
         
     | 
| 
       227 
319 
     | 
    
         
             
                }
         
     | 
| 
       228 
320 
     | 
    
         | 
| 
       229 
     | 
    
         
            -
             
     | 
| 
       230 
     | 
    
         
            -
             
     | 
| 
       231 
     | 
    
         
            -
             
     | 
| 
       232 
     | 
    
         
            -
                     
     | 
| 
       233 
     | 
    
         
            -
             
     | 
| 
       234 
     | 
    
         
            -
                    bytes memory data = _store.getData(riskId.toKey32());
         
     | 
| 
       235 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       236 
     | 
    
         
            -
                        return abi.decode(data, (IRisk.RiskInfo));
         
     | 
| 
       237 
     | 
    
         
            -
                    }
         
     | 
| 
      
 321 
     | 
    
         
            +
             
     | 
| 
      
 322 
     | 
    
         
            +
                /// @dev Returns the payout info for the given policy NFT ID and payout ID.
         
     | 
| 
      
 323 
     | 
    
         
            +
                function getPayoutInfo(NftId policyNftId, PayoutId payoutId) public view returns (IPolicy.PayoutInfo memory info) {
         
     | 
| 
      
 324 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(payoutId.toKey32(policyNftId));
         
     | 
| 
      
 325 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IPolicy.PayoutInfo)); }
         
     | 
| 
       238 
326 
     | 
    
         
             
                }
         
     | 
| 
       239 
327 
     | 
    
         | 
| 
       240 
     | 
    
         
            -
                function getWallet(NftId componentNftId)
         
     | 
| 
       241 
     | 
    
         
            -
                    public
         
     | 
| 
       242 
     | 
    
         
            -
                    view
         
     | 
| 
       243 
     | 
    
         
            -
                    returns (address tokenHandler)
         
     | 
| 
       244 
     | 
    
         
            -
                {
         
     | 
| 
       245 
     | 
    
         
            -
                    bytes memory data = _store.getData(toComponentKey(componentNftId));
         
     | 
| 
       246 
328 
     | 
    
         | 
| 
       247 
     | 
    
         
            -
             
     | 
| 
       248 
     | 
    
         
            -
             
     | 
| 
       249 
     | 
    
         
            -
             
     | 
| 
       250 
     | 
    
         
            -
                    }
         
     | 
| 
      
 329 
     | 
    
         
            +
                /// @dev Returns the payout state for the given policy NFT ID and payout ID.
         
     | 
| 
      
 330 
     | 
    
         
            +
                function getPayoutState(NftId policyNftId, PayoutId payoutId) public view returns (StateId state) {
         
     | 
| 
      
 331 
     | 
    
         
            +
                    return getState(payoutId.toKey32(policyNftId));
         
     | 
| 
       251 
332 
     | 
    
         
             
                }
         
     | 
| 
       252 
333 
     | 
    
         | 
| 
       253 
     | 
    
         
            -
                 
     | 
| 
       254 
     | 
    
         
            -
                    public
         
     | 
| 
       255 
     | 
    
         
            -
                    view
         
     | 
| 
       256 
     | 
    
         
            -
                    returns (address tokenHandler)
         
     | 
| 
       257 
     | 
    
         
            -
                {
         
     | 
| 
       258 
     | 
    
         
            -
                    bytes memory data = _store.getData(toComponentKey(componentNftId));
         
     | 
| 
      
 334 
     | 
    
         
            +
                //--- premium functions -------------------------------------------------------//
         
     | 
| 
       259 
335 
     | 
    
         | 
| 
       260 
     | 
    
         
            -
             
     | 
| 
       261 
     | 
    
         
            -
             
     | 
| 
       262 
     | 
    
         
            -
             
     | 
| 
       263 
     | 
    
         
            -
                    }
         
     | 
| 
      
 336 
     | 
    
         
            +
                /// @dev Returns the premium info for the given policy NFT ID.
         
     | 
| 
      
 337 
     | 
    
         
            +
                function getPremiumInfo(NftId policyNftId) public view returns (IPolicy.PremiumInfo memory info) {
         
     | 
| 
      
 338 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(_toPremiumKey(policyNftId));
         
     | 
| 
      
 339 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IPolicy.PremiumInfo)); }
         
     | 
| 
       264 
340 
     | 
    
         
             
                }
         
     | 
| 
       265 
341 
     | 
    
         | 
| 
       266 
     | 
    
         
            -
             
     | 
| 
       267 
     | 
    
         
            -
             
     | 
| 
       268 
     | 
    
         
            -
             
     | 
| 
       269 
     | 
    
         
            -
                     
     | 
| 
       270 
     | 
    
         
            -
                {
         
     | 
| 
       271 
     | 
    
         
            -
                    bytes memory data = _store.getData(toBundleKey(bundleNftId));
         
     | 
| 
       272 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       273 
     | 
    
         
            -
                        return abi.decode(data, (IBundle.BundleInfo));
         
     | 
| 
       274 
     | 
    
         
            -
                    }
         
     | 
| 
      
 342 
     | 
    
         
            +
             
     | 
| 
      
 343 
     | 
    
         
            +
                /// @dev Returns the premium state for the given policy NFT ID.
         
     | 
| 
      
 344 
     | 
    
         
            +
                function getPremiumState(NftId policyNftId) public view returns (StateId state) {
         
     | 
| 
      
 345 
     | 
    
         
            +
                    return getState(_toPremiumKey(policyNftId));
         
     | 
| 
       275 
346 
     | 
    
         
             
                }
         
     | 
| 
       276 
347 
     | 
    
         | 
| 
       277 
     | 
    
         
            -
                 
     | 
| 
       278 
     | 
    
         
            -
             
     | 
| 
       279 
     | 
    
         
            -
             
     | 
| 
       280 
     | 
    
         
            -
             
     | 
| 
       281 
     | 
    
         
            -
             
     | 
| 
       282 
     | 
    
         
            -
                     
     | 
| 
       283 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       284 
     | 
    
         
            -
                        return abi.decode(data, (IDistribution.DistributorTypeInfo));
         
     | 
| 
       285 
     | 
    
         
            -
                    }
         
     | 
| 
      
 348 
     | 
    
         
            +
                //--- oracle functions ---------------------------------------------------------//
         
     | 
| 
      
 349 
     | 
    
         
            +
             
     | 
| 
      
 350 
     | 
    
         
            +
                /// @dev Returns the request info for the given oracle request ID.
         
     | 
| 
      
 351 
     | 
    
         
            +
                function getRequestInfo(RequestId requestId) public view returns (IOracle.RequestInfo memory requestInfo) {
         
     | 
| 
      
 352 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(requestId.toKey32());
         
     | 
| 
      
 353 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IOracle.RequestInfo)); }
         
     | 
| 
       286 
354 
     | 
    
         
             
                }
         
     | 
| 
       287 
355 
     | 
    
         | 
| 
       288 
     | 
    
         
            -
                 
     | 
| 
       289 
     | 
    
         
            -
             
     | 
| 
       290 
     | 
    
         
            -
             
     | 
| 
       291 
     | 
    
         
            -
             
     | 
| 
       292 
     | 
    
         
            -
             
     | 
| 
       293 
     | 
    
         
            -
                     
     | 
| 
       294 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       295 
     | 
    
         
            -
                        return abi.decode(data, (IDistribution.DistributorInfo));
         
     | 
| 
       296 
     | 
    
         
            -
                    }
         
     | 
| 
      
 356 
     | 
    
         
            +
                //--- pool functions -----------------------------------------------------------//
         
     | 
| 
      
 357 
     | 
    
         
            +
             
     | 
| 
      
 358 
     | 
    
         
            +
                /// @dev Returns the pool info for the given pool NFT ID.
         
     | 
| 
      
 359 
     | 
    
         
            +
                function getPoolInfo(NftId poolNftId) public view returns (IComponents.PoolInfo memory info) {
         
     | 
| 
      
 360 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(poolNftId.toKey32(POOL()));
         
     | 
| 
      
 361 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IComponents.PoolInfo)); }
         
     | 
| 
       297 
362 
     | 
    
         
             
                }
         
     | 
| 
       298 
363 
     | 
    
         | 
| 
       299 
     | 
    
         
            -
                 
     | 
| 
       300 
     | 
    
         
            -
             
     | 
| 
      
 364 
     | 
    
         
            +
                //--- bundle functions -------------------------------------------------------//
         
     | 
| 
      
 365 
     | 
    
         
            +
             
     | 
| 
      
 366 
     | 
    
         
            +
                /// @dev Returns the total number of registered bundles for the given pool.
         
     | 
| 
      
 367 
     | 
    
         
            +
                function bundles(NftId poolNftId) public view returns (uint256 bundleCount) {
         
     | 
| 
      
 368 
     | 
    
         
            +
                    return _bundleSet.bundles(poolNftId);
         
     | 
| 
       301 
369 
     | 
    
         
             
                }
         
     | 
| 
       302 
370 
     | 
    
         | 
| 
       303 
     | 
    
         
            -
             
     | 
| 
       304 
     | 
    
         
            -
             
     | 
| 
      
 371 
     | 
    
         
            +
             
     | 
| 
      
 372 
     | 
    
         
            +
                /// @dev Returns the number of active bundles for the given pool.
         
     | 
| 
      
 373 
     | 
    
         
            +
                function activeBundles(NftId poolNftId) public view returns (uint256 bundleCount) {
         
     | 
| 
      
 374 
     | 
    
         
            +
                    return _bundleSet.activeBundles(poolNftId);
         
     | 
| 
       305 
375 
     | 
    
         
             
                }
         
     | 
| 
       306 
376 
     | 
    
         | 
| 
       307 
     | 
    
         
            -
             
     | 
| 
       308 
     | 
    
         
            -
             
     | 
| 
      
 377 
     | 
    
         
            +
             
     | 
| 
      
 378 
     | 
    
         
            +
                /// @dev Returns the bunde NFT ID for the given pool and index.
         
     | 
| 
      
 379 
     | 
    
         
            +
                function getBundleNftId(NftId poolNftId, uint256 idx) public view returns (NftId bundleNftId) {
         
     | 
| 
      
 380 
     | 
    
         
            +
                    return _bundleSet.getBundleNftId(poolNftId, idx);
         
     | 
| 
       309 
381 
     | 
    
         
             
                }
         
     | 
| 
       310 
382 
     | 
    
         | 
| 
       311 
     | 
    
         
            -
             
     | 
| 
       312 
     | 
    
         
            -
             
     | 
| 
       313 
     | 
    
         
            -
             
     | 
| 
       314 
     | 
    
         
            -
                     
     | 
| 
       315 
     | 
    
         
            -
                {
         
     | 
| 
       316 
     | 
    
         
            -
                    bytes memory data = _store.getData(toComponentKey(componentNftId));
         
     | 
| 
       317 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       318 
     | 
    
         
            -
                        return abi.decode(data, (IComponents.ComponentInfo));
         
     | 
| 
       319 
     | 
    
         
            -
                    }
         
     | 
| 
      
 383 
     | 
    
         
            +
             
     | 
| 
      
 384 
     | 
    
         
            +
                /// @dev Returns the active bunde NFT ID for the given pool and index.
         
     | 
| 
      
 385 
     | 
    
         
            +
                function getActiveBundleNftId(NftId poolNftId, uint256 idx) public view returns (NftId bundleNftId) {
         
     | 
| 
      
 386 
     | 
    
         
            +
                    return _bundleSet.getActiveBundleNftId(poolNftId, idx);
         
     | 
| 
       320 
387 
     | 
    
         
             
                }
         
     | 
| 
       321 
388 
     | 
    
         | 
| 
       322 
     | 
    
         
            -
             
     | 
| 
       323 
     | 
    
         
            -
             
     | 
| 
       324 
     | 
    
         
            -
             
     | 
| 
       325 
     | 
    
         
            -
                     
     | 
| 
       326 
     | 
    
         
            -
             
     | 
| 
       327 
     | 
    
         
            -
                    bytes memory data = _store.getData(toProductKey(productNftId));
         
     | 
| 
       328 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       329 
     | 
    
         
            -
                        return abi.decode(data, (IComponents.ProductInfo));
         
     | 
| 
       330 
     | 
    
         
            -
                    }
         
     | 
| 
      
 389 
     | 
    
         
            +
             
     | 
| 
      
 390 
     | 
    
         
            +
                /// @dev Returns the bundle info for the given bundle NFT ID.
         
     | 
| 
      
 391 
     | 
    
         
            +
                function getBundleInfo(NftId bundleNftId) public view  returns (IBundle.BundleInfo memory info) {
         
     | 
| 
      
 392 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(_toBundleKey(bundleNftId));
         
     | 
| 
      
 393 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IBundle.BundleInfo)); }
         
     | 
| 
       331 
394 
     | 
    
         
             
                }
         
     | 
| 
       332 
395 
     | 
    
         | 
| 
       333 
     | 
    
         
            -
             
     | 
| 
       334 
     | 
    
         
            -
             
     | 
| 
       335 
     | 
    
         
            -
             
     | 
| 
       336 
     | 
    
         
            -
                     
     | 
| 
       337 
     | 
    
         
            -
                {
         
     | 
| 
       338 
     | 
    
         
            -
                    bytes memory data = _store.getData(toPoolKey(poolNftId));
         
     | 
| 
       339 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       340 
     | 
    
         
            -
                        return abi.decode(data, (IComponents.PoolInfo));
         
     | 
| 
       341 
     | 
    
         
            -
                    }
         
     | 
| 
      
 396 
     | 
    
         
            +
             
     | 
| 
      
 397 
     | 
    
         
            +
                /// @dev Returns the bundle state for the given bundle NFT ID.
         
     | 
| 
      
 398 
     | 
    
         
            +
                function getBundleState(NftId bundleNftId) public view returns (StateId state) {
         
     | 
| 
      
 399 
     | 
    
         
            +
                    return getState(_toBundleKey(bundleNftId));
         
     | 
| 
       342 
400 
     | 
    
         
             
                }
         
     | 
| 
       343 
401 
     | 
    
         | 
| 
       344 
     | 
    
         
            -
                 
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
     | 
    
         
            -
             
     | 
| 
       347 
     | 
    
         
            -
                     
     | 
| 
       348 
     | 
    
         
            -
             
     | 
| 
       349 
     | 
    
         
            -
                    bytes memory data = _store.getData(referralId.toKey32());
         
     | 
| 
       350 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       351 
     | 
    
         
            -
                        return abi.decode(data, (IDistribution.ReferralInfo));
         
     | 
| 
       352 
     | 
    
         
            -
                    }
         
     | 
| 
      
 402 
     | 
    
         
            +
                //--- distribution functions -------------------------------------------------------//
         
     | 
| 
      
 403 
     | 
    
         
            +
             
     | 
| 
      
 404 
     | 
    
         
            +
                function getDistributorTypeInfo(DistributorType distributorType) public view returns (IDistribution.DistributorTypeInfo memory info) {
         
     | 
| 
      
 405 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(distributorType.toKey32());
         
     | 
| 
      
 406 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IDistribution.DistributorTypeInfo)); }
         
     | 
| 
       353 
407 
     | 
    
         
             
                }
         
     | 
| 
       354 
408 
     | 
    
         | 
| 
       355 
     | 
    
         
            -
             
     | 
| 
       356 
     | 
    
         
            -
             
     | 
| 
       357 
     | 
    
         
            -
                     
     | 
| 
       358 
     | 
    
         
            -
                     
     | 
| 
       359 
     | 
    
         
            -
                {
         
     | 
| 
       360 
     | 
    
         
            -
                    bytes memory data = _store.getData(requestId.toKey32());
         
     | 
| 
       361 
     | 
    
         
            -
                    if (data.length > 0) {
         
     | 
| 
       362 
     | 
    
         
            -
                        return abi.decode(data, (IOracle.RequestInfo));
         
     | 
| 
       363 
     | 
    
         
            -
                    }
         
     | 
| 
      
 409 
     | 
    
         
            +
             
     | 
| 
      
 410 
     | 
    
         
            +
                function getDistributorInfo(NftId distributorNftId) public view returns (IDistribution.DistributorInfo memory info) {
         
     | 
| 
      
 411 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(distributorNftId.toKey32(DISTRIBUTOR()));
         
     | 
| 
      
 412 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IDistribution.DistributorInfo)); }
         
     | 
| 
       364 
413 
     | 
    
         
             
                }
         
     | 
| 
       365 
414 
     | 
    
         | 
| 
       366 
     | 
    
         
            -
             
     | 
| 
       367 
     | 
    
         
            -
             
     | 
| 
       368 
     | 
    
         
            -
             
     | 
| 
       369 
     | 
    
         
            -
             
     | 
| 
       370 
     | 
    
         
            -
             
     | 
| 
       371 
     | 
    
         
            -
                    return _store.getMetadata(key);
         
     | 
| 
      
 415 
     | 
    
         
            +
             
     | 
| 
      
 416 
     | 
    
         
            +
                //--- referral functions -------------------------------------------------------//
         
     | 
| 
      
 417 
     | 
    
         
            +
             
     | 
| 
      
 418 
     | 
    
         
            +
                function toReferralId(NftId distributionNftId, string memory referralCode) public pure returns (ReferralId referralId) {
         
     | 
| 
      
 419 
     | 
    
         
            +
                    return ReferralLib.toReferralId(distributionNftId, referralCode);      
         
     | 
| 
       372 
420 
     | 
    
         
             
                }
         
     | 
| 
       373 
421 
     | 
    
         | 
| 
       374 
     | 
    
         
            -
             
     | 
| 
       375 
     | 
    
         
            -
             
     | 
| 
       376 
     | 
    
         
            -
                     
     | 
| 
       377 
     | 
    
         
            -
                    returns (StateId state)
         
     | 
| 
       378 
     | 
    
         
            -
                {
         
     | 
| 
       379 
     | 
    
         
            -
                    return _store.getMetadata(key).state;
         
     | 
| 
      
 422 
     | 
    
         
            +
             
     | 
| 
      
 423 
     | 
    
         
            +
                function isReferralValid(NftId distributionNftId, ReferralId referralId) external view returns (bool isValid) {
         
     | 
| 
      
 424 
     | 
    
         
            +
                    return _distributionService.referralIsValid(distributionNftId, referralId);
         
     | 
| 
       380 
425 
     | 
    
         
             
                }
         
     | 
| 
       381 
426 
     | 
    
         | 
| 
       382 
427 
     | 
    
         | 
| 
       383 
     | 
    
         
            -
                function  
     | 
| 
       384 
     | 
    
         
            -
                     
     | 
| 
       385 
     | 
    
         
            -
                     
     | 
| 
       386 
     | 
    
         
            -
                )
         
     | 
| 
       387 
     | 
    
         
            -
                    public
         
     | 
| 
       388 
     | 
    
         
            -
                    pure 
         
     | 
| 
       389 
     | 
    
         
            -
                    returns (ReferralId referralId)
         
     | 
| 
       390 
     | 
    
         
            -
                {
         
     | 
| 
       391 
     | 
    
         
            -
                    return ReferralLib.toReferralId(
         
     | 
| 
       392 
     | 
    
         
            -
                        distributionNftId, 
         
     | 
| 
       393 
     | 
    
         
            -
                        referralCode);      
         
     | 
| 
      
 428 
     | 
    
         
            +
                function getReferralInfo(ReferralId referralId) public view returns (IDistribution.ReferralInfo memory info) {
         
     | 
| 
      
 429 
     | 
    
         
            +
                    (bytes memory data, bool success) = _getData(referralId.toKey32());
         
     | 
| 
      
 430 
     | 
    
         
            +
                    if (success) { return abi.decode(data, (IDistribution.ReferralInfo)); }
         
     | 
| 
       394 
431 
     | 
    
         
             
                }
         
     | 
| 
       395 
432 
     | 
    
         | 
| 
       396 
433 
     | 
    
         | 
| 
         @@ -402,94 +439,196 @@ contract InstanceReader { 
     | 
|
| 
       402 
439 
     | 
    
         
             
                        ReferralStatus status
         
     | 
| 
       403 
440 
     | 
    
         
             
                    )
         
     | 
| 
       404 
441 
     | 
    
         
             
                {
         
     | 
| 
       405 
     | 
    
         
            -
                     
     | 
| 
       406 
     | 
    
         
            -
                         
     | 
| 
      
 442 
     | 
    
         
            +
                    return IDistributionService(
         
     | 
| 
      
 443 
     | 
    
         
            +
                        _registry.getServiceAddress(
         
     | 
| 
      
 444 
     | 
    
         
            +
                            DISTRIBUTION(),
         
     | 
| 
      
 445 
     | 
    
         
            +
                            _instance.getRelease())).getDiscountPercentage(
         
     | 
| 
      
 446 
     | 
    
         
            +
                                this, // instance reader
         
     | 
| 
      
 447 
     | 
    
         
            +
                                referralId);
         
     | 
| 
      
 448 
     | 
    
         
            +
                }
         
     | 
| 
       407 
449 
     | 
    
         | 
| 
       408 
     | 
    
         
            -
             
     | 
| 
       409 
     | 
    
         
            -
                        return (
         
     | 
| 
       410 
     | 
    
         
            -
                            UFixedLib.zero(),
         
     | 
| 
       411 
     | 
    
         
            -
                            REFERRAL_ERROR_UNKNOWN());
         
     | 
| 
       412 
     | 
    
         
            -
                    }
         
     | 
| 
      
 450 
     | 
    
         
            +
                //--- authorization functions -------------------------------------------------------//
         
     | 
| 
       413 
451 
     | 
    
         | 
| 
       414 
     | 
    
         
            -
             
     | 
| 
       415 
     | 
    
         
            -
             
     | 
| 
       416 
     | 
    
         
            -
             
     | 
| 
       417 
     | 
    
         
            -
             
     | 
| 
       418 
     | 
    
         
            -
                    }
         
     | 
| 
      
 452 
     | 
    
         
            +
                /// @dev Returns the number of defined roles.
         
     | 
| 
      
 453 
     | 
    
         
            +
                function roles() public view returns (uint256) {
         
     | 
| 
      
 454 
     | 
    
         
            +
                    return _instanceAdmin.roles();
         
     | 
| 
      
 455 
     | 
    
         
            +
                }
         
     | 
| 
       419 
456 
     | 
    
         | 
| 
       420 
     | 
    
         
            -
                    if (info.usedReferrals >= info.maxReferrals) {
         
     | 
| 
       421 
     | 
    
         
            -
                        return (
         
     | 
| 
       422 
     | 
    
         
            -
                            UFixedLib.zero(),
         
     | 
| 
       423 
     | 
    
         
            -
                            REFERRAL_ERROR_EXHAUSTED());
         
     | 
| 
       424 
     | 
    
         
            -
                    }
         
     | 
| 
       425 
457 
     | 
    
         | 
| 
       426 
     | 
    
         
            -
             
     | 
| 
       427 
     | 
    
         
            -
             
     | 
| 
       428 
     | 
    
         
            -
             
     | 
| 
       429 
     | 
    
         
            -
                    );
         
     | 
| 
      
 458 
     | 
    
         
            +
                /// @dev Returns the role ID for the given index.
         
     | 
| 
      
 459 
     | 
    
         
            +
                function getRoleId(uint256 idx) public view returns (RoleId roleId) {
         
     | 
| 
      
 460 
     | 
    
         
            +
                    return _instanceAdmin.getRoleId(uint64(idx));
         
     | 
| 
       430 
461 
     | 
    
         
             
                }
         
     | 
| 
       431 
462 
     | 
    
         | 
| 
       432 
463 
     | 
    
         | 
| 
       433 
     | 
    
         
            -
                 
     | 
| 
       434 
     | 
    
         
            -
             
     | 
| 
      
 464 
     | 
    
         
            +
                /// @dev Returns the role ID for the instance owner role.
         
     | 
| 
      
 465 
     | 
    
         
            +
                /// This role may be used as a "root" admin role for other custom roles defined for this instance.
         
     | 
| 
      
 466 
     | 
    
         
            +
                function getInstanceOwnerRole() public pure returns (RoleId roleId) {
         
     | 
| 
      
 467 
     | 
    
         
            +
                    return INSTANCE_OWNER_ROLE();
         
     | 
| 
       435 
468 
     | 
    
         
             
                }
         
     | 
| 
       436 
469 
     | 
    
         | 
| 
       437 
470 
     | 
    
         | 
| 
       438 
     | 
    
         
            -
                 
     | 
| 
       439 
     | 
    
         
            -
             
     | 
| 
      
 471 
     | 
    
         
            +
                /// @dev Returns the role info for the given role ID.
         
     | 
| 
      
 472 
     | 
    
         
            +
                function getRoleInfo(RoleId roleId) public view returns (IAccess.RoleInfo memory roleInfo) { 
         
     | 
| 
      
 473 
     | 
    
         
            +
                    return _instanceAdmin.getRoleInfo(roleId);
         
     | 
| 
       440 
474 
     | 
    
         
             
                }
         
     | 
| 
       441 
475 
     | 
    
         | 
| 
       442 
476 
     | 
    
         | 
| 
       443 
     | 
    
         
            -
                 
     | 
| 
       444 
     | 
    
         
            -
             
     | 
| 
      
 477 
     | 
    
         
            +
                /// @dev Returns true iff the provided role ID is defined for this instance.
         
     | 
| 
      
 478 
     | 
    
         
            +
                function roleExists(RoleId roleId) public view returns (bool exists) {
         
     | 
| 
      
 479 
     | 
    
         
            +
                    return _instanceAdmin.roleExists(roleId);
         
     | 
| 
       445 
480 
     | 
    
         
             
                }
         
     | 
| 
       446 
481 
     | 
    
         | 
| 
       447 
     | 
    
         
            -
             
     | 
| 
       448 
     | 
    
         
            -
             
     | 
| 
      
 482 
     | 
    
         
            +
             
     | 
| 
      
 483 
     | 
    
         
            +
                /// @dev Returns true iff the provided role ID represents a custom role ID.
         
     | 
| 
      
 484 
     | 
    
         
            +
                function isRoleCustom(RoleId roleId) public view returns (bool isCustom) {
         
     | 
| 
      
 485 
     | 
    
         
            +
                    return _instanceAdmin.isRoleCustom(roleId);
         
     | 
| 
       449 
486 
     | 
    
         
             
                }
         
     | 
| 
       450 
487 
     | 
    
         | 
| 
       451 
     | 
    
         
            -
             
     | 
| 
       452 
     | 
    
         
            -
             
     | 
| 
      
 488 
     | 
    
         
            +
             
     | 
| 
      
 489 
     | 
    
         
            +
                /// @dev Returns true iff the provided role ID is active.
         
     | 
| 
      
 490 
     | 
    
         
            +
                function isRoleActive(RoleId roleId) public view returns (bool isActive) {
         
     | 
| 
      
 491 
     | 
    
         
            +
                    return _instanceAdmin.isRoleActive(roleId);
         
     | 
| 
       453 
492 
     | 
    
         
             
                }
         
     | 
| 
       454 
493 
     | 
    
         | 
| 
       455 
     | 
    
         
            -
             
     | 
| 
       456 
     | 
    
         
            -
             
     | 
| 
      
 494 
     | 
    
         
            +
             
     | 
| 
      
 495 
     | 
    
         
            +
                /// @dev Returns the number of members (accounts) for the given role ID.
         
     | 
| 
      
 496 
     | 
    
         
            +
                function roleMembers(RoleId roleId) public view returns (uint256 numberOfMembers) {
         
     | 
| 
      
 497 
     | 
    
         
            +
                    return _instanceAdmin.roleMembers(roleId);
         
     | 
| 
       457 
498 
     | 
    
         
             
                }
         
     | 
| 
       458 
499 
     | 
    
         | 
| 
       459 
     | 
    
         
            -
             
     | 
| 
       460 
     | 
    
         
            -
             
     | 
| 
      
 500 
     | 
    
         
            +
             
     | 
| 
      
 501 
     | 
    
         
            +
                /// @dev Returns the member (account address) for the given role ID and index.
         
     | 
| 
      
 502 
     | 
    
         
            +
                function getRoleMember(RoleId roleId, uint256 idx) public view returns (address account) {
         
     | 
| 
      
 503 
     | 
    
         
            +
                    return _instanceAdmin.getRoleMember(roleId, idx);
         
     | 
| 
       461 
504 
     | 
    
         
             
                }
         
     | 
| 
       462 
505 
     | 
    
         | 
| 
       463 
     | 
    
         
            -
             
     | 
| 
       464 
     | 
    
         
            -
             
     | 
| 
      
 506 
     | 
    
         
            +
             
     | 
| 
      
 507 
     | 
    
         
            +
                /// @dev Returns true iff the given account is a member of the specified role ID.
         
     | 
| 
      
 508 
     | 
    
         
            +
                function isRoleMember(RoleId roleId, address account) public view returns (bool isMember) {
         
     | 
| 
      
 509 
     | 
    
         
            +
                    return _instanceAdmin.isRoleMember(roleId, account);
         
     | 
| 
      
 510 
     | 
    
         
            +
                }
         
     | 
| 
      
 511 
     | 
    
         
            +
             
     | 
| 
      
 512 
     | 
    
         
            +
             
     | 
| 
      
 513 
     | 
    
         
            +
                /// @dev Returns true iff the given account is an admin of the specified role ID.
         
     | 
| 
      
 514 
     | 
    
         
            +
                /// Role admins may grant and revoke the role to other accounts.
         
     | 
| 
      
 515 
     | 
    
         
            +
                function isRoleAdmin(RoleId roleId, address account) public view returns (bool isMember) {
         
     | 
| 
      
 516 
     | 
    
         
            +
                    return _instanceAdmin.isRoleAdmin(roleId, account);
         
     | 
| 
      
 517 
     | 
    
         
            +
                }
         
     | 
| 
      
 518 
     | 
    
         
            +
             
     | 
| 
      
 519 
     | 
    
         
            +
             
     | 
| 
      
 520 
     | 
    
         
            +
                /// @dev Returns the number of targets (contracts) defined for this instance.
         
     | 
| 
      
 521 
     | 
    
         
            +
                function targets() public view returns (uint256 targetCount) {
         
     | 
| 
      
 522 
     | 
    
         
            +
                    return _instanceAdmin.targets();
         
     | 
| 
       465 
523 
     | 
    
         
             
                }
         
     | 
| 
       466 
524 
     | 
    
         | 
| 
       467 
     | 
    
         
            -
             
     | 
| 
       468 
     | 
    
         
            -
             
     | 
| 
      
 525 
     | 
    
         
            +
             
     | 
| 
      
 526 
     | 
    
         
            +
                /// @dev Returns the target address for the given index.
         
     | 
| 
      
 527 
     | 
    
         
            +
                function getTargetAddress(uint256 idx) public view returns (address target) {
         
     | 
| 
      
 528 
     | 
    
         
            +
                    return _instanceAdmin.getTargetAddress(idx);
         
     | 
| 
       469 
529 
     | 
    
         
             
                }
         
     | 
| 
       470 
530 
     | 
    
         | 
| 
       471 
     | 
    
         
            -
             
     | 
| 
       472 
     | 
    
         
            -
             
     | 
| 
      
 531 
     | 
    
         
            +
             
     | 
| 
      
 532 
     | 
    
         
            +
                /// @dev Returns the target info for the given target address.
         
     | 
| 
      
 533 
     | 
    
         
            +
                function getTargetInfo(address target) public view returns (IAccess.TargetInfo memory targetInfo) {
         
     | 
| 
      
 534 
     | 
    
         
            +
                    return _instanceAdmin.getTargetInfo(target);
         
     | 
| 
       473 
535 
     | 
    
         
             
                }
         
     | 
| 
       474 
536 
     | 
    
         | 
| 
       475 
     | 
    
         
            -
             
     | 
| 
       476 
     | 
    
         
            -
             
     | 
| 
      
 537 
     | 
    
         
            +
             
     | 
| 
      
 538 
     | 
    
         
            +
                /// @dev Returns true iff the given target is defined for this instance.
         
     | 
| 
      
 539 
     | 
    
         
            +
                function targetExists(address target) public view returns (bool exists) {
         
     | 
| 
      
 540 
     | 
    
         
            +
                    return _instanceAdmin.targetExists(target);
         
     | 
| 
       477 
541 
     | 
    
         
             
                }
         
     | 
| 
       478 
542 
     | 
    
         | 
| 
       479 
     | 
    
         
            -
             
     | 
| 
       480 
     | 
    
         
            -
                 
     | 
| 
       481 
     | 
    
         
            -
             
     | 
| 
      
 543 
     | 
    
         
            +
             
     | 
| 
      
 544 
     | 
    
         
            +
                /// @dev Returns true iff the given target is locked.
         
     | 
| 
      
 545 
     | 
    
         
            +
                function isLocked(address target) public view returns (bool) {
         
     | 
| 
      
 546 
     | 
    
         
            +
                    return _instanceAdmin.isTargetLocked(target);
         
     | 
| 
      
 547 
     | 
    
         
            +
                }
         
     | 
| 
      
 548 
     | 
    
         
            +
             
     | 
| 
      
 549 
     | 
    
         
            +
             
     | 
| 
      
 550 
     | 
    
         
            +
                /// @dev Returns the number of authorized functions for the given target.
         
     | 
| 
      
 551 
     | 
    
         
            +
                function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
         
     | 
| 
      
 552 
     | 
    
         
            +
                    return _instanceAdmin.authorizedFunctions(target);
         
     | 
| 
      
 553 
     | 
    
         
            +
                }
         
     | 
| 
      
 554 
     | 
    
         
            +
             
     | 
| 
      
 555 
     | 
    
         
            +
             
     | 
| 
      
 556 
     | 
    
         
            +
                /// @dev Returns the authorized function info for the given target and index.
         
     | 
| 
      
 557 
     | 
    
         
            +
                function getAuthorizedFunction(address target, uint256 idx) external view returns (IAccess.FunctionInfo memory func, RoleId roleId) {
         
     | 
| 
      
 558 
     | 
    
         
            +
                    return _instanceAdmin.getAuthorizedFunction(target, idx);
         
     | 
| 
      
 559 
     | 
    
         
            +
                }
         
     | 
| 
      
 560 
     | 
    
         
            +
             
     | 
| 
      
 561 
     | 
    
         
            +
             
     | 
| 
      
 562 
     | 
    
         
            +
                /// @dev Returns a function info for the given function signature and function name.
         
     | 
| 
      
 563 
     | 
    
         
            +
                /// The function signature must not be zero and the function name must not be empty.
         
     | 
| 
      
 564 
     | 
    
         
            +
                function toFunction(bytes4 signature, string memory name) public view returns (IAccess.FunctionInfo memory) {
         
     | 
| 
      
 565 
     | 
    
         
            +
                    return AccessAdminLib.toFunction(signature, name);
         
     | 
| 
      
 566 
     | 
    
         
            +
                }
         
     | 
| 
      
 567 
     | 
    
         
            +
             
     | 
| 
      
 568 
     | 
    
         
            +
                //--- low level function ----------------------------------------------------//
         
     | 
| 
      
 569 
     | 
    
         
            +
             
     | 
| 
      
 570 
     | 
    
         
            +
                function getInstanceAdmin() external view returns (InstanceAdmin instanceAdmin) {
         
     | 
| 
      
 571 
     | 
    
         
            +
                    return _instanceAdmin;
         
     | 
| 
       482 
572 
     | 
    
         
             
                }
         
     | 
| 
       483 
573 
     | 
    
         | 
| 
       484 
574 
     | 
    
         
             
                function getInstanceStore() external view returns (IKeyValueStore store) {
         
     | 
| 
       485 
575 
     | 
    
         
             
                    return _store;
         
     | 
| 
       486 
576 
     | 
    
         
             
                }
         
     | 
| 
       487 
577 
     | 
    
         | 
| 
      
 578 
     | 
    
         
            +
             
     | 
| 
      
 579 
     | 
    
         
            +
                function getBundleSet() external view returns (BundleSet bundleSet) {
         
     | 
| 
      
 580 
     | 
    
         
            +
                    return _bundleSet;
         
     | 
| 
      
 581 
     | 
    
         
            +
                }
         
     | 
| 
      
 582 
     | 
    
         
            +
             
     | 
| 
      
 583 
     | 
    
         
            +
             
     | 
| 
      
 584 
     | 
    
         
            +
                function getRiskSet() external view returns (RiskSet riskSet) {
         
     | 
| 
      
 585 
     | 
    
         
            +
                    return _riskSet;
         
     | 
| 
      
 586 
     | 
    
         
            +
                }
         
     | 
| 
      
 587 
     | 
    
         
            +
             
     | 
| 
      
 588 
     | 
    
         
            +
             
     | 
| 
      
 589 
     | 
    
         
            +
                function getMetadata(Key32 key) public view returns (IKeyValueStore.Metadata memory metadata) {
         
     | 
| 
      
 590 
     | 
    
         
            +
                    return _store.getMetadata(key);
         
     | 
| 
      
 591 
     | 
    
         
            +
                }
         
     | 
| 
      
 592 
     | 
    
         
            +
             
     | 
| 
      
 593 
     | 
    
         
            +
             
     | 
| 
      
 594 
     | 
    
         
            +
                function getState(Key32 key) public view returns (StateId state) {
         
     | 
| 
      
 595 
     | 
    
         
            +
                    return _store.getState(key);
         
     | 
| 
      
 596 
     | 
    
         
            +
                }
         
     | 
| 
      
 597 
     | 
    
         
            +
             
     | 
| 
      
 598 
     | 
    
         
            +
             
     | 
| 
       488 
599 
     | 
    
         
             
                function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
         
     | 
| 
       489 
600 
     | 
    
         
             
                    return UFixedLib.toUFixed(value, exp);
         
     | 
| 
       490 
601 
     | 
    
         
             
                }
         
     | 
| 
       491 
602 
     | 
    
         | 
| 
      
 603 
     | 
    
         
            +
             
     | 
| 
       492 
604 
     | 
    
         
             
                function toInt(UFixed value) public pure returns (uint256) {
         
     | 
| 
       493 
605 
     | 
    
         
             
                    return UFixedLib.toInt(value);
         
     | 
| 
       494 
606 
     | 
    
         
             
                }
         
     | 
| 
      
 607 
     | 
    
         
            +
             
     | 
| 
      
 608 
     | 
    
         
            +
                //--- internal functions ----------------------------------------------------//
         
     | 
| 
      
 609 
     | 
    
         
            +
             
     | 
| 
      
 610 
     | 
    
         
            +
                function _getData(Key32 key) internal view returns (bytes memory data, bool success) {
         
     | 
| 
      
 611 
     | 
    
         
            +
                    data = _store.getData(key);
         
     | 
| 
      
 612 
     | 
    
         
            +
                    return (data, data.length > 0);
         
     | 
| 
      
 613 
     | 
    
         
            +
                }
         
     | 
| 
      
 614 
     | 
    
         
            +
             
     | 
| 
      
 615 
     | 
    
         
            +
             
     | 
| 
      
 616 
     | 
    
         
            +
                function _toPolicyKey(NftId policyNftId) internal pure returns (Key32) { 
         
     | 
| 
      
 617 
     | 
    
         
            +
                    return policyNftId.toKey32(POLICY());
         
     | 
| 
      
 618 
     | 
    
         
            +
                }
         
     | 
| 
      
 619 
     | 
    
         
            +
             
     | 
| 
      
 620 
     | 
    
         
            +
             
     | 
| 
      
 621 
     | 
    
         
            +
                function _toPremiumKey(NftId policyNftId) internal pure returns (Key32) { 
         
     | 
| 
      
 622 
     | 
    
         
            +
                    return policyNftId.toKey32(PREMIUM());
         
     | 
| 
      
 623 
     | 
    
         
            +
                }
         
     | 
| 
      
 624 
     | 
    
         
            +
             
     | 
| 
      
 625 
     | 
    
         
            +
             
     | 
| 
      
 626 
     | 
    
         
            +
                function _toBundleKey(NftId poolNftId) internal pure returns (Key32) { 
         
     | 
| 
      
 627 
     | 
    
         
            +
                    return poolNftId.toKey32(BUNDLE());
         
     | 
| 
      
 628 
     | 
    
         
            +
                }
         
     | 
| 
      
 629 
     | 
    
         
            +
             
     | 
| 
      
 630 
     | 
    
         
            +
             
     | 
| 
      
 631 
     | 
    
         
            +
                function _toComponentKey(NftId componentNftId) internal pure returns (Key32) { 
         
     | 
| 
      
 632 
     | 
    
         
            +
                    return componentNftId.toKey32(COMPONENT());
         
     | 
| 
      
 633 
     | 
    
         
            +
                }
         
     | 
| 
       495 
634 
     | 
    
         
             
            }
         
     |