@etherisc/gif-next 0.0.2-f1e0c66-773 → 0.0.2-f1f3b2c-994
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 +7 -2
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
- package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +81 -63
- package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +2 -2
- 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 +48 -30
- package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +21 -2
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +2 -2
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
- package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +72 -9
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +63 -248
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
- package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -222
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +134 -286
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +84 -120
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +21 -37
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +49 -62
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1512 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +410 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1999 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +414 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
- package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1432 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1192 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1566 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
- package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2001 -0
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +10 -99
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +145 -111
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +14 -14
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -124
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -146
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +61 -81
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +285 -218
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
- 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 +45 -4
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- 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/mock/Dip.sol/Dip.json +2 -2
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +47 -232
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
- package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +18 -18
- 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 +15 -31
- package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
- package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +15 -216
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +37 -144
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +60 -80
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +51 -274
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
- package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
- package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +319 -188
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +130 -94
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +149 -23
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -88
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +360 -171
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/pool/Pool.sol/Pool.json +41 -270
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +492 -333
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +98 -82
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +36 -162
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +57 -89
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +43 -242
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
- package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +263 -181
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +104 -100
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +147 -6
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +282 -119
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +43 -43
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +43 -57
- package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
- package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +399 -327
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +104 -100
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +115 -267
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +80 -120
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/product/Product.sol/Product.json +43 -242
- package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
- package/artifacts/contracts/product/RiskService.sol/RiskService.json +588 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +682 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +238 -34
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- 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 +436 -95
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +261 -143
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +23 -313
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +52 -72
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +46 -5
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +117 -215
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
- package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +70 -12
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/shared/Component.sol/Component.json +15 -205
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +89 -212
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +96 -114
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
- package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +5 -112
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
- package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +92 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +15 -20
- package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +15 -31
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -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/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
- package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +15 -216
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +41 -0
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +41 -0
- 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 +6 -57
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -97
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +5 -112
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
- package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
- package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
- package/artifacts/contracts/staking/IStaking.sol/IStaking.json +42 -21
- package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
- package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
- package/artifacts/contracts/staking/Staking.sol/Staking.json +100 -256
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +45 -4
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +77 -88
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +31 -138
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +56 -76
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
- package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +168 -127
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
- package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
- 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 +32 -8
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
- 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 +2 -2
- 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/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
- 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 +2 -2
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
- 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 +60 -4
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +50 -2
- package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
- package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
- package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +39 -70
- package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
- package/contracts/authorization/AccessAdmin.sol +31 -24
- package/contracts/authorization/Authorization.sol +5 -2
- package/contracts/authorization/IAccessAdmin.sol +3 -2
- package/contracts/authorization/IServiceAuthorization.sol +4 -2
- package/contracts/authorization/ServiceAuthorization.sol +27 -11
- package/contracts/distribution/Distribution.sol +1 -1
- package/contracts/distribution/DistributionService.sol +32 -33
- package/contracts/distribution/DistributionServiceManager.sol +6 -6
- package/contracts/distribution/IDistributionService.sol +9 -5
- package/contracts/examples/fire/DamageLevel.sol +59 -0
- package/contracts/examples/fire/FirePool.sol +75 -0
- package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
- package/contracts/examples/fire/FireProduct.sol +411 -0
- package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
- package/contracts/examples/fire/FireUSD.sol +26 -0
- package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
- package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
- package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
- package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
- package/contracts/instance/IInstance.sol +7 -30
- package/contracts/instance/Instance.sol +10 -35
- package/contracts/instance/InstanceAdmin.sol +29 -7
- package/contracts/instance/InstanceAuthorizationV3.sol +3 -3
- package/contracts/instance/InstanceReader.sol +115 -25
- package/contracts/instance/InstanceService.sol +63 -41
- package/contracts/instance/InstanceServiceManager.sol +6 -7
- package/contracts/instance/InstanceStore.sol +11 -1
- package/contracts/instance/base/ObjectLifecycle.sol +9 -4
- package/contracts/instance/module/IBundle.sol +1 -1
- package/contracts/instance/module/IComponents.sol +4 -7
- package/contracts/instance/module/IPolicy.sol +24 -24
- package/contracts/mock/Dip.sol +1 -1
- package/contracts/oracle/Oracle.sol +2 -1
- package/contracts/oracle/OracleService.sol +11 -8
- package/contracts/oracle/OracleServiceManager.sol +6 -6
- package/contracts/pool/BasicPool.sol +7 -5
- package/contracts/pool/BasicPoolAuthorization.sol +5 -2
- package/contracts/pool/BundleService.sol +166 -46
- package/contracts/pool/BundleServiceManager.sol +6 -6
- package/contracts/pool/IBundleService.sol +31 -8
- package/contracts/pool/IPoolComponent.sol +18 -8
- package/contracts/pool/IPoolService.sol +57 -36
- package/contracts/pool/Pool.sol +59 -34
- package/contracts/pool/PoolService.sol +231 -102
- package/contracts/pool/PoolServiceManager.sol +4 -4
- package/contracts/product/ApplicationService.sol +50 -29
- package/contracts/product/ApplicationServiceManager.sol +4 -4
- package/contracts/product/BasicProduct.sol +1 -0
- package/contracts/product/ClaimService.sol +251 -87
- package/contracts/product/ClaimServiceManager.sol +4 -4
- package/contracts/product/IApplicationService.sol +1 -0
- package/contracts/product/IClaimService.sol +31 -7
- package/contracts/product/IPolicyService.sol +34 -34
- package/contracts/product/IPricingService.sol +7 -7
- package/contracts/product/IProductComponent.sol +17 -4
- package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
- package/contracts/product/PolicyService.sol +379 -192
- package/contracts/product/PolicyServiceManager.sol +4 -4
- package/contracts/product/PricingService.sol +46 -46
- package/contracts/product/PricingServiceManager.sol +3 -3
- package/contracts/product/Product.sol +81 -50
- package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
- package/contracts/product/RiskServiceManager.sol +39 -0
- package/contracts/registry/ChainNft.sol +65 -32
- package/contracts/registry/IRegistry.sol +51 -18
- package/contracts/registry/IRegistryService.sol +0 -9
- package/contracts/registry/Registry.sol +328 -197
- package/contracts/registry/RegistryAdmin.sol +134 -51
- package/contracts/registry/RegistryService.sol +55 -48
- package/contracts/registry/RegistryServiceManager.sol +2 -2
- package/contracts/registry/ReleaseLifecycle.sol +6 -3
- package/contracts/registry/ReleaseRegistry.sol +194 -183
- package/contracts/registry/ServiceAuthorizationV3.sol +8 -10
- package/contracts/shared/Component.sol +25 -29
- package/contracts/shared/ComponentService.sol +20 -30
- package/contracts/shared/ComponentServiceManager.sol +8 -5
- package/contracts/shared/ComponentVerifyingService.sol +2 -3
- package/contracts/shared/ContractLib.sol +38 -0
- package/contracts/shared/IComponent.sol +7 -4
- package/contracts/shared/IInstanceLinkedComponent.sol +8 -15
- package/contracts/shared/ILifecycle.sol +3 -1
- package/contracts/shared/IPolicyHolder.sol +12 -22
- package/contracts/shared/InitializableERC165.sol +2 -2
- package/contracts/shared/InstanceLinkedComponent.sol +5 -6
- package/contracts/shared/KeyValueStore.sol +1 -1
- package/contracts/shared/Lifecycle.sol +13 -2
- package/contracts/shared/NftOwnable.sol +5 -5
- package/contracts/shared/PolicyHolder.sol +15 -52
- package/contracts/shared/Registerable.sol +4 -4
- package/contracts/shared/RegistryLinked.sol +3 -2
- package/contracts/shared/Service.sol +16 -11
- package/contracts/shared/TokenHandler.sol +100 -19
- package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
- package/contracts/staking/IStaking.sol +2 -1
- package/contracts/staking/StakeManagerLib.sol +18 -25
- package/contracts/staking/Staking.sol +11 -29
- package/contracts/staking/StakingManager.sol +8 -6
- package/contracts/staking/StakingReader.sol +12 -5
- package/contracts/staking/StakingService.sol +10 -14
- package/contracts/staking/StakingServiceManager.sol +2 -2
- package/contracts/staking/TargetManagerLib.sol +7 -3
- package/contracts/type/Amount.sol +15 -0
- package/contracts/type/Blocknumber.sol +7 -1
- package/contracts/type/ClaimId.sol +6 -1
- package/contracts/type/NftId.sol +1 -0
- package/contracts/type/ObjectType.sol +16 -11
- package/contracts/type/PayoutId.sol +10 -10
- package/contracts/type/RiskId.sol +15 -1
- package/contracts/type/Seconds.sol +21 -1
- package/contracts/type/StateId.sol +15 -1
- package/contracts/type/Timestamp.sol +11 -1
- package/contracts/type/UFixed.sol +4 -0
- package/contracts/upgradeability/ProxyManager.sol +67 -34
- package/contracts/upgradeability/Versionable.sol +2 -2
- package/package.json +2 -1
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
- package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
- package/contracts/product/ProductServiceManager.sol +0 -39
- package/contracts/shared/InitializableCustom.sol +0 -177
| @@ -122,11 +122,10 @@ contract StakingService is | |
| 122 122 |  | 
| 123 123 | 
             
                    // transfer withdrawal amount to target owner
         | 
