gitextract_qacr2h46/ ├── .github/ │ ├── CODEOWNERS │ └── workflows/ │ ├── certora-gho-505.yml │ ├── certora-gho.yml │ ├── certora-gsm-4626.yml │ ├── certora-gsm.yml │ ├── certora-steward.yml │ ├── dependency-review.yml │ ├── node.js.yml │ └── sync-issue.yml ├── .gitignore ├── .gitmodules ├── .husky/ │ ├── .gitignore │ └── pre-commit ├── .prettierignore ├── .prettierrc ├── .solcover.js ├── .vscode/ │ └── settings.json ├── LICENSE ├── README.md ├── certora/ │ ├── gho/ │ │ ├── Makefile │ │ ├── applyHarness.patch │ │ ├── conf/ │ │ │ ├── verifyFlashMinter.conf │ │ │ ├── verifyGhoAToken.conf │ │ │ ├── verifyGhoDiscountRateStrategy.conf │ │ │ ├── verifyGhoToken.conf │ │ │ ├── verifyGhoVariableDebtToken-rayMulDiv-summarization.conf │ │ │ ├── verifyGhoVariableDebtToken.conf │ │ │ ├── verifyGhoVariableDebtTokenInternal.conf │ │ │ ├── verifyGhoVariableDebtToken_specialBranch.conf │ │ │ ├── verifyGhoVariableDebtToken_summarized.conf │ │ │ └── verifyUpgradeableGhoToken.conf │ │ ├── harness/ │ │ │ ├── DummyERC20A.sol │ │ │ ├── DummyERC20B.sol │ │ │ ├── DummyERC20Impl.sol │ │ │ ├── DummyERC20WithTimedBalanceOf.sol │ │ │ ├── DummyPool.sol │ │ │ ├── GhoDiscountRateStrategyHarness.sol │ │ │ ├── GhoTokenHarness.sol │ │ │ ├── MockFlashBorrower.sol │ │ │ ├── UpgradeableGhoTokenHarness.sol │ │ │ ├── ghoVariableDebtTokenHarness.sol │ │ │ └── ghoVariableDebtTokenHarnessInternal.sol │ │ ├── munged/ │ │ │ └── .gitignore │ │ └── specs/ │ │ ├── VariableDebtToken.spec │ │ ├── erc20.spec │ │ ├── flashMinter.spec │ │ ├── ghoAToken.spec │ │ ├── ghoDiscountRateStrategy.spec │ │ ├── ghoToken.spec │ │ ├── ghoVariableDebtToken-rayMulDiv-summarization.spec │ │ ├── ghoVariableDebtToken.spec │ │ ├── ghoVariableDebtTokenInternal.spec │ │ ├── ghoVariableDebtToken_summarized.spec │ │ ├── set-natspec.json │ │ ├── set.spec │ │ └── summarizations.spec │ ├── gsm/ │ │ ├── conf/ │ │ │ ├── gsm/ │ │ │ │ ├── FixedFeeStrategy.conf │ │ │ │ ├── OracleSwapFreezer.conf │ │ │ │ ├── balances-buy.conf │ │ │ │ ├── balances-sell.conf │ │ │ │ ├── fees-buy.conf │ │ │ │ ├── fees-sell.conf │ │ │ │ ├── finishedRules.conf │ │ │ │ ├── getAmount_properties.conf │ │ │ │ ├── gho-assetToGhoInvertibility.conf │ │ │ │ ├── gho-fixedPriceStrategy.conf │ │ │ │ ├── gho-gsm-2.conf │ │ │ │ ├── gho-gsm.conf │ │ │ │ ├── gho-gsm_inverse.conf │ │ │ │ └── optimality.conf │ │ │ └── gsm4626/ │ │ │ ├── balances-buy-4626.conf │ │ │ ├── balances-sell-4626.conf │ │ │ ├── fees-buy-4626.conf │ │ │ ├── fees-sell-4626.conf │ │ │ ├── finishedRules4626.conf │ │ │ ├── getAmount_4626_properties.conf │ │ │ ├── gho-assetToGhoInvertibility4626.conf │ │ │ ├── gho-fixedPriceStrategy4626.conf │ │ │ ├── gho-gsm4626-2.conf │ │ │ ├── gho-gsm4626.conf │ │ │ ├── gho-gsm_4626_inverse.conf │ │ │ └── optimality4626.conf │ │ ├── harness/ │ │ │ ├── DiffHelper.sol │ │ │ ├── DummyERC20A.sol │ │ │ ├── DummyERC20B.sol │ │ │ ├── DummyERC20Impl.sol │ │ │ ├── ERC20Helper.sol │ │ │ ├── FixedFeeStrategyHarness.sol │ │ │ ├── FixedPriceStrategy4626Harness.sol │ │ │ ├── FixedPriceStrategyHarness.sol │ │ │ ├── Gsm4626Harness.sol │ │ │ ├── GsmHarness.sol │ │ │ └── OracleSwapFreezerHarness.sol │ │ ├── munged/ │ │ │ └── .gitignore │ │ └── specs/ │ │ ├── GsmMethods/ │ │ │ ├── aave_fee_limits.spec │ │ │ ├── aave_price_fee_limits.spec │ │ │ ├── aave_price_fee_limits_strict.spec │ │ │ ├── aave_price_limits.spec │ │ │ ├── erc20.spec │ │ │ ├── erc4626.spec │ │ │ ├── methods4626_base.spec │ │ │ ├── methods_base-Martin.spec │ │ │ ├── methods_base.spec │ │ │ ├── methods_divint_summary.spec │ │ │ └── shared.spec │ │ ├── gsm/ │ │ │ ├── AssetToGhoInvertibility.spec │ │ │ ├── FixedFeeStrategy.spec │ │ │ ├── FixedPriceStrategy.spec │ │ │ ├── OracleSwapFreezer.spec │ │ │ ├── balances-buy.spec │ │ │ ├── balances-sell.spec │ │ │ ├── fees-buy.spec │ │ │ ├── fees-sell.spec │ │ │ ├── getAmount_properties.spec │ │ │ ├── gho-gsm-2.spec │ │ │ ├── gho-gsm-Buy.spec │ │ │ ├── gho-gsm-finishedRules.spec │ │ │ ├── gho-gsm.spec │ │ │ ├── gho-gsm_inverse.spec │ │ │ └── optimality.spec │ │ └── gsm4626/ │ │ ├── AssetToGhoInvertibility4626.spec │ │ ├── FixedPriceStrategy4626.spec │ │ ├── balances-buy-4626.spec │ │ ├── balances-sell-4626.spec │ │ ├── fees-buy-4626.spec │ │ ├── fees-sell-4626.spec │ │ ├── getAmount_4626_properties.spec │ │ ├── gho-gsm-finishedRules4626.spec │ │ ├── gho-gsm4626-2.spec │ │ ├── gho-gsm4626.spec │ │ ├── gho-gsm_4626_inverse.spec │ │ └── optimality4626.spec │ └── steward/ │ ├── Makefile │ ├── applyHarness.patch │ ├── conf/ │ │ ├── GhoAaveSteward.conf │ │ ├── GhoBucketSteward.conf │ │ ├── GhoCcipSteward.conf │ │ └── GhoGsmSteward.conf │ ├── harness/ │ │ ├── GhoAaveSteward_Harness.sol │ │ ├── GhoCcipSteward_Harness.sol │ │ ├── GhoGsmSteward_Harness.sol │ │ └── GhoStewardV2_Harness.sol │ ├── munged/ │ │ └── .gitignore │ └── specs/ │ ├── GhoAaveSteward.spec │ ├── GhoBucketSteward.spec │ ├── GhoCcipSteward.spec │ └── GhoGsmSteward.spec ├── deploy/ │ ├── 00_deploy_gho_token.ts │ ├── 01_deploy_gho_oracle.ts │ ├── 02_deploy_gho_atoken.ts │ ├── 03_deploy_gho_stable_debt.ts │ ├── 04_deploy_gho_variable_debt.ts │ ├── 05_deploy_gho_interest_rate.ts │ ├── 06_deploy_gho_discount_rate.ts │ ├── 07_deploy_stakedAave_upgrade.ts │ ├── 08_deploy_gho_flashminter.ts │ └── 09_deploy_uighodataprovider.ts ├── docs/ │ └── gho-stewards.md ├── foundry.toml ├── hardhat.config.ts ├── helpers/ │ ├── config.ts │ ├── constants.ts │ ├── contract-getters.ts │ ├── hardhat-config.ts │ ├── misc-utils.ts │ └── types.ts ├── package.json ├── remappings.txt ├── setup-test-env.sh ├── slither.config.json ├── src/ │ ├── contracts/ │ │ ├── facilitators/ │ │ │ ├── aave/ │ │ │ │ ├── interestStrategy/ │ │ │ │ │ ├── FixedRateStrategyFactory.sol │ │ │ │ │ ├── GhoDiscountRateStrategy.sol │ │ │ │ │ ├── GhoInterestRateStrategy.sol │ │ │ │ │ ├── ZeroDiscountRateStrategy.sol │ │ │ │ │ └── interfaces/ │ │ │ │ │ ├── IFixedRateStrategyFactory.sol │ │ │ │ │ └── IGhoDiscountRateStrategy.sol │ │ │ │ ├── misc/ │ │ │ │ │ ├── UiGhoDataProvider.sol │ │ │ │ │ └── interfaces/ │ │ │ │ │ └── IUiGhoDataProvider.sol │ │ │ │ ├── oracle/ │ │ │ │ │ └── GhoOracle.sol │ │ │ │ └── tokens/ │ │ │ │ ├── GhoAToken.sol │ │ │ │ ├── GhoStableDebtToken.sol │ │ │ │ ├── GhoVariableDebtToken.sol │ │ │ │ ├── base/ │ │ │ │ │ └── ScaledBalanceTokenBase.sol │ │ │ │ └── interfaces/ │ │ │ │ ├── IGhoAToken.sol │ │ │ │ └── IGhoVariableDebtToken.sol │ │ │ ├── flashMinter/ │ │ │ │ ├── GhoFlashMinter.sol │ │ │ │ └── interfaces/ │ │ │ │ └── IGhoFlashMinter.sol │ │ │ └── gsm/ │ │ │ ├── Gsm.sol │ │ │ ├── Gsm4626.sol │ │ │ ├── dependencies/ │ │ │ │ └── chainlink/ │ │ │ │ └── AutomationCompatibleInterface.sol │ │ │ ├── feeStrategy/ │ │ │ │ ├── FixedFeeStrategy.sol │ │ │ │ ├── FixedFeeStrategyFactory.sol │ │ │ │ └── interfaces/ │ │ │ │ ├── IFixedFeeStrategyFactory.sol │ │ │ │ └── IGsmFeeStrategy.sol │ │ │ ├── interfaces/ │ │ │ │ ├── IGsm.sol │ │ │ │ └── IGsm4626.sol │ │ │ ├── misc/ │ │ │ │ ├── GsmRegistry.sol │ │ │ │ ├── IGsmRegistry.sol │ │ │ │ ├── SampleLiquidator.sol │ │ │ │ └── SampleSwapFreezer.sol │ │ │ ├── priceStrategy/ │ │ │ │ ├── FixedPriceStrategy.sol │ │ │ │ ├── FixedPriceStrategy4626.sol │ │ │ │ └── interfaces/ │ │ │ │ └── IGsmPriceStrategy.sol │ │ │ └── swapFreezer/ │ │ │ └── OracleSwapFreezer.sol │ │ ├── gho/ │ │ │ ├── ERC20.sol │ │ │ ├── GhoToken.sol │ │ │ ├── UpgradeableERC20.sol │ │ │ ├── UpgradeableGhoToken.sol │ │ │ └── interfaces/ │ │ │ ├── IGhoFacilitator.sol │ │ │ └── IGhoToken.sol │ │ └── misc/ │ │ ├── GhoAaveSteward.sol │ │ ├── GhoBucketSteward.sol │ │ ├── GhoCcipSteward.sol │ │ ├── GhoGsmSteward.sol │ │ ├── RiskCouncilControlled.sol │ │ ├── dependencies/ │ │ │ ├── AaveV3-1.sol │ │ │ └── Ccip.sol │ │ └── interfaces/ │ │ ├── IGhoAaveSteward.sol │ │ ├── IGhoBucketSteward.sol │ │ ├── IGhoCcipSteward.sol │ │ └── IGhoGsmSteward.sol │ ├── script/ │ │ ├── DeployGsmLaunch.s.sol │ │ └── ExternalDependencyCompiler.s.sol │ └── test/ │ ├── TestFixedRateStrategyFactory.t.sol │ ├── TestGhoAToken.t.sol │ ├── TestGhoAaveSteward.t.sol │ ├── TestGhoBase.t.sol │ ├── TestGhoBucketSteward.t.sol │ ├── TestGhoCcipSteward.t.sol │ ├── TestGhoDiscountRateStrategy.t.sol │ ├── TestGhoFlashMinter.t.sol │ ├── TestGhoGsmSteward.t.sol │ ├── TestGhoInterestRateStrategy.t.sol │ ├── TestGhoOracle.t.sol │ ├── TestGhoStableDebtToken.t.sol │ ├── TestGhoStewardsForkEthereum.t.sol │ ├── TestGhoStewardsForkRemote.t.sol │ ├── TestGhoToken.t.sol │ ├── TestGhoVariableDebtToken.t.sol │ ├── TestGhoVariableDebtTokenForked.t.sol │ ├── TestGsm.t.sol │ ├── TestGsm4626.t.sol │ ├── TestGsm4626Edge.t.sol │ ├── TestGsmFixedFeeStrategy.sol │ ├── TestGsmFixedPriceStrategy.t.sol │ ├── TestGsmFixedPriceStrategy4626.t.sol │ ├── TestGsmOracleSwapFreezer.t.sol │ ├── TestGsmRegistry.t.sol │ ├── TestGsmSampleLiquidator.t.sol │ ├── TestGsmSampleSwapFreezer.t.sol │ ├── TestGsmSwapEdge.t.sol │ ├── TestGsmSwapFuzz.t.sol │ ├── TestGsmUpgrade.t.sol │ ├── TestUiGhoDataProvider.t.sol │ ├── TestUpgradeableGhoToken.t.sol │ ├── TestZeroDiscountRateStrategy.t.sol │ ├── helpers/ │ │ ├── Constants.sol │ │ ├── DebtUtils.sol │ │ ├── ErrorsLib.sol │ │ └── Events.sol │ └── mocks/ │ ├── MockAclManager.sol │ ├── MockAddressesProvider.sol │ ├── MockConfigurator.sol │ ├── MockERC4626.sol │ ├── MockFlashBorrower.sol │ ├── MockGsmV2.sol │ ├── MockPool.sol │ ├── MockPoolDataProvider.sol │ ├── MockUpgradeable.sol │ ├── MockUpgradeableBurnMintTokenPool.sol │ └── MockUpgradeableLockReleaseTokenPool.sol ├── tasks/ │ ├── main/ │ │ ├── deploy-and-setup.ts │ │ └── gho-testnet-setup.ts │ ├── misc/ │ │ ├── network-check.ts │ │ └── print-all-deployments.ts │ ├── roles/ │ │ └── 00_gho-transfer-ownership.ts │ └── testnet-setup/ │ ├── 00_initialize-gho-reserve.ts │ ├── 01_enable-gho-borrowing.ts │ ├── 02_set-gho-oracle.ts │ ├── 03_add-gho-as-entity.ts │ ├── 04_add-gho-flashminter-as-entity.ts │ ├── 05_set-gho-addresses.ts │ └── 06_upgrade-stkAave.ts ├── test/ │ ├── __setup.test.ts │ ├── basic-borrow.test.ts │ ├── borrow-onBehalf.test.ts │ ├── discount-borrow.test.ts │ ├── discount-rebalance.test.ts │ ├── flashmint.test.ts │ ├── gho-atoken.test.ts │ ├── gho-oracle.test.ts │ ├── gho-stable-debt.test.ts │ ├── gho-token-permit.test.ts │ ├── gho-token-unit.test.ts │ ├── gho-variable-debt.test.ts │ ├── helpers/ │ │ ├── constants.ts │ │ ├── helpers.ts │ │ ├── make-suite.ts │ │ ├── math/ │ │ │ ├── calculations.ts │ │ │ └── wadraymath.ts │ │ ├── tokenization-events.ts │ │ └── user-setup.ts │ ├── initial-entitiy-configuration.test.ts │ ├── initial-reserve-configuration.test.ts │ ├── stkAave-upgrade.test.ts │ └── transfer-stkAave.test.ts └── tsconfig.json