DullahanPod

MAX_BPS

uint256 MAX_BPS

Max value for BPS - 100%

MIN_MINT_AMOUNT

uint256 MIN_MINT_AMOUNT

Minimum allowed amount of GHO to mint

initialized

bool initialized

Is the Pod initialized

manager

address manager

Address of the Pod manager

vault

address vault

Address of the Vault

registry

address registry

Address of the Registry

podOwner

address podOwner

Address of the Pod owner

votingPowerDelegate

address votingPowerDelegate

Address of the delegate receiving the Pod voting power

proposalPowerDelegate

address proposalPowerDelegate

Address of the delegate receiving the Pod proposal power

collateral

address collateral

Address of the collateral in the Pod

aToken

address aToken

Address of the aToken for the collateral

aave

address aave

Address of the AAVE token

stkAave

address stkAave

Address of the stkAAVE token

PodInitialized

event PodInitialized(address podManager, address collateral, address podOwner, address vault, address registry)

Event emitted when the Pod is initialized

CollateralDeposited

event CollateralDeposited(address collateral, uint256 amount)

Event emitted when collateral is deposited

CollateralWithdrawn

event CollateralWithdrawn(address collateral, uint256 amount)

Event emitted when collateral is withdrawn

CollateralLiquidated

event CollateralLiquidated(address collateral, uint256 amount)

Event emitted when collateral is liquidated

GhoMinted

event GhoMinted(uint256 mintedAmount)

Event emitted when GHO is minted

GhoRepayed

event GhoRepayed(uint256 amountToRepay)

Event emitted when GHO is repayed

RentedStkAave

event RentedStkAave()

Event emitted when stkAAVE is rented by the Pod

UpdatedDelegate

event UpdatedDelegate(address newVotingDelegate, address newProposalDelegate)

Event emitted when the Pod delegates are updated

UpdatedRegistry

event UpdatedRegistry(address oldRegistry, address newRegistry)

Event emitted when the Pod registry is updated

onlyPodOwner

modifier onlyPodOwner()

Check that the caller is the Pod owner

onlyManager

modifier onlyManager()

Check that the caller is the manager

isInitialized

modifier isInitialized()

Check that the Pod is initialized

constructor

constructor() public

init

function init(address _manager, address _vault, address _registry, address _podOwner, address _collateral, address _aToken, address _votingPowerDelegate, address _proposalPowerDelegate) external

Initialize the Pod with the given parameters

Parameters

Name
Type
Description

_manager

address

Address of the Manager

_vault

address

Address of the Vault

_registry

address

Address of the Registry

_podOwner

address

Address of the Pod owner

_collateral

address

Address of the collateral

_aToken

address

Address of the aToken for the collateral

_votingPowerDelegate

address

Address of the delegate for the voting power

_proposalPowerDelegate

address

Address of the delegate for the proposal power

podCollateralBalance

function podCollateralBalance() external view returns (uint256)

Get the Pod's current collateral balance

Return Values

Name
Type
Description

[0]

uint256

uint256 : Current collateral balance

podDebtBalance

function podDebtBalance() public view returns (uint256)

Get the Pod's current GHO debt balance

Return Values

Name
Type
Description

[0]

uint256

uint256 : Current GHO debt balance

podOwedFees

function podOwedFees() external view returns (uint256)

Get the stored amount of fees owed by this Pod

Return Values

Name
Type
Description

[0]

uint256

uint256 : Stored amount of fees owed

depositCollateral

function depositCollateral(uint256 amount) external

Deposit collateral

Pull collateral in the Pod to deposit it in the Aave Pool

Parameters

Name
Type
Description

amount

uint256

Amount to deposit

withdrawCollateral

function withdrawCollateral(uint256 amount, address receiver) external

Withdraw collateral

Parameters

Name
Type
Description

amount

uint256

Amount to withdraw

receiver

address

Address to receive the collateral

claimAaveExtraRewards

function claimAaveExtraRewards(address receiver) external

Claim any existing rewards from the Aave Rewards Controller for this Pod

Parameters

Name
Type
Description

receiver

address

Address to receive the rewards

compoundStkAave

function compoundStkAave() external

Claim Safety Module rewards & stake them in stkAAVE

mintGho

function mintGho(uint256 amountToMint, address receiver) external returns (uint256 mintedAmount)

Mint GHO & rent stkAAVE

Rent stkAAVE from the Vault & mint GHO with the best interest rate discount possible

Parameters

Name
Type
Description

amountToMint

uint256

Amount of GHO to be minted

receiver

address

Address to receive the minted GHO

Return Values

Name
Type
Description

mintedAmount

uint256

- uint256 : amount of GHO minted after fees

repayGho

function repayGho(uint256 amountToRepay) external returns (bool)

Repay GHO fees and debt

Parameters

Name
Type
Description

amountToRepay

uint256

Amount of GHO to de repaid

Return Values

Name
Type
Description

[0]

bool

bool : Success

repayGhoAndWithdrawCollateral

function repayGhoAndWithdrawCollateral(uint256 repayAmount, uint256 withdrawAmount, address receiver) external returns (bool)

Repay GHO fees and debt & withdraw collateral

Repay GHO fees & debt to be allowed to withdraw collateral

Parameters

Name
Type
Description

repayAmount

uint256

Amount of GHO to de repaid

withdrawAmount

uint256

Amount to withdraw

receiver

address

Address to receive the collateral

Return Values

Name
Type
Description

[0]

bool

bool : Success

rentStkAave

function rentStkAave() external returns (bool)

Rent stkAAVE from the Vault to get the best interest rate reduction

Return Values

Name
Type
Description

[0]

bool

bool : Success

liquidateCollateral

function liquidateCollateral(uint256 amount, address receiver) external

Liquidate Pod collateral to repay owed fees

Liquidate Pod collateral to repay owed fees, in the case the this Pod got liquidated on Aave market, and fees are still owed to Dullahan

Parameters

Name
Type
Description

amount

uint256

Amount of collateral to liquidate

receiver

address

Address to receive the collateral

updateDelegation

function updateDelegation(address newVotingDelegate, address newProposalDelegate) external

Update the Pod's delegate address & delegate the voting power to it

Parameters

Name
Type
Description

newVotingDelegate

address

Address of the new voting power delegate

newProposalDelegate

address

Address of the new proposal power delegate

updateRegistry

function updateRegistry(address newRegistry) external

Update the Pod's Registry address

Parameters

Name
Type
Description

newRegistry

address

Address of the new Registry

_withdrawCollateral

function _withdrawCollateral(uint256 amount, address receiver) internal

Withdraw collateral from the Aave Pool directly to the given receiver (only if Pod fees are fully repaid)

Parameters

Name
Type
Description

amount

uint256

Amount to withdraw

receiver

address

Address to receive the collateral

_repayGho

function _repayGho(uint256 amountToRepay) internal returns (bool)

Repay GHO owed fees & debt (fees in priority)

Parameters

Name
Type
Description

amountToRepay

uint256

Amount of GHO to be repayed

Return Values

Name
Type
Description

[0]

bool

bool : Success

_getStkAaveRewards

function _getStkAaveRewards() internal

Claim AAVE rewards from the Safety Module & stake them to receive stkAAVE & notify the Manager

Last updated