| 124 124 | 
             
                    address instanceOwner = getRegistry().ownerOf(instanceNftId);
         | 
| 125 | 
            +
                    emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
         | 
| 125 126 | 
             
                    $._staking.transferDipAmount(
         | 
| 126 127 | 
             
                        instanceOwner,
         | 
| 127 128 | 
             
                        dipAmount);
         | 
| 128 | 
            -
             | 
| 129 | 
            -
                    emit LogStakingServiceRewardReservesDecreased(instanceNftId, instanceOwner, dipAmount, newBalance);
         | 
| 130 129 | 
             
                }
         | 
| 131 130 |  | 
| 132 131 |  | 
| @@ -169,12 +168,12 @@ contract StakingService is | |
| 169 168 | 
             
                        targetNftId,
         | 
| 170 169 | 
             
                        dipAmount);
         | 
| 171 170 |  | 
| 171 | 
            +
                    emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
         | 
| 172 | 
            +
             | 
| 172 173 | 
             
                    // collect staked dip by staking
         | 
| 173 174 | 
             
                    $._staking.collectDipAmount(
         | 
| 174 175 | 
             
                        stakeOwner,
         | 
| 175 176 | 
             
                        dipAmount);
         | 
| 176 | 
            -
             | 
| 177 | 
            -
                    emit LogStakingServiceStakeCreated(stakeNftId, targetNftId, stakeOwner, dipAmount);
         | 
| 178 177 | 
             
                }
         | 
| 179 178 |  | 
| 180 179 |  | 
| @@ -197,12 +196,11 @@ contract StakingService is | |
| 197 196 |  | 
| 198 197 | 
             
                    // collect staked dip by staking
         | 
| 199 198 | 
             
                    if (dipAmount.gtz()) {
         | 
| 199 | 
            +
                        emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
         | 
| 200 200 | 
             
                        $._staking.collectDipAmount(
         | 
| 201 201 | 
             
                            stakeOwner,
         | 
| 202 202 | 
             
                            dipAmount);
         | 
| 203 203 | 
             
                    }
         | 
| 204 | 
            -
             | 
| 205 | 
            -
                    emit LogStakingServiceStakeIncreased(stakeNftId, stakeOwner, dipAmount, stakeBalance);
         | 
| 206 204 | 
             
                }
         | 
| 207 205 |  | 
| 208 206 |  | 
| @@ -247,11 +245,10 @@ contract StakingService is | |
| 247 245 | 
             
                    address stakeOwner = msg.sender;
         | 
| 248 246 |  | 
| 249 247 | 
             
                    Amount rewardsClaimedAmount = $._staking.claimRewards(stakeNftId);
         | 
| 248 | 
            +
                    emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
         | 
| 250 249 | 
             
                    $._staking.transferDipAmount(
         | 
| 251 250 | 
             
                        stakeOwner,
         | 
| 252 251 | 
             
                        rewardsClaimedAmount);
         | 
| 253 | 
            -
             | 
| 254 | 
            -
                    emit LogStakingServiceRewardsClaimed(stakeNftId, stakeOwner, rewardsClaimedAmount);
         | 
| 255 252 | 
             
                }
         | 
| 256 253 |  | 
| 257 254 |  | 
| @@ -270,11 +267,10 @@ contract StakingService is | |
| 270 267 | 
             
                    ) = $._staking.unstake(stakeNftId);
         | 
| 271 268 |  | 
| 272 269 | 
             
                    Amount totalAmount = unstakedAmount + rewardsClaimedAmount;
         | 
| 270 | 
            +
                    emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
         | 
| 273 271 | 
             
                    $._staking.transferDipAmount(
         | 
| 274 272 | 
             
                        stakeOwner,
         | 
| 275 273 | 
             
                        totalAmount);
         | 
| 276 | 
            -
             | 
| 277 | 
            -
                    emit LogStakingServiceUnstaked(stakeNftId, stakeOwner, totalAmount);
         | 
| 278 274 | 
             
                }
         | 
| 279 275 |  | 
| 280 276 |  | 
| @@ -335,7 +331,7 @@ contract StakingService is | |
| 335 331 | 
             
                        address stakingAddress
         | 
| 336 332 | 
             
                    ) = abi.decode(data, (address, address, address));
         | 
| 337 333 |  | 
| 338 | 
            -
                     | 
| 334 | 
            +
                    _initializeService(registryAddress, authority, owner);
         | 
| 339 335 |  | 
| 340 336 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 341 337 | 
             
                    $._registryService = RegistryService(_getServiceAddress(REGISTRY()));
         | 
| @@ -343,7 +339,7 @@ contract StakingService is | |
| 343 339 | 
             
                    $._dip = $._staking.getToken();
         | 
| 344 340 | 
             
                    $._tokenHandler = $._staking.getTokenHandler();
         | 
| 345 341 |  | 
| 346 | 
            -
                     | 
| 342 | 
            +
                    _registerInterface(type(IStakingService).interfaceId);
         | 
| 347 343 | 
             
                }
         | 
| 348 344 |  | 
| 349 345 |  | 
| @@ -389,12 +385,12 @@ contract StakingService is | |
| 389 385 | 
             
                    StakingServiceStorage storage $ = _getStakingServiceStorage();
         | 
| 390 386 | 
             
                    newBalance = $._staking.refillRewardReserves(targetNftId, dipAmount);
         | 
| 391 387 |  | 
| 388 | 
            +
                    emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
         | 
| 389 | 
            +
             | 
| 392 390 | 
             
                    // collect reward dip from provider
         | 
| 393 391 | 
             
                    $._staking.collectDipAmount(
         | 
| 394 392 | 
             
                        rewardProvider,
         | 
| 395 393 | 
             
                        dipAmount);
         | 
| 396 | 
            -
             | 
| 397 | 
            -
                    emit LogStakingServiceRewardReservesIncreased(targetNftId, rewardProvider, dipAmount, newBalance);
         | 
| 398 394 | 
             
                }
         | 
| 399 395 |  | 
| 400 396 |  | 
| @@ -18,14 +18,14 @@ contract StakingServiceManager is | |
| 18 18 | 
             
                    address registryAddress,
         | 
| 19 19 | 
             
                    bytes32 salt
         | 
| 20 20 | 
             
                )
         | 
| 21 | 
            -
                    ProxyManager(registryAddress)
         | 
| 22 21 | 
             
                {
         | 
| 23 22 | 
             
                    StakingService svc = new StakingService();
         | 
| 24 23 | 
             
                    bytes memory data = abi.encode(
         | 
| 25 24 | 
             
                        authority, 
         | 
| 26 25 | 
             
                        registryAddress, 
         | 
| 27 26 | 
             
                        IRegistry(registryAddress).getStakingAddress());
         | 
| 28 | 
            -
                    IVersionable versionable =  | 
| 27 | 
            +
                    IVersionable versionable = initialize(
         | 
| 28 | 
            +
                        registryAddress,
         | 
| 29 29 | 
             
                        address(svc), 
         | 
| 30 30 | 
             
                        data,
         | 
| 31 31 | 
             
                        salt);
         | 
| @@ -132,9 +132,9 @@ library TargetManagerLib { | |
| 132 132 | 
             
                    public 
         | 
| 133 133 | 
             
                    pure
         | 
| 134 134 | 
             
                {
         | 
| 135 | 
            -
                    // check locking period is  | 
| 136 | 
            -
                    if (lockingPeriod. | 
| 137 | 
            -
                        revert IStaking. | 
| 135 | 
            +
                    // check locking period is >= min locking period
         | 
| 136 | 
            +
                    if (lockingPeriod.lt(getMinimumLockingPeriod())) {
         | 
| 137 | 
            +
                        revert IStaking.ErrorStakingLockingPeriodTooShort(targetNftId, getMinimumLockingPeriod(), lockingPeriod);
         | 
| 138 138 | 
             
                    }
         | 
| 139 139 |  | 
| 140 140 | 
             
                    // check locking period <= max locking period
         | 
| @@ -190,6 +190,10 @@ library TargetManagerLib { | |
| 190 190 | 
             
                    return SecondsLib.toSeconds(365 * 24 * 3600 / 2);
         | 
| 191 191 | 
             
                }
         | 
| 192 192 |  | 
| 193 | 
            +
                /// @dev the minimum locking period is 24 hours
         | 
| 194 | 
            +
                function getMinimumLockingPeriod() public pure returns (Seconds minLockingPeriod) {
         | 
| 195 | 
            +
                    return SecondsLib.toSeconds(24 * 3600);
         | 
| 196 | 
            +
                }
         | 
| 193 197 |  | 
| 194 198 | 
             
                function getMaxRewardRate() public pure returns (UFixed maxRewardRate) {
         | 
| 195 199 | 
             
                    return UFixedLib.toUFixed(33, -2);
         | 
| @@ -11,7 +11,9 @@ using { | |
| 11 11 | 
             
                eqAmount as ==,
         | 
| 12 12 | 
             
                nqAmount as !=,
         | 
| 13 13 | 
             
                ltAmount as <,
         | 
| 14 | 
            +
                ltAmount as <=,
         | 
| 14 15 | 
             
                gtAmount as >,
         | 
| 16 | 
            +
                gteAmount as >=,
         | 
| 15 17 | 
             
                AmountLib.add,
         | 
| 16 18 | 
             
                AmountLib.eq,
         | 
| 17 19 | 
             
                AmountLib.eqz,
         | 
| @@ -43,10 +45,18 @@ function ltAmount(Amount a, Amount b) pure returns (bool) { | |
| 43 45 | 
             
                return AmountLib.lt(a, b);
         | 
| 44 46 | 
             
            }
         | 
| 45 47 |  | 
| 48 | 
            +
            function lteAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 49 | 
            +
                return AmountLib.lte(a, b);
         | 
| 50 | 
            +
            }
         | 
| 51 | 
            +
             | 
| 46 52 | 
             
            function gtAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 47 53 | 
             
                return AmountLib.gt(a, b);
         | 
| 48 54 | 
             
            }
         | 
| 49 55 |  | 
| 56 | 
            +
            function gteAmount(Amount a, Amount b) pure returns (bool) {
         | 
| 57 | 
            +
                return AmountLib.gte(a, b);
         | 
| 58 | 
            +
            }
         | 
| 59 | 
            +
             | 
| 50 60 | 
             
            library AmountLib {
         | 
| 51 61 |  | 
| 52 62 | 
             
                error ErrorAmountLibValueTooBig(uint256 amount);
         | 
| @@ -84,6 +94,11 @@ library AmountLib { | |
| 84 94 | 
             
                    return Amount.unwrap(a1) < Amount.unwrap(a2);
         | 
| 85 95 | 
             
                }
         | 
| 86 96 |  | 
| 97 | 
            +
                /// @dev return true if amount a1 is less or equal than a2
         | 
| 98 | 
            +
                function lte(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 99 | 
            +
                    return Amount.unwrap(a1) <= Amount.unwrap(a2);
         | 
| 100 | 
            +
                }
         | 
| 101 | 
            +
             | 
| 87 102 | 
             
                /// @dev return true if amount a1 is greater than a2
         | 
| 88 103 | 
             
                function gt(Amount a1, Amount a2) public pure returns (bool) {
         | 
| 89 104 | 
             
                    return Amount.unwrap(a1) > Amount.unwrap(a2);
         | 
| @@ -11,8 +11,14 @@ using { | |
| 11 11 | 
             
                eqBlocknumber as ==,
         | 
| 12 12 | 
             
                neBlocknumber as !=,
         | 
| 13 13 | 
             
                BlocknumberLib.toInt,
         | 
| 14 | 
            +
                BlocknumberLib.eq,
         | 
| 15 | 
            +
                BlocknumberLib.ne,
         | 
| 14 16 | 
             
                BlocknumberLib.eqz,
         | 
| 15 | 
            -
                BlocknumberLib.gtz
         | 
| 17 | 
            +
                BlocknumberLib.gtz,
         | 
| 18 | 
            +
                BlocknumberLib.gt,
         | 
| 19 | 
            +
                BlocknumberLib.gte,
         | 
| 20 | 
            +
                BlocknumberLib.lt,
         | 
| 21 | 
            +
                BlocknumberLib.lte
         | 
| 16 22 | 
             
            } for Blocknumber global;
         | 
| 17 23 |  | 
| 18 24 | 
             
            /// @dev return true if Blocknumber a is greater than Blocknumber b
         | 
| @@ -12,6 +12,7 @@ import {NftId} from "./NftId.sol"; | |
| 12 12 | 
             
            using {
         | 
| 13 13 | 
             
                eqClaimId as ==, 
         | 
| 14 14 | 
             
                neClaimId as !=, 
         | 
| 15 | 
            +
                ClaimIdLib.eq,
         | 
| 15 16 | 
             
                ClaimIdLib.eqz,
         | 
| 16 17 | 
             
                ClaimIdLib.gtz,
         | 
| 17 18 | 
             
                ClaimIdLib.toInt,
         | 
| @@ -21,7 +22,7 @@ using { | |
| 21 22 |  | 
| 22 23 | 
             
            // pure free functions for operators
         | 
| 23 24 | 
             
            function eqClaimId(ClaimId a, ClaimId b) pure returns (bool isSame) {
         | 
| 24 | 
            -
                return  | 
| 25 | 
            +
                return ClaimIdLib.eq(a, b);
         | 
| 25 26 | 
             
            }
         | 
| 26 27 |  | 
| 27 28 | 
             
            function neClaimId(ClaimId a, ClaimId b) pure returns (bool isDifferent) {
         | 
| @@ -68,6 +69,10 @@ library ClaimIdLib { | |
| 68 69 | 
             
                    return ClaimId.unwrap(a) > 0;
         | 
| 69 70 | 
             
                }
         | 
| 70 71 |  | 
| 72 | 
            +
                function eq(ClaimId a, ClaimId b) public pure returns (bool) {
         | 
| 73 | 
            +
                    return ClaimId.unwrap(a) == ClaimId.unwrap(b);
         | 
| 74 | 
            +
                }
         | 
| 75 | 
            +
             | 
| 71 76 | 
             
                /// @dev Returns true if the value is zero (== 0).
         | 
| 72 77 | 
             
                function eqz(ClaimId a) public pure returns (bool) {
         | 
| 73 78 | 
             
                    return ClaimId.unwrap(a) == 0;
         | 
    
        package/contracts/type/NftId.sol
    CHANGED
    
    
| @@ -9,6 +9,7 @@ using { | |
| 9 9 | 
             
                neObjectType as !=,
         | 
| 10 10 | 
             
                ObjectTypeLib.toInt,
         | 
| 11 11 | 
             
                ObjectTypeLib.eqz,
         | 
| 12 | 
            +
                ObjectTypeLib.eq,
         | 
| 12 13 | 
             
                ObjectTypeLib.gtz
         | 
| 13 14 | 
             
            } for ObjectType global;
         | 
| 14 15 |  | 
| @@ -71,48 +72,52 @@ function POLICY() pure returns (ObjectType) { | |
| 71 72 | 
             
                return ObjectType.wrap(21);
         | 
| 72 73 | 
             
            }
         | 
| 73 74 |  | 
| 74 | 
            -
            function  | 
| 75 | 
            +
            function PREMIUM() pure returns (ObjectType) {
         | 
| 75 76 | 
             
                return ObjectType.wrap(22);
         | 
| 76 77 | 
             
            }
         | 
| 77 78 |  | 
| 79 | 
            +
            function CLAIM() pure returns (ObjectType) {
         | 
| 80 | 
            +
                return ObjectType.wrap(23);
         | 
| 81 | 
            +
            }
         | 
| 82 | 
            +
             | 
| 78 83 | 
             
            function PAYOUT() pure returns (ObjectType) {
         | 
| 79 | 
            -
                return ObjectType.wrap( | 
| 84 | 
            +
                return ObjectType.wrap(24); 
         | 
| 80 85 | 
             
            }
         | 
| 81 86 |  | 
| 82 87 | 
             
            function RISK() pure returns (ObjectType) {
         | 
| 83 | 
            -
                return ObjectType.wrap( | 
| 88 | 
            +
                return ObjectType.wrap(25);
         | 
| 84 89 | 
             
            }
         | 
| 85 90 |  | 
| 86 91 | 
             
            function PRICE() pure returns (ObjectType) {
         | 
| 87 | 
            -
                return ObjectType.wrap( | 
| 92 | 
            +
                return ObjectType.wrap(26);
         | 
| 88 93 | 
             
            }
         | 
| 89 94 |  | 
| 90 95 | 
             
            function REQUEST() pure returns (ObjectType) {
         | 
| 91 | 
            -
                return ObjectType.wrap( | 
| 96 | 
            +
                return ObjectType.wrap(27);
         | 
| 92 97 | 
             
            }
         | 
| 93 98 |  | 
| 94 99 | 
             
            function DISTRIBUTOR_TYPE() pure returns (ObjectType) {
         | 
| 95 | 
            -
                return ObjectType.wrap( | 
| 100 | 
            +
                return ObjectType.wrap(28);
         | 
| 96 101 | 
             
            }
         | 
| 97 102 |  | 
| 98 103 | 
             
            function DISTRIBUTOR() pure returns (ObjectType) {
         | 
| 99 | 
            -
                return ObjectType.wrap( | 
| 104 | 
            +
                return ObjectType.wrap(29);
         | 
| 100 105 | 
             
            }
         | 
| 101 106 |  | 
| 102 107 | 
             
            function REFERRAL() pure returns (ObjectType) {
         | 
| 103 | 
            -
                return ObjectType.wrap( | 
| 108 | 
            +
                return ObjectType.wrap(30);
         | 
| 104 109 | 
             
            }
         | 
| 105 110 |  | 
| 106 111 | 
             
            function BUNDLE() pure returns (ObjectType) {
         | 
| 107 | 
            -
                return ObjectType.wrap( | 
| 112 | 
            +
                return ObjectType.wrap(31);
         | 
| 108 113 | 
             
            }
         | 
| 109 114 |  | 
| 110 115 | 
             
            function TARGET() pure returns (ObjectType) {
         | 
| 111 | 
            -
                return ObjectType.wrap( | 
| 116 | 
            +
                return ObjectType.wrap(32);
         | 
| 112 117 | 
             
            }
         | 
| 113 118 |  | 
| 114 119 | 
             
            function STAKE() pure returns (ObjectType) {
         | 
| 115 | 
            -
                return ObjectType.wrap( | 
| 120 | 
            +
                return ObjectType.wrap(33);
         | 
| 116 121 | 
             
            }
         | 
| 117 122 |  | 
| 118 123 | 
             
            /// @dev Object type that includes any other object type.
         | 
| @@ -1,8 +1,8 @@ | |
| 1 1 | 
             
            // SPDX-License-Identifier: Apache-2.0
         | 
| 2 2 | 
             
            pragma solidity ^0.8.20;
         | 
| 3 3 |  | 
| 4 | 
            -
            //  | 
| 5 | 
            -
            type PayoutId is  | 
| 4 | 
            +
            // uint40 allows for 65'535 claims with 16'777'216 payouts each per policy
         | 
| 5 | 
            +
            type PayoutId is uint40;
         | 
| 6 6 |  | 
| 7 7 | 
             
            import {ClaimId} from "./ClaimId.sol";
         | 
| 8 8 | 
             
            import {PAYOUT} from "./ObjectType.sol";
         | 
| @@ -39,21 +39,21 @@ library PayoutIdLib { | |
| 39 39 | 
             
                }
         | 
| 40 40 |  | 
| 41 41 | 
             
                /// @dev Converts an uint into a PayoutId.
         | 
| 42 | 
            -
                function toPayoutId(ClaimId claimId,  | 
| 43 | 
            -
                    return PayoutId.wrap((ClaimId.unwrap(claimId) <<  | 
| 42 | 
            +
                function toPayoutId(ClaimId claimId, uint24 payoutNo) public pure returns (PayoutId) {
         | 
| 43 | 
            +
                    return PayoutId.wrap((uint40(ClaimId.unwrap(claimId)) << 24) + payoutNo);
         | 
| 44 44 | 
             
                }
         | 
| 45 45 |  | 
| 46 46 | 
             
                function toClaimId(PayoutId payoutId) public pure returns (ClaimId) {
         | 
| 47 | 
            -
                    return ClaimId.wrap(uint16(PayoutId.unwrap(payoutId) >>  | 
| 47 | 
            +
                    return ClaimId.wrap(uint16(PayoutId.unwrap(payoutId) >> 24));
         | 
| 48 48 | 
             
                }
         | 
| 49 49 |  | 
| 50 | 
            -
                function toPayoutNo(PayoutId payoutId) public pure returns ( | 
| 51 | 
            -
                    return  | 
| 50 | 
            +
                function toPayoutNo(PayoutId payoutId) public pure returns (uint24) {
         | 
| 51 | 
            +
                    return uint24(PayoutId.unwrap(payoutId) & 16777215);
         | 
| 52 52 | 
             
                }
         | 
| 53 53 |  | 
| 54 54 | 
             
                /// @dev Converts the PayoutId to a uint.
         | 
| 55 | 
            -
                function toInt(PayoutId a) public pure returns ( | 
| 56 | 
            -
                    return  | 
| 55 | 
            +
                function toInt(PayoutId a) public pure returns (uint40) {
         | 
| 56 | 
            +
                    return PayoutId.unwrap(a);
         | 
| 57 57 | 
             
                }
         | 
| 58 58 |  | 
| 59 59 | 
             
                /// @dev Returns true if the value is non-zero (> 0).
         | 
| @@ -77,6 +77,6 @@ library PayoutIdLib { | |
| 77 77 | 
             
                        bytes31(
         | 
| 78 78 | 
             
                            bytes15(
         | 
| 79 79 | 
             
                                uint120(
         | 
| 80 | 
            -
                                    (NftId.unwrap(policyNftId) <<  | 
| 80 | 
            +
                                    (NftId.unwrap(policyNftId) << 40) + PayoutId.unwrap(payoutId)))));
         | 
| 81 81 | 
             
                }
         | 
| 82 82 | 
             
            }
         | 
| @@ -10,7 +10,9 @@ type RiskId is bytes8; | |
| 10 10 | 
             
            using {
         | 
| 11 11 | 
             
                eqRiskId as ==, 
         | 
| 12 12 | 
             
                neRiskId as !=,
         | 
| 13 | 
            -
                RiskIdLib.toKey32
         | 
| 13 | 
            +
                RiskIdLib.toKey32,
         | 
| 14 | 
            +
                RiskIdLib.eq,
         | 
| 15 | 
            +
                RiskIdLib.eqz
         | 
| 14 16 | 
             
            } for RiskId global;
         | 
| 15 17 |  | 
| 16 18 | 
             
            // general pure free functions
         | 
| @@ -26,6 +28,10 @@ function neRiskId(RiskId a, RiskId b) pure returns (bool isDifferent) { | |
| 26 28 | 
             
            }
         | 
| 27 29 |  | 
| 28 30 | 
             
            library RiskIdLib {
         | 
| 31 | 
            +
                function zero() public pure returns (RiskId) {
         | 
| 32 | 
            +
                    return RiskId.wrap(bytes8(0));
         | 
| 33 | 
            +
                }
         | 
| 34 | 
            +
             | 
| 29 35 | 
             
                // @dev Converts a role string into a role id.
         | 
| 30 36 | 
             
                function toRiskId(string memory risk) public pure returns (RiskId) {
         | 
| 31 37 | 
             
                    return RiskId.wrap(bytes8(keccak256(abi.encode(risk))));
         | 
| @@ -40,4 +46,12 @@ library RiskIdLib { | |
| 40 46 | 
             
                function toKeyId(RiskId id) public pure returns (KeyId keyId) {
         | 
| 41 47 | 
             
                    return KeyId.wrap(bytes31(RiskId.unwrap(id)));
         | 
| 42 48 | 
             
                }
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                function eq(RiskId a, RiskId b) public pure returns (bool isSame) {
         | 
| 51 | 
            +
                    return eqRiskId(a, b);
         | 
| 52 | 
            +
                }
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                function eqz(RiskId a) public pure returns (bool isZero) {
         | 
| 55 | 
            +
                    return eqRiskId(a, zero());
         | 
| 56 | 
            +
                }
         | 
| 43 57 | 
             
            }
         | 
| @@ -6,9 +6,14 @@ type Seconds is uint40; | |
| 6 6 | 
             
            using {
         | 
| 7 7 | 
             
                SecondsEq as ==,
         | 
| 8 8 | 
             
                SecondsGt as >,
         | 
| 9 | 
            +
                SecondsAdd as +,
         | 
| 9 10 | 
             
                SecondsLib.eqz,
         | 
| 10 11 | 
             
                SecondsLib.gtz,
         | 
| 11 | 
            -
                SecondsLib. | 
| 12 | 
            +
                SecondsLib.eq,
         | 
| 13 | 
            +
                SecondsLib.gt,
         | 
| 14 | 
            +
                SecondsLib.lt,
         | 
| 15 | 
            +
                SecondsLib.toInt,
         | 
| 16 | 
            +
                SecondsLib.add
         | 
| 12 17 | 
             
            } for Seconds global;
         | 
| 13 18 |  | 
| 14 19 | 
             
            function SecondsEq(Seconds duration1, Seconds duration2) pure returns (bool) {
         | 
| @@ -19,6 +24,11 @@ function SecondsGt(Seconds duration1, Seconds duration2) pure returns (bool) { | |
| 19 24 | 
             
                return SecondsLib.gt(duration1, duration2);
         | 
| 20 25 | 
             
            }
         | 
| 21 26 |  | 
| 27 | 
            +
            function SecondsAdd(Seconds duration1, Seconds duration2) pure returns (Seconds) {
         | 
| 28 | 
            +
                return SecondsLib.add(duration1, duration2);
         | 
| 29 | 
            +
            }
         | 
| 30 | 
            +
             | 
| 31 | 
            +
             | 
| 22 32 | 
             
            library SecondsLib {
         | 
| 23 33 |  | 
| 24 34 | 
             
                error ErrorSecondsLibDurationTooBig(uint256 duration);
         | 
| @@ -70,6 +80,16 @@ library SecondsLib { | |
| 70 80 | 
             
                    return Seconds.unwrap(duration1) > Seconds.unwrap(duration2);
         | 
| 71 81 | 
             
                }
         | 
| 72 82 |  | 
| 83 | 
            +
                /// @dev return true if duration1 is smaller than duration2
         | 
| 84 | 
            +
                function lt(Seconds duration1, Seconds duration2) public pure returns (bool) {
         | 
| 85 | 
            +
                    return Seconds.unwrap(duration1) < Seconds.unwrap(duration2);
         | 
| 86 | 
            +
                }
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                /// @dev return add duration1 and duration2
         | 
| 89 | 
            +
                function add(Seconds duration1, Seconds duration2) public pure returns (Seconds) {
         | 
| 90 | 
            +
                    return Seconds.wrap(Seconds.unwrap(duration1) + Seconds.unwrap(duration2));
         | 
| 91 | 
            +
                }
         | 
| 92 | 
            +
             | 
| 73 93 | 
             
                function toInt(Seconds duration) public pure returns (uint256) {
         | 
| 74 94 | 
             
                    return uint256(uint40(Seconds.unwrap(duration)));
         | 
| 75 95 | 
             
                }
         | 
| @@ -9,6 +9,7 @@ using { | |
| 9 9 | 
             
                eqStateId as ==, 
         | 
| 10 10 | 
             
                neStateId as !=, 
         | 
| 11 11 | 
             
                StateIdLib.eqz,
         | 
| 12 | 
            +
                StateIdLib.eq,
         | 
| 12 13 | 
             
                StateIdLib.gtz,
         | 
| 13 14 | 
             
                StateIdLib.toInt
         | 
| 14 15 | 
             
            } for StateId global;
         | 
| @@ -27,10 +28,18 @@ function DEPLOYING() pure returns (StateId) { | |
| 27 28 | 
             
                return toStateId(3);
         | 
| 28 29 | 
             
            }
         | 
| 29 30 |  | 
| 30 | 
            -
            function  | 
| 31 | 
            +
            function DEPLOYED() pure returns (StateId) {
         | 
| 31 32 | 
             
                return toStateId(4);
         | 
| 32 33 | 
             
            }
         | 
| 33 34 |  | 
| 35 | 
            +
            function ACTIVE() pure returns (StateId) {
         | 
| 36 | 
            +
                return toStateId(5);
         | 
| 37 | 
            +
            }
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            function SKIPPED() pure returns (StateId) {
         | 
| 40 | 
            +
                return toStateId(6);
         | 
| 41 | 
            +
            }
         | 
| 42 | 
            +
             | 
| 34 43 | 
             
            function APPLIED() pure returns (StateId) {
         | 
| 35 44 | 
             
                return toStateId(10);
         | 
| 36 45 | 
             
            }
         | 
| @@ -113,6 +122,11 @@ function neStateId(StateId a, StateId b) pure returns (bool isDifferent) { | |
| 113 122 |  | 
| 114 123 | 
             
            // library functions that operate on user defined type
         | 
| 115 124 | 
             
            library StateIdLib {
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                function zero() public pure returns (StateId) {
         | 
| 127 | 
            +
                    return StateId.wrap(0);
         | 
| 128 | 
            +
                }
         | 
| 129 | 
            +
             | 
| 116 130 | 
             
                /// @dev Converts the NftId to a uint256.
         | 
| 117 131 | 
             
                function toInt(StateId stateId) public pure returns (uint96) {
         | 
| 118 132 | 
             
                    return uint96(StateId.unwrap(stateId));
         | 
| @@ -12,6 +12,12 @@ using { | |
| 12 12 | 
             
                lteTimestamp as <=,
         | 
| 13 13 | 
             
                eqTimestamp as ==,
         | 
| 14 14 | 
             
                neTimestamp as !=,
         | 
| 15 | 
            +
                TimestampLib.eq,
         | 
| 16 | 
            +
                TimestampLib.ne,
         | 
| 17 | 
            +
                TimestampLib.gt,
         | 
| 18 | 
            +
                TimestampLib.gte,
         | 
| 19 | 
            +
                TimestampLib.lt,
         | 
| 20 | 
            +
                TimestampLib.lte,
         | 
| 15 21 | 
             
                TimestampLib.gtz,
         | 
| 16 22 | 
             
                TimestampLib.eqz,
         | 
| 17 23 | 
             
                TimestampLib.addSeconds,
         | 
| @@ -50,7 +56,7 @@ function neTimestamp(Timestamp a, Timestamp b) pure returns (bool) { | |
| 50 56 |  | 
| 51 57 | 
             
            /// @dev Converts the uint256 to a Timestamp.
         | 
| 52 58 | 
             
            function toTimestamp(uint256 timestamp) pure returns (Timestamp) {
         | 
| 53 | 
            -
                return  | 
| 59 | 
            +
                return TimestampLib.toTimestamp(timestamp);
         | 
| 54 60 | 
             
            }
         | 
| 55 61 |  | 
| 56 62 | 
             
            // TODO move to TimestampLib and rename to zero()
         | 
| @@ -72,6 +78,10 @@ library TimestampLib { | |
| 72 78 | 
             
                function blockTimestamp() public view returns (Timestamp) {
         | 
| 73 79 | 
             
                    return Timestamp.wrap(uint40(block.timestamp));
         | 
| 74 80 | 
             
                }
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                function toTimestamp(uint256 timestamp) public pure returns (Timestamp) {
         | 
| 83 | 
            +
                    return Timestamp.wrap(uint40(timestamp));
         | 
| 84 | 
            +
                }
         | 
| 75 85 |  | 
| 76 86 | 
             
                /// @dev return true if Timestamp a is after Timestamp b
         | 
| 77 87 | 
             
                function gt(Timestamp a, Timestamp b) public pure returns (bool isAfter) {
         | 
| @@ -344,6 +344,10 @@ library UFixedLib { | |
| 344 344 | 
             
                    return UFixed.wrap(0);
         | 
| 345 345 | 
             
                }
         | 
| 346 346 |  | 
| 347 | 
            +
                function one() public pure returns (UFixed) {
         | 
| 348 | 
            +
                    return UFixed.wrap(MULTIPLIER);
         | 
| 349 | 
            +
                }
         | 
| 350 | 
            +
             | 
| 347 351 | 
             
                /// @dev return the absolute delta between two UFixed numbers
         | 
| 348 352 | 
             
                function delta(UFixed a, UFixed b) public pure returns (UFixed) {
         | 
| 349 353 | 
             
                    return deltaUFixed(a, b);
         | 
| @@ -40,57 +40,68 @@ contract ProxyManager is | |
| 40 40 | 
             
                mapping(Version version => VersionInfo info) _versionHistory;
         | 
| 41 41 | 
             
                Version [] _versions;
         | 
| 42 42 |  | 
| 43 | 
            -
                /// @dev  | 
| 44 | 
            -
                 | 
| 45 | 
            -
             | 
| 46 | 
            -
                     | 
| 47 | 
            -
             | 
| 48 | 
            -
             | 
| 49 | 
            -
                 | 
| 43 | 
            +
                /// @dev convencience initializer
         | 
| 44 | 
            +
                function initialize(
         | 
| 45 | 
            +
                    address registry,
         | 
| 46 | 
            +
                    address implementation,
         | 
| 47 | 
            +
                    bytes memory data,
         | 
| 48 | 
            +
                    bytes32 salt
         | 
| 49 | 
            +
                )
         | 
| 50 50 | 
             
                    public
         | 
| 51 51 | 
             
                    initializer()
         | 
| 52 | 
            +
                    returns (IVersionable versionable)
         | 
| 52 53 | 
             
                {
         | 
| 53 | 
            -
                     | 
| 54 | 
            +
                    versionable = deployDetermenistic(
         | 
| 55 | 
            +
                        registry,
         | 
| 56 | 
            +
                        implementation, 
         | 
| 57 | 
            +
                        data,
         | 
| 58 | 
            +
                        salt);
         | 
| 54 59 | 
             
                }
         | 
| 55 60 |  | 
| 56 61 | 
             
                /// @dev deploy initial contract
         | 
| 57 | 
            -
                function deploy( | 
| 62 | 
            +
                function deploy(
         | 
| 63 | 
            +
                    address registry, 
         | 
| 64 | 
            +
                    address initialImplementation, 
         | 
| 65 | 
            +
                    bytes memory initializationData
         | 
| 66 | 
            +
                )
         | 
| 58 67 | 
             
                    public
         | 
| 59 68 | 
             
                    virtual
         | 
| 60 | 
            -
                     | 
| 69 | 
            +
                    onlyInitializing()
         | 
| 61 70 | 
             
                    returns (IVersionable versionable)
         | 
| 62 71 | 
             
                {
         | 
| 63 | 
            -
                     | 
| 64 | 
            -
                         | 
| 65 | 
            -
             | 
| 72 | 
            +
                    (
         | 
| 73 | 
            +
                        address currentProxyOwner, 
         | 
| 74 | 
            +
                        address initialProxyAdminOwner
         | 
| 75 | 
            +
                    ) = _preDeployChecksAndSetup(registry);
         | 
| 66 76 |  | 
| 67 | 
            -
                    address currentProxyOwner = getOwner(); // used by implementation
         | 
| 68 | 
            -
                    address initialProxyAdminOwner = address(this); // used by proxy
         | 
| 69 | 
            -
                    
         | 
| 70 77 | 
             
                    _proxy = new UpgradableProxyWithAdmin(
         | 
| 71 78 | 
             
                        initialImplementation,
         | 
| 72 79 | 
             
                        initialProxyAdminOwner,
         | 
| 73 80 | 
             
                        getDeployData(currentProxyOwner, initializationData)
         | 
| 74 81 | 
             
                    );
         | 
| 75 82 |  | 
| 76 | 
            -
                    versionable =  | 
| 77 | 
            -
             | 
| 83 | 
            +
                    versionable = _updateVersionHistory(
         | 
| 84 | 
            +
                        initialImplementation, 
         | 
| 85 | 
            +
                        currentProxyOwner);
         | 
| 78 86 |  | 
| 79 | 
            -
                    emit LogProxyManagerVersionableDeployed(address( | 
| 87 | 
            +
                    emit LogProxyManagerVersionableDeployed(address(versionable), initialImplementation);
         | 
| 80 88 | 
             
                }
         | 
| 81 89 |  | 
| 82 | 
            -
                function deployDetermenistic( | 
| 90 | 
            +
                function deployDetermenistic(
         | 
| 91 | 
            +
                    address registry, 
         | 
| 92 | 
            +
                    address initialImplementation, 
         | 
| 93 | 
            +
                    bytes memory initializationData, 
         | 
| 94 | 
            +
                    bytes32 salt
         | 
| 95 | 
            +
                )
         | 
| 83 96 | 
             
                    public
         | 
| 84 97 | 
             
                    virtual
         | 
| 85 | 
            -
                     | 
| 98 | 
            +
                    onlyInitializing()
         | 
| 86 99 | 
             
                    returns (IVersionable versionable)
         | 
| 87 100 | 
             
                {
         | 
| 88 | 
            -
                     | 
| 89 | 
            -
                         | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
                    address currentProxyOwner = getOwner();
         | 
| 93 | 
            -
                    address initialProxyAdminOwner = address(this);
         | 
| 101 | 
            +
                    (
         | 
| 102 | 
            +
                        address currentProxyOwner, 
         | 
| 103 | 
            +
                        address initialProxyAdminOwner
         | 
| 104 | 
            +
                    ) = _preDeployChecksAndSetup(registry);
         | 
| 94 105 |  | 
| 95 106 | 
             
                    _proxy = new UpgradableProxyWithAdmin{salt: salt}(
         | 
| 96 107 | 
             
                        initialImplementation,
         | 
| @@ -98,10 +109,11 @@ contract ProxyManager is | |
| 98 109 | 
             
                        getDeployData(currentProxyOwner, initializationData)
         | 
| 99 110 | 
             
                    );
         | 
| 100 111 |  | 
| 101 | 
            -
                    versionable =  | 
| 102 | 
            -
             | 
| 112 | 
            +
                    versionable = _updateVersionHistory(
         | 
| 113 | 
            +
                        initialImplementation, 
         | 
| 114 | 
            +
                        currentProxyOwner);
         | 
| 103 115 |  | 
| 104 | 
            -
                    emit LogProxyManagerVersionableDeployed(address( | 
| 116 | 
            +
                    emit LogProxyManagerVersionableDeployed(address(versionable), initialImplementation);
         | 
| 105 117 | 
             
                }
         | 
| 106 118 |  | 
| 107 119 | 
             
                /// @dev upgrade existing contract
         | 
| @@ -124,10 +136,11 @@ contract ProxyManager is | |
| 124 136 | 
             
                        newImplementation, 
         | 
| 125 137 | 
             
                        getUpgradeData(upgradeData));
         | 
| 126 138 |  | 
| 127 | 
            -
                    versionable =  | 
| 128 | 
            -
             | 
| 139 | 
            +
                    versionable = _updateVersionHistory(
         | 
| 140 | 
            +
                        newImplementation, 
         | 
| 141 | 
            +
                        currentProxyOwner);
         | 
| 129 142 |  | 
| 130 | 
            -
                    emit LogProxyManagerVersionableUpgraded(address( | 
| 143 | 
            +
                    emit LogProxyManagerVersionableUpgraded(address(versionable), newImplementation);
         | 
| 131 144 |  | 
| 132 145 | 
             
                }
         | 
| 133 146 |  | 
| @@ -168,13 +181,33 @@ contract ProxyManager is | |
| 168 181 | 
             
                    return _versionHistory[_version];
         | 
| 169 182 | 
             
                }
         | 
| 170 183 |  | 
| 184 | 
            +
                function _preDeployChecksAndSetup(address registry)
         | 
| 185 | 
            +
                    private
         | 
| 186 | 
            +
                    returns (
         | 
| 187 | 
            +
                        address currentProxyOwner,
         | 
| 188 | 
            +
                        address initialProxyAdminOwner
         | 
| 189 | 
            +
                    )
         | 
| 190 | 
            +
                {
         | 
| 191 | 
            +
                    if (_versions.length > 0) {
         | 
| 192 | 
            +
                        revert ErrorProxyManagerAlreadyDeployed();
         | 
| 193 | 
            +
                    }
         | 
| 194 | 
            +
             | 
| 195 | 
            +
                    _initializeNftOwnable(msg.sender, registry);
         | 
| 196 | 
            +
             | 
| 197 | 
            +
                    currentProxyOwner = getOwner(); // used by implementation
         | 
| 198 | 
            +
                    initialProxyAdminOwner = address(this); // used by proxy
         | 
| 199 | 
            +
                }
         | 
| 200 | 
            +
             | 
| 171 201 | 
             
                function _updateVersionHistory(
         | 
| 172 | 
            -
                    Version newVersion,
         | 
| 173 202 | 
             
                    address implementation,
         | 
| 174 203 | 
             
                    address activatedBy
         | 
| 175 204 | 
             
                )
         | 
| 176 205 | 
             
                    private
         | 
| 206 | 
            +
                    returns (IVersionable versionable)
         | 
| 177 207 | 
             
                {
         | 
| 208 | 
            +
                    versionable = IVersionable(address(_proxy));
         | 
| 209 | 
            +
                    Version newVersion = versionable.getVersion();
         | 
| 210 | 
            +
             | 
| 178 211 | 
             
                    if(newVersion == VersionLib.zeroVersion()) {
         | 
| 179 212 | 
             
                        revert ErrorProxyManagerZeroVersion();
         | 
| 180 213 | 
             
                    }
         